Compare commits

..
Author SHA1 Message Date
Crowdin Bot ff98d4224e New Crowdin translations by GitHub Action 2026-10-31 16:35:24 +00:00
GitHub Actions a19804a0b7 Auto translate strings 2026-10-31 16:34:17 +00:00
Trenton Handshamoon 3289be7383 Fix: Various small bugs found during typing updates (#14593)
* Fix: match Apple Mail tag colors case-insensitively

* Fix: reject OAuth callbacks with an unrecognized scope

* Fix: refuse to refresh OAuth tokens for non-OAuth accounts or missing refresh tokens

* Fix: parse datetime strings in the format_datetime filter and reject invalid ones

* Fix: reject a PAPERLESS_URL without a hostname

* Fix: report a database error in the system status instead of failing with a 500

* Fix: surface the database error when refreshing a document before moving its files

* Fix: report no unapplied migrations when the applied migrations cannot be read

* Fix: return the parsed value directly in format_datetime for typing

* Chore: annotate the paperless_dirs fixture in the refresh failure test

* Allow null for the latest_migration system status type

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2026-10-31 09:32:58 -07:00
GitHub Actions d98918dd97 Auto translate strings 2026-10-31 06:13:00 +00:00
shamoon 34c88613f6 Fix: fix custom fields dropdown text size (#14606) 2026-10-30 23:11:45 -07:00
github-actions[bot] 13acdabb47 Changelog v3.4.1 - GHA (#14605)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2026-10-30 22:44:05 -07:00
shamoon b67cfdf3fd Bump version to 3.4.1 2026-10-30 22:20:31 -07:00
github-actions[bot]andCrowdin Bot 98d2ddd1c6 New Crowdin translations by GitHub Action (#14584)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-10-31 05:12:07 +00:00
GitHub Actions 91b35eada6 Auto translate strings 2026-10-31 04:48:33 +00:00
shamoon 11248f776d Fix: fix the id__none schema in the right place (#14604) 2026-10-30 21:47:12 -07:00
shamoon 331fa13088 Fix: drop redundant change perms checks on cards open button (#14601) 2026-10-30 16:16:48 -07:00
shamoon ebddd5687c Chore: fix a couple e2e warnings / flakiness (#14596) 2026-10-30 15:45:46 -07:00
Trenton H 2925b8de81 Chore: Skip repeating Django system checks in the Docker consumer, scheduler and worker (#14598)
The init-system-checks step already runs them once and all three services
depend on init-complete. Measured idle anon PSS saved on
Python 3.14: consumer 14 MiB, beat 26 MiB, worker 27 MiB.
2026-10-30 22:37:37 +00:00
GitHub Actions 5e397e1222 Auto translate strings 2026-10-30 22:26:54 +00:00
Trenton H 6f99ad9469 Chore: Improve idle memory via more lazy imports (#14599)
* Chore: Import dateparser lazily so processes that never parse dates skip it

* Chore: Import turbohtml lazily in the mail parser

* Chore: Import lxml lazily in the SVG validator

* Chore: Import paperless_ai.indexing lazily in document tasks

* Chore: Import paperless_ai helpers lazily in views

* Chore: Read the OCRmyPDF sRGB profile on first use instead of at import

* Chore: Import pikepdf and img2pdf lazily so startup does not load them

* Chore: Reuse the initialized Django ASGI application for HTTP routing
2026-10-30 22:25:42 +00:00
shamoon a5d3247ca7 Tweakhancement: make new pdf controls mostly hidden (#14595) 2026-10-30 10:22:50 -07:00
GitHub Actions 8a67481a9d Auto translate strings 2026-10-30 16:59:59 +00:00
shamoon 652f964f5d Tweak: move preview button in doc list (#14594) 2026-10-30 09:58:29 -07:00
167 changed files with 6287 additions and 5981 deletions

No files matched your search

@@ -10,9 +10,11 @@ if [[ -n "${PAPERLESS_CONSUMER_DISABLE}" ]]; then
else else
cd ${PAPERLESS_SRC_DIR} cd ${PAPERLESS_SRC_DIR}
# Django system checks already ran once in init-system-checks, skip repeating them
if [[ -n "${USER_IS_NON_ROOT}" ]]; then if [[ -n "${USER_IS_NON_ROOT}" ]]; then
exec python3 manage.py document_consumer exec python3 manage.py document_consumer --skip-checks
else else
exec s6-setuidgid paperless python3 manage.py document_consumer exec s6-setuidgid paperless python3 manage.py document_consumer --skip-checks
fi fi
fi fi
@@ -3,8 +3,9 @@
cd ${PAPERLESS_SRC_DIR} cd ${PAPERLESS_SRC_DIR}
# Django system checks already ran once in init-system-checks, skip repeating them
if [[ -n "${USER_IS_NON_ROOT}" ]]; then if [[ -n "${USER_IS_NON_ROOT}" ]]; then
exec /usr/local/bin/celery --app paperless beat --loglevel INFO exec /usr/local/bin/celery --skip-checks --app paperless beat --loglevel INFO
else else
exec s6-setuidgid paperless /usr/local/bin/celery --app paperless beat --loglevel INFO exec s6-setuidgid paperless /usr/local/bin/celery --skip-checks --app paperless beat --loglevel INFO
fi fi
@@ -3,8 +3,9 @@
cd ${PAPERLESS_SRC_DIR} cd ${PAPERLESS_SRC_DIR}
# Django system checks already ran once in init-system-checks, skip repeating them
if [[ -n "${USER_IS_NON_ROOT}" ]]; then if [[ -n "${USER_IS_NON_ROOT}" ]]; then
exec /usr/local/bin/celery --app paperless worker --loglevel INFO --without-mingle --without-gossip exec /usr/local/bin/celery --skip-checks --app paperless worker --loglevel INFO --without-mingle --without-gossip
else else
exec s6-setuidgid paperless /usr/local/bin/celery --app paperless worker --loglevel INFO --without-mingle --without-gossip exec s6-setuidgid paperless /usr/local/bin/celery --skip-checks --app paperless worker --loglevel INFO --without-mingle --without-gossip
fi fi
+24
View File
@@ -1,5 +1,29 @@
# Changelog # Changelog
## paperless-ngx 3.4.1
### Bug Fixes
- Fix the id\_\_ schemae in the right place [@shamoon](https://github.com/shamoon) ([#14604](https://github.com/paperless-ngx/paperless-ngx/pull/14604))
- Fix: drop redundant change perms checks on cards open button [@shamoon](https://github.com/shamoon) ([#14601](https://github.com/paperless-ngx/paperless-ngx/pull/14601))
- Tweak/fix: make new pdf controls mostly hidden [@shamoon](https://github.com/shamoon) ([#14595](https://github.com/paperless-ngx/paperless-ngx/pull/14595))
- Tweak/fix: move preview button in doc list [@shamoon](https://github.com/shamoon) ([#14594](https://github.com/paperless-ngx/paperless-ngx/pull/14594))
- Fix: checksum light mode display and cf dropdown mobile position [@shamoon](https://github.com/shamoon) ([#14590](https://github.com/paperless-ngx/paperless-ngx/pull/14590))
### All App Changes
<details>
<summary>6 changes</summary>
- Fix the id\_\_ schemae in the right place [@shamoon](https://github.com/shamoon) ([#14604](https://github.com/paperless-ngx/paperless-ngx/pull/14604))
- Fix: drop redundant change perms checks on cards open button [@shamoon](https://github.com/shamoon) ([#14601](https://github.com/paperless-ngx/paperless-ngx/pull/14601))
- Chore: Improve idle memory via more lazy imports [@stumpylog](https://github.com/stumpylog) ([#14599](https://github.com/paperless-ngx/paperless-ngx/pull/14599))
- Tweak/fix: make new pdf controls mostly hidden [@shamoon](https://github.com/shamoon) ([#14595](https://github.com/paperless-ngx/paperless-ngx/pull/14595))
- Tweak/fix: move preview button in doc list [@shamoon](https://github.com/shamoon) ([#14594](https://github.com/paperless-ngx/paperless-ngx/pull/14594))
- Fix: checksum light mode display and cf dropdown mobile position [@shamoon](https://github.com/shamoon) ([#14590](https://github.com/paperless-ngx/paperless-ngx/pull/14590))
</details>
## paperless-ngx 3.4.0 ## paperless-ngx 3.4.0
### Features / Enhancements ### Features / Enhancements
+1 -1
View File
@@ -1,6 +1,6 @@
[project] [project]
name = "paperless-ngx" name = "paperless-ngx"
version = "3.4.0" version = "3.4.1"
description = """\ description = """\
A community-supported supercharged document management system: scan, index and archive all your physical documents\ A community-supported supercharged document management system: scan, index and archive all your physical documents\
""" """
+9 -1
View File
@@ -43,6 +43,7 @@ def configure_environment(instance_root: Path) -> None:
def seed_database() -> None: def seed_database() -> None:
from django.contrib.auth.models import Permission
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.core.management import call_command from django.core.management import call_command
from django.utils import timezone from django.utils import timezone
@@ -63,11 +64,18 @@ def seed_database() -> None:
username="playwright", username="playwright",
password="playwright", # NOSONAR password="playwright", # NOSONAR
) )
User.objects.create_user( viewer = User.objects.create_user(
username="viewer", username="viewer",
password="viewer", # NOSONAR password="viewer", # NOSONAR
) )
viewer.user_permissions.add(
Permission.objects.get(
content_type__app_label="documents",
codename="view_uisettings",
),
)
inbox = Tag.objects.create(name="Inbox", is_inbox_tag=True, owner=admin) inbox = Tag.objects.create(name="Inbox", is_inbox_tag=True, owner=admin)
quick_filter = Tag.objects.create(name="Another Sample Tag", owner=admin) quick_filter = Tag.objects.create(name="Another Sample Tag", owner=admin)
Tag.objects.create(name="TagWithPartial", owner=admin) Tag.objects.create(name="TagWithPartial", owner=admin)
@@ -80,12 +80,21 @@ test('should show a list of notes', async ({ page }) => {
test('should support quick filters', async ({ page }) => { test('should support quick filters', async ({ page }) => {
await page.goto('/documents/1/details') await page.goto('/documents/1/details')
// filter button is available before tags have loaded
const selectedTags = page.locator('pngx-input-tags .ng-value pngx-tag')
await expect(selectedTags).toHaveCount(2)
await expect(
selectedTags.getByText('Another Sample Tag', { exact: true })
).toBeVisible()
await expect(selectedTags.getByText('Inbox', { exact: true })).toBeVisible()
await page await page
.getByRole('button', { name: 'Filter documents with these Tags' }) .getByRole('button', { name: 'Filter documents with these Tags' })
.click() .click()
await expect(page).toHaveURL( await expect(page).toHaveURL((url) => {
/tags__id__all=2,1&sort=created&reverse=1&page=1/ const tags = url.searchParams.get('tags__id__all')?.split(',').sort()
) return url.pathname === '/documents' && tags?.join(',') === '1,2'
})
await expect(page.locator('pngx-document-list')).toHaveText(/one document/i)
}) })
test('should finish reloading the preview after a remote document update', async ({ test('should finish reloading the preview after a remote document update', async ({
@@ -6,8 +6,15 @@ test.use({
}, },
}) })
test('should not allow user to edit settings', async ({ page }) => { test.beforeEach(async ({ page }) => {
const settingsLoaded = page.waitForResponse((response) =>
response.url().endsWith('/api/ui_settings/')
)
await page.goto('/dashboard') await page.goto('/dashboard')
expect((await settingsLoaded).status()).toBe(200)
})
test('should not allow user to edit settings', async ({ page }) => {
await expect(page.getByRole('link', { name: 'Settings' })).not.toBeAttached() await expect(page.getByRole('link', { name: 'Settings' })).not.toBeAttached()
await page.goto('/settings') await page.goto('/settings')
await expect(page.locator('body')).toHaveText( await expect(page.locator('body')).toHaveText(
@@ -16,7 +23,6 @@ test('should not allow user to edit settings', async ({ page }) => {
}) })
test('should not allow user to view documents', async ({ page }) => { test('should not allow user to view documents', async ({ page }) => {
await page.goto('/dashboard')
await expect( await expect(
page.locator('nav').getByRole('link', { name: 'Documents' }) page.locator('nav').getByRole('link', { name: 'Documents' })
).not.toBeAttached() ).not.toBeAttached()
@@ -31,7 +37,6 @@ test('should not allow user to view documents', async ({ page }) => {
}) })
test('should not allow user to view correspondents', async ({ page }) => { test('should not allow user to view correspondents', async ({ page }) => {
await page.goto('/dashboard')
await expect( await expect(
page.getByRole('link', { name: 'Attributes' }) page.getByRole('link', { name: 'Attributes' })
).not.toBeAttached() ).not.toBeAttached()
@@ -42,7 +47,6 @@ test('should not allow user to view correspondents', async ({ page }) => {
}) })
test('should not allow user to view tags', async ({ page }) => { test('should not allow user to view tags', async ({ page }) => {
await page.goto('/dashboard')
await expect( await expect(
page.getByRole('link', { name: 'Attributes' }) page.getByRole('link', { name: 'Attributes' })
).not.toBeAttached() ).not.toBeAttached()
@@ -53,7 +57,6 @@ test('should not allow user to view tags', async ({ page }) => {
}) })
test('should not allow user to view document types', async ({ page }) => { test('should not allow user to view document types', async ({ page }) => {
await page.goto('/dashboard')
await expect( await expect(
page.getByRole('link', { name: 'Attributes' }) page.getByRole('link', { name: 'Attributes' })
).not.toBeAttached() ).not.toBeAttached()
@@ -64,7 +67,6 @@ test('should not allow user to view document types', async ({ page }) => {
}) })
test('should not allow user to view storage paths', async ({ page }) => { test('should not allow user to view storage paths', async ({ page }) => {
await page.goto('/dashboard')
await expect( await expect(
page.getByRole('link', { name: 'Attributes' }) page.getByRole('link', { name: 'Attributes' })
).not.toBeAttached() ).not.toBeAttached()
@@ -75,7 +77,6 @@ test('should not allow user to view storage paths', async ({ page }) => {
}) })
test('should not allow user to view logs', async ({ page }) => { test('should not allow user to view logs', async ({ page }) => {
await page.goto('/dashboard')
await expect(page.getByRole('link', { name: 'Logs' })).not.toBeAttached() await expect(page.getByRole('link', { name: 'Logs' })).not.toBeAttached()
await page.goto('/logs') await page.goto('/logs')
await expect(page.locator('body')).toHaveText( await expect(page.locator('body')).toHaveText(
@@ -84,7 +85,6 @@ test('should not allow user to view logs', async ({ page }) => {
}) })
test('should not allow user to view tasks', async ({ page }) => { test('should not allow user to view tasks', async ({ page }) => {
await page.goto('/dashboard')
await expect(page.getByRole('link', { name: 'Tasks' })).not.toBeAttached() await expect(page.getByRole('link', { name: 'Tasks' })).not.toBeAttached()
await page.goto('/tasks') await page.goto('/tasks')
await expect(page.locator('body')).toHaveText( await expect(page.locator('body')).toHaveText(
+6 -6
View File
@@ -4389,7 +4389,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6973528734330066202" datatype="html"> <trans-unit id="6973528734330066202" datatype="html">
@@ -10334,18 +10334,18 @@
<context context-type="linenumber">294,295</context> <context context-type="linenumber">294,295</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Edit document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="2179847500064178686" datatype="html">
<source>Preview document</source> <source>Edit document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">331</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "paperless-ngx-ui", "name": "paperless-ngx-ui",
"version": "3.4.0", "version": "3.4.1",
"scripts": { "scripts": {
"preinstall": "npx only-allow pnpm", "preinstall": "npx only-allow pnpm",
"ng": "ng", "ng": "ng",
@@ -11,14 +11,12 @@
</div> </div>
@for (field of filteredFields; track field.id) { @for (field of filteredFields; track field.id) {
<button type="button" class="list-group-item list-group-item-action bg-light" (click)="addField(field)" #button> <button type="button" class="list-group-item list-group-item-action bg-light" (click)="addField(field)" #button>
<small class="d-flex">{{field.name}} <small class="ms-auto text-muted">{{getDataTypeLabel(field.data_type)}}</small></small> <div class="d-flex">{{field.name}} <small class="ms-auto text-muted">{{getDataTypeLabel(field.data_type)}}</small></div>
</button> </button>
} }
@if (!filterText?.length || filteredFields.length === 0) { @if (!filterText?.length || filteredFields.length === 0) {
<button type="button" class="list-group-item list-group-item-action bg-light" (click)="createField(filterText)" [disabled]="!canCreateFields" #button> <button type="button" class="list-group-item list-group-item-action bg-light" (click)="createField(filterText)" [disabled]="!canCreateFields" #button>
<small> <i-bs width=".9em" height=".9em" name="asterisk" class="me-1"></i-bs><ng-container i18n>Create new field</ng-container>
<i-bs width=".9em" height=".9em" name="asterisk" class="me-1"></i-bs><ng-container i18n>Create new field</ng-container>
</small>
</button> </button>
} }
</div> </div>
@@ -465,7 +465,7 @@
@switch (archiveContentRenderType) { @switch (archiveContentRenderType) {
@case (ContentRenderType.PDF) { @case (ContentRenderType.PDF) {
@if (!useNativePdfViewer) { @if (!useNativePdfViewer) {
<div class="preview-sticky pdf-viewer-container"> <div class="preview-sticky pdf-viewer-container" tabindex="-1">
<pngx-pdf-viewer <pngx-pdf-viewer
[src]="pdfSource()" [src]="pdfSource()"
[sourceRevision]="previewRevision()" [sourceRevision]="previewRevision()"
@@ -477,7 +477,7 @@
(loadError)="onError($event)" (loadError)="onError($event)"
(afterLoadComplete)="pdfPreviewLoaded($event)"> (afterLoadComplete)="pdfPreviewLoaded($event)">
</pngx-pdf-viewer> </pngx-pdf-viewer>
<div class="position-absolute bottom-0 start-50 translate-middle-x z-1 mb-3 d-flex gap-2 p-1 bg-body border rounded shadow"> <div class="preview-controls position-absolute bottom-0 start-50 translate-middle-x z-1 mb-3 d-flex gap-2 p-1 bg-body border rounded shadow">
@if (previewNumPages()) { @if (previewNumPages()) {
<div class="input-group input-group-sm w-auto flex-nowrap"> <div class="input-group input-group-sm w-auto flex-nowrap">
<input class="form-control flex-grow-0 w-auto" type="number" min="1" [max]="previewNumPages()" [ngModelOptions]="{standalone: true}" [ngModel]="previewCurrentPage()" (ngModelChange)="previewCurrentPage.set($event)" aria-label="Page" i18n-aria-label /> <input class="form-control flex-grow-0 w-auto" type="number" min="1" [max]="previewNumPages()" [ngModelOptions]="{standalone: true}" [ngModel]="previewCurrentPage()" (ngModelChange)="previewCurrentPage.set($event)" aria-label="Page" i18n-aria-label />
@@ -12,6 +12,22 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
&:focus {
outline: none;
}
.preview-controls {
opacity: 0;
pointer-events: none;
transition: opacity 0.15s ease-in-out;
}
&:hover .preview-controls,
&:focus-within .preview-controls {
opacity: 1;
pointer-events: auto;
}
} }
.btn-group .dropdown-toggle-split { .btn-group .dropdown-toggle-split {
@@ -72,7 +72,7 @@
<a class="btn btn-sm btn-outline-secondary" (click)="clickMoreLike.emit()"> <a class="btn btn-sm btn-outline-secondary" (click)="clickMoreLike.emit()">
<i-bs name="diagram-3" class="me-1"></i-bs><span class="d-none d-md-inline" i18n>More like this</span> <i-bs name="diagram-3" class="me-1"></i-bs><span class="d-none d-md-inline" i18n>More like this</span>
</a> </a>
<a routerLink="/documents/{{document().id}}" class="btn btn-sm btn-outline-secondary" *pngxIfPermissions="{ action: PermissionAction.Change, type: PermissionType.Document }"> <a routerLink="/documents/{{document().id}}" class="btn btn-sm btn-outline-secondary">
<i-bs name="file-earmark-richtext" class="me-1"></i-bs><span class="d-none d-md-inline" i18n>Open</span> <i-bs name="file-earmark-richtext" class="me-1"></i-bs><span class="d-none d-md-inline" i18n>Open</span>
</a> </a>
<pngx-preview-popup [document]="document()" #popupPreview> <pngx-preview-popup [document]="document()" #popupPreview>
@@ -10,7 +10,6 @@ import {
NgbTooltipModule, NgbTooltipModule,
} from '@ng-bootstrap/ng-bootstrap' } from '@ng-bootstrap/ng-bootstrap'
import { NgxBootstrapIconsModule, allIcons } from 'ngx-bootstrap-icons' import { NgxBootstrapIconsModule, allIcons } from 'ngx-bootstrap-icons'
import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive'
import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe' import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe'
import { DocumentTitlePipe } from 'src/app/pipes/document-title.pipe' import { DocumentTitlePipe } from 'src/app/pipes/document-title.pipe'
import { IsNumberPipe } from 'src/app/pipes/is-number.pipe' import { IsNumberPipe } from 'src/app/pipes/is-number.pipe'
@@ -52,7 +51,6 @@ describe('DocumentCardLargeComponent', () => {
DocumentCardLargeComponent, DocumentCardLargeComponent,
DocumentTitlePipe, DocumentTitlePipe,
CustomDatePipe, CustomDatePipe,
IfPermissionsDirective,
SafeUrlPipe, SafeUrlPipe,
IsNumberPipe, IsNumberPipe,
PreviewPopupComponent, PreviewPopupComponent,
@@ -20,7 +20,6 @@ import {
Document, Document,
} from 'src/app/data/document' } from 'src/app/data/document'
import { SETTINGS_KEYS } from 'src/app/data/ui-settings' import { SETTINGS_KEYS } from 'src/app/data/ui-settings'
import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive'
import { CorrespondentNamePipe } from 'src/app/pipes/correspondent-name.pipe' import { CorrespondentNamePipe } from 'src/app/pipes/correspondent-name.pipe'
import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe' import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe'
import { DocumentTitlePipe } from 'src/app/pipes/document-title.pipe' import { DocumentTitlePipe } from 'src/app/pipes/document-title.pipe'
@@ -51,7 +50,6 @@ import { LoadingComponentWithPermissions } from '../../loading-component/loading
CorrespondentNamePipe, CorrespondentNamePipe,
DocumentTypeNamePipe, DocumentTypeNamePipe,
StoragePathNamePipe, StoragePathNamePipe,
IfPermissionsDirective,
CustomDatePipe, CustomDatePipe,
RouterModule, RouterModule,
NgbTooltipModule, NgbTooltipModule,
@@ -144,7 +144,7 @@
<div class="d-flex justify-content-between align-items-center"> <div class="d-flex justify-content-between align-items-center">
<div class="btn-group w-100"> <div class="btn-group w-100">
@if (document()) { @if (document()) {
<a routerLink="/documents/{{document().id}}" class="btn btn-sm btn-outline-secondary" title="Open" i18n-title *pngxIfPermissions="{ action: PermissionAction.Change, type: PermissionType.Document }" i18n-title> <a routerLink="/documents/{{document().id}}" class="btn btn-sm btn-outline-secondary" title="Open" i18n-title>
<i-bs name="file-earmark-richtext"></i-bs> <i-bs name="file-earmark-richtext"></i-bs>
</a> </a>
<pngx-preview-popup [document]="document()" #popupPreview> <pngx-preview-popup [document]="document()" #popupPreview>
@@ -20,7 +20,6 @@ import {
Document, Document,
} from 'src/app/data/document' } from 'src/app/data/document'
import { SETTINGS_KEYS } from 'src/app/data/ui-settings' import { SETTINGS_KEYS } from 'src/app/data/ui-settings'
import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive'
import { CorrespondentNamePipe } from 'src/app/pipes/correspondent-name.pipe' import { CorrespondentNamePipe } from 'src/app/pipes/correspondent-name.pipe'
import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe' import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe'
import { DocumentTitlePipe } from 'src/app/pipes/document-title.pipe' import { DocumentTitlePipe } from 'src/app/pipes/document-title.pipe'
@@ -51,7 +50,6 @@ import { LoadingComponentWithPermissions } from '../../loading-component/loading
CorrespondentNamePipe, CorrespondentNamePipe,
DocumentTypeNamePipe, DocumentTypeNamePipe,
StoragePathNamePipe, StoragePathNamePipe,
IfPermissionsDirective,
CustomDatePipe, CustomDatePipe,
RouterModule, RouterModule,
NgbTooltipModule, NgbTooltipModule,
@@ -208,7 +208,7 @@
i18n>Correspondent</th> i18n>Correspondent</th>
} }
@if (activeDisplayFields.includes(DisplayField.TITLE)) { @if (activeDisplayFields.includes(DisplayField.TITLE)) {
<th class="cursor-pointer" <th class="cursor-pointer ps-5"
pngxSortable="title" pngxSortable="title"
title="Sort by title" i18n-title title="Sort by title" i18n-title
[currentSortField]="list.sortField" [currentSortField]="list.sortField"
@@ -322,13 +322,13 @@
</td> </td>
} }
@if (activeDisplayFields.includes(DisplayField.TITLE) || activeDisplayFields.includes(DisplayField.TAGS)) { @if (activeDisplayFields.includes(DisplayField.TITLE) || activeDisplayFields.includes(DisplayField.TAGS)) {
<td width="30%"> <td width="30%" class="position-relative" [class.ps-5]="activeDisplayFields.includes(DisplayField.TITLE)">
@if (activeDisplayFields.includes(DisplayField.TITLE)) { @if (activeDisplayFields.includes(DisplayField.TITLE)) {
<div class="d-inline-block" (mouseleave)="popupPreview.close()"> <div class="d-inline-block" (mouseleave)="popupPreview.close()">
<a routerLink="/documents/{{d.id}}" title="Edit document" i18n-title style="overflow-wrap: anywhere;">{{d.title | documentTitle}}</a> <pngx-preview-popup class="position-absolute start-0" [document]="d" linkClasses="btn btn-sm btn-link text-secondary" linkTitle="Preview document" (click)="$event.stopPropagation()" i18n-linkTitle #popupPreview>
<pngx-preview-popup [document]="d" linkClasses="btn btn-sm btn-link text-secondary" linkTitle="Preview document" (click)="$event.stopPropagation()" i18n-linkTitle #popupPreview>
<i-bs name="eye"></i-bs> <i-bs name="eye"></i-bs>
</pngx-preview-popup> </pngx-preview-popup>
<a routerLink="/documents/{{d.id}}" title="Edit document" i18n-title style="overflow-wrap: anywhere;">{{d.title | documentTitle}}</a>
</div> </div>
} }
@if (activeDisplayFields.includes(DisplayField.TAGS)) { @if (activeDisplayFields.includes(DisplayField.TAGS)) {
@@ -87,6 +87,10 @@ $paperless-card-breakpoints: (
} }
} }
.table .ps-5 {
padding-left: 2.2rem !important;
}
a { a {
cursor: pointer; cursor: pointer;
} }
+1 -1
View File
@@ -24,7 +24,7 @@ export interface SystemStatus {
status: SystemStatusItemStatus status: SystemStatusItemStatus
error?: string error?: string
migration_status: { migration_status: {
latest_migration: string latest_migration: string | null
unapplied_migrations: string[] unapplied_migrations: string[]
} }
} }
+1 -1
View File
@@ -8,7 +8,7 @@ export const environment = {
apiVersion: '10', // match src/paperless/settings.py apiVersion: '10', // match src/paperless/settings.py
appTitle: DEFAULT_APP_TITLE, appTitle: DEFAULT_APP_TITLE,
tag: 'prod', tag: 'prod',
version: '3.4.0', version: '3.4.1',
webSocketHost: window.location.host, webSocketHost: window.location.host,
webSocketProtocol: window.location.protocol == 'https:' ? 'wss:' : 'ws:', webSocketProtocol: window.location.protocol == 'https:' ? 'wss:' : 'ws:',
webSocketBaseUrl: base_url.pathname + 'ws/', webSocketBaseUrl: base_url.pathname + 'ws/',
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="needs-translation">Create new field</target> <target state="needs-translation">Create new field</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Wysig dokument</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="needs-translation">Preview document</target> <target state="needs-translation">Preview document</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Wysig dokument</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="needs-translation">Create new field</target> <target state="needs-translation">Create new field</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="needs-translation">Edit document</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="needs-translation">Preview document</target> <target state="needs-translation">Preview document</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="needs-translation">Edit document</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">إنشاء حقل جديد</target> <target state="translated">إنشاء حقل جديد</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">تعديل المستند</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="needs-translation">Preview document</target> <target state="needs-translation">Preview document</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">تعديل المستند</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="needs-translation">Create new field</target> <target state="needs-translation">Create new field</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Рэдагаваць дакумент</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="needs-translation">Preview document</target> <target state="needs-translation">Preview document</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Рэдагаваць дакумент</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Създайте ново поле</target> <target state="translated">Създайте ново поле</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="translated">Сортирай по: <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="translated">Сортирай по: <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Редактиране на документа</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Визуализация на документа</target> <target state="translated">Визуализация на документа</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Редактиране на документа</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Crea un nou camp</target> <target state="translated">Crea un nou camp</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="translated">Ordena per <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="translated">Ordena per <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Edita document</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Previsualitza document</target> <target state="translated">Previsualitza document</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Edita document</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Vytvořit nové pole</target> <target state="translated">Vytvořit nové pole</target>
</trans-unit> </trans-unit>
@@ -11396,22 +11396,22 @@
</context-group> </context-group>
<target state="translated">Seřadit podle <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="translated">Seřadit podle <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Upravit dokument</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Náhled dokumentu</target> <target state="translated">Náhled dokumentu</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Upravit dokument</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="needs-translation">Create new field</target> <target state="needs-translation">Create new field</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="needs-translation">Edit document</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="needs-translation">Preview document</target> <target state="needs-translation">Preview document</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="needs-translation">Edit document</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Neues Feld erstellen</target> <target state="translated">Neues Feld erstellen</target>
</trans-unit> </trans-unit>
@@ -11396,22 +11396,22 @@
</context-group> </context-group>
<target state="translated">Nach <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/> sortieren</target> <target state="translated">Nach <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/> sortieren</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Dokument bearbeiten</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Dokumentenvorschau</target> <target state="translated">Dokumentenvorschau</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Dokument bearbeiten</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+26 -26
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="final">Neues Feld erstellen</target> <target state="final">Neues Feld erstellen</target>
</trans-unit> </trans-unit>
@@ -4795,7 +4795,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">38</context> <context context-type="linenumber">38</context>
</context-group> </context-group>
<target state="needs-translation">Date mode</target> <target state="translated">Datumsmodus</target>
</trans-unit> </trans-unit>
<trans-unit id="7572800523712857519" datatype="html"> <trans-unit id="7572800523712857519" datatype="html">
<source>Fixed date</source> <source>Fixed date</source>
@@ -4807,7 +4807,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">40</context>
</context-group> </context-group>
<target state="needs-translation">Fixed date</target> <target state="translated">Festes Datum</target>
</trans-unit> </trans-unit>
<trans-unit id="4108478337308251505" datatype="html"> <trans-unit id="4108478337308251505" datatype="html">
<source>Fixed</source> <source>Fixed</source>
@@ -4815,7 +4815,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">41,42</context> <context context-type="linenumber">41,42</context>
</context-group> </context-group>
<target state="needs-translation">Fixed</target> <target state="translated">Fixiert</target>
</trans-unit> </trans-unit>
<trans-unit id="8283919074858117329" datatype="html"> <trans-unit id="8283919074858117329" datatype="html">
<source>Relative date</source> <source>Relative date</source>
@@ -4827,7 +4827,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">44</context> <context context-type="linenumber">44</context>
</context-group> </context-group>
<target state="needs-translation">Relative date</target> <target state="translated">Relatives Datum</target>
</trans-unit> </trans-unit>
<trans-unit id="2731996625798485199" datatype="html"> <trans-unit id="2731996625798485199" datatype="html">
<source>Relative</source> <source>Relative</source>
@@ -4835,7 +4835,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">45,46</context> <context context-type="linenumber">45,46</context>
</context-group> </context-group>
<target state="needs-translation">Relative</target> <target state="translated">Relativ</target>
</trans-unit> </trans-unit>
<trans-unit id="6533918067030990396" datatype="html"> <trans-unit id="6533918067030990396" datatype="html">
<source>Amount</source> <source>Amount</source>
@@ -4843,7 +4843,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">51</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<target state="needs-translation">Amount</target> <target state="translated">Anzahl</target>
</trans-unit> </trans-unit>
<trans-unit id="8932917860978648376" datatype="html"> <trans-unit id="8932917860978648376" datatype="html">
<source>Unit</source> <source>Unit</source>
@@ -4851,7 +4851,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">56,57</context> <context context-type="linenumber">56,57</context>
</context-group> </context-group>
<target state="needs-translation">Unit</target> <target state="translated">Einheit</target>
</trans-unit> </trans-unit>
<trans-unit id="9138811584797805840" datatype="html"> <trans-unit id="9138811584797805840" datatype="html">
<source>Open date picker</source> <source>Open date picker</source>
@@ -4991,7 +4991,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">119,120</context> <context context-type="linenumber">119,120</context>
</context-group> </context-group>
<target state="needs-translation">Operator</target> <target state="translated">Operator</target>
</trans-unit> </trans-unit>
<trans-unit id="2328549728463836983" datatype="html"> <trans-unit id="2328549728463836983" datatype="html">
<source>Remove query</source> <source>Remove query</source>
@@ -5051,7 +5051,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context>
<context context-type="linenumber">330</context> <context context-type="linenumber">330</context>
</context-group> </context-group>
<target state="needs-translation">days ago</target> <target state="translated">vor Tagen</target>
</trans-unit> </trans-unit>
<trans-unit id="2871318661796659216" datatype="html"> <trans-unit id="2871318661796659216" datatype="html">
<source>weeks ago</source> <source>weeks ago</source>
@@ -5059,7 +5059,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context>
<context context-type="linenumber">331</context> <context context-type="linenumber">331</context>
</context-group> </context-group>
<target state="needs-translation">weeks ago</target> <target state="translated">vor Wochen</target>
</trans-unit> </trans-unit>
<trans-unit id="6041340836190906216" datatype="html"> <trans-unit id="6041340836190906216" datatype="html">
<source>months ago</source> <source>months ago</source>
@@ -5067,7 +5067,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context>
<context context-type="linenumber">332</context> <context context-type="linenumber">332</context>
</context-group> </context-group>
<target state="needs-translation">months ago</target> <target state="translated">vor Monaten</target>
</trans-unit> </trans-unit>
<trans-unit id="963494111451627204" datatype="html"> <trans-unit id="963494111451627204" datatype="html">
<source>years ago</source> <source>years ago</source>
@@ -5075,7 +5075,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context>
<context context-type="linenumber">333</context> <context context-type="linenumber">333</context>
</context-group> </context-group>
<target state="needs-translation">years ago</target> <target state="translated">vor Jahren</target>
</trans-unit> </trans-unit>
<trans-unit id="5555905617885007774" datatype="html"> <trans-unit id="5555905617885007774" datatype="html">
<source>days from now</source> <source>days from now</source>
@@ -5083,7 +5083,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context>
<context context-type="linenumber">334</context> <context context-type="linenumber">334</context>
</context-group> </context-group>
<target state="needs-translation">days from now</target> <target state="translated">Tage von heute an</target>
</trans-unit> </trans-unit>
<trans-unit id="4298377021616940216" datatype="html"> <trans-unit id="4298377021616940216" datatype="html">
<source>weeks from now</source> <source>weeks from now</source>
@@ -5091,7 +5091,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context>
<context context-type="linenumber">335</context> <context context-type="linenumber">335</context>
</context-group> </context-group>
<target state="needs-translation">weeks from now</target> <target state="translated">Wochen von heute an</target>
</trans-unit> </trans-unit>
<trans-unit id="2772874767134148305" datatype="html"> <trans-unit id="2772874767134148305" datatype="html">
<source>months from now</source> <source>months from now</source>
@@ -5099,7 +5099,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context>
<context context-type="linenumber">336</context> <context context-type="linenumber">336</context>
</context-group> </context-group>
<target state="needs-translation">months from now</target> <target state="translated">Monate von heute an</target>
</trans-unit> </trans-unit>
<trans-unit id="6363533917780225967" datatype="html"> <trans-unit id="6363533917780225967" datatype="html">
<source>years from now</source> <source>years from now</source>
@@ -5107,7 +5107,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context>
<context context-type="linenumber">337</context> <context context-type="linenumber">337</context>
</context-group> </context-group>
<target state="needs-translation">years from now</target> <target state="translated">Jahr von heute an</target>
</trans-unit> </trans-unit>
<trans-unit id="6630533861307510614" datatype="html"> <trans-unit id="6630533861307510614" datatype="html">
<source>Clear created relative date</source> <source>Clear created relative date</source>
@@ -11396,22 +11396,22 @@
</context-group> </context-group>
<target state="final">Nach <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/> sortieren</target> <target state="final">Nach <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/> sortieren</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html" approved="yes">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="final">Dokument bearbeiten</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html" approved="yes"> <trans-unit id="3420321797707163677" datatype="html" approved="yes">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="final">Dokumentenvorschau</target> <target state="final">Dokumentenvorschau</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html" approved="yes">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="final">Dokument bearbeiten</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html" approved="yes"> <trans-unit id="4512084577073831437" datatype="html" approved="yes">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="needs-translation">Create new field</target> <target state="needs-translation">Create new field</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Επεξεργασία εγγράφου</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="needs-translation">Preview document</target> <target state="needs-translation">Preview document</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Επεξεργασία εγγράφου</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Crear nuevos campos</target> <target state="translated">Crear nuevos campos</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="translated">Ordenar por <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="translated">Ordenar por <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Editar documento</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Previsualizar documento</target> <target state="translated">Previsualizar documento</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Editar documento</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="needs-translation">Create new field</target> <target state="needs-translation">Create new field</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="needs-translation">Edit document</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="needs-translation">Preview document</target> <target state="needs-translation">Preview document</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="needs-translation">Edit document</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">زمینه جدید ایجاد کنید</target> <target state="translated">زمینه جدید ایجاد کنید</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">سند ویرایش</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">سند پیش نمایش</target> <target state="translated">سند پیش نمایش</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">سند ویرایش</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Luo uusi kenttä</target> <target state="translated">Luo uusi kenttä</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Muokkaa asiakirjaa</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Esikatsele asiakirja</target> <target state="translated">Esikatsele asiakirja</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Muokkaa asiakirjaa</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+14 -14
View File
@@ -3719,7 +3719,7 @@
<context context-type="sourcefile">src/app/components/admin/users-groups/users-groups.component.ts</context> <context context-type="sourcefile">src/app/components/admin/users-groups/users-groups.component.ts</context>
<context context-type="linenumber">163</context> <context context-type="linenumber">163</context>
</context-group> </context-group>
<target state="translated">Erreur lors de la supression de l’utilisateur « <x id="PH" equiv-text="user.username"/> ».</target> <target state="translated">Erreur lors de la suppression de l’utilisateur « <x id="PH" equiv-text="user.username"/> ».</target>
</trans-unit> </trans-unit>
<trans-unit id="5766640174051730159" datatype="html" approved="yes"> <trans-unit id="5766640174051730159" datatype="html" approved="yes">
<source>Saved group &quot;<x id="PH" equiv-text="newGroup.name"/>&quot;.</source> <source>Saved group &quot;<x id="PH" equiv-text="newGroup.name"/>&quot;.</source>
@@ -3767,7 +3767,7 @@
<context context-type="sourcefile">src/app/components/admin/users-groups/users-groups.component.ts</context> <context context-type="sourcefile">src/app/components/admin/users-groups/users-groups.component.ts</context>
<context context-type="linenumber">220</context> <context context-type="linenumber">220</context>
</context-group> </context-group>
<target state="translated">Erreur lors de la supression du groupe « <x id="PH" equiv-text="group.name"/> ».</target> <target state="translated">Erreur lors de la suppression du groupe « <x id="PH" equiv-text="group.name"/> ».</target>
</trans-unit> </trans-unit>
<trans-unit id="7931334600001636863" datatype="html" approved="yes"> <trans-unit id="7931334600001636863" datatype="html" approved="yes">
<source>by Paperless-ngx</source> <source>by Paperless-ngx</source>
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="final">Créer un nouveau champ</target> <target state="final">Créer un nouveau champ</target>
</trans-unit> </trans-unit>
@@ -6935,7 +6935,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context> <context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">410</context> <context context-type="linenumber">410</context>
</context-group> </context-group>
<target state="translated">Destinatires du courriel</target> <target state="translated">Destinataires du courriel</target>
</trans-unit> </trans-unit>
<trans-unit id="7916910101279824329" datatype="html"> <trans-unit id="7916910101279824329" datatype="html">
<source>Attach document</source> <source>Attach document</source>
@@ -10930,7 +10930,7 @@
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">8,9</context> <context context-type="linenumber">8,9</context>
</context-group> </context-group>
<target state="translated"><x id="INTERPOLATION" equiv-text="{{ document().title | documentTitle }}"/> mignature</target> <target state="translated"><x id="INTERPOLATION" equiv-text="{{ document().title | documentTitle }}"/> miniature</target>
</trans-unit> </trans-unit>
<trans-unit id="2784168796433474565" datatype="html" approved="yes"> <trans-unit id="2784168796433474565" datatype="html" approved="yes">
<source>Filter by tag</source> <source>Filter by tag</source>
@@ -11396,22 +11396,22 @@
</context-group> </context-group>
<target state="translated">Trier par <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="translated">Trier par <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html" approved="yes">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="final">Modifier le document</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Prévisualiser le document</target> <target state="translated">Prévisualiser le document</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html" approved="yes">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="final">Modifier le document</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">צור שדה חדש</target> <target state="translated">צור שדה חדש</target>
</trans-unit> </trans-unit>
@@ -11396,22 +11396,22 @@
</context-group> </context-group>
<target state="translated">מיון לפי <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="translated">מיון לפי <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">עריכת מסמך</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">תצוגה מקדימה של המסמך</target> <target state="translated">תצוגה מקדימה של המסמך</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">עריכת מסמך</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="needs-translation">Create new field</target> <target state="needs-translation">Create new field</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="needs-translation">Edit document</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="needs-translation">Preview document</target> <target state="needs-translation">Preview document</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="needs-translation">Edit document</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Stvori novo polje</target> <target state="translated">Stvori novo polje</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="translated">Sortiraj po <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="translated">Sortiraj po <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Uredi dokument</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Pregledaj dokument</target> <target state="translated">Pregledaj dokument</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Uredi dokument</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Új mező létrehozása</target> <target state="translated">Új mező létrehozása</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="translated">Rendezés <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/> szerint</target> <target state="translated">Rendezés <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/> szerint</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Dokumentum szerkesztése</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Dokumentum előnézete</target> <target state="translated">Dokumentum előnézete</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Dokumentum szerkesztése</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Buat kolom baru</target> <target state="translated">Buat kolom baru</target>
</trans-unit> </trans-unit>
@@ -11396,22 +11396,22 @@
</context-group> </context-group>
<target state="translated">Urutkan berdasarkan <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="translated">Urutkan berdasarkan <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Edit dokumen</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Pratinjau dokumen</target> <target state="translated">Pratinjau dokumen</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Edit dokumen</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+27 -27
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Crea nuovo campo</target> <target state="translated">Crea nuovo campo</target>
</trans-unit> </trans-unit>
@@ -4795,7 +4795,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">38</context> <context context-type="linenumber">38</context>
</context-group> </context-group>
<target state="needs-translation">Date mode</target> <target state="translated">Modalità data</target>
</trans-unit> </trans-unit>
<trans-unit id="7572800523712857519" datatype="html"> <trans-unit id="7572800523712857519" datatype="html">
<source>Fixed date</source> <source>Fixed date</source>
@@ -4807,7 +4807,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">40</context>
</context-group> </context-group>
<target state="needs-translation">Fixed date</target> <target state="translated">Data fissa</target>
</trans-unit> </trans-unit>
<trans-unit id="4108478337308251505" datatype="html"> <trans-unit id="4108478337308251505" datatype="html">
<source>Fixed</source> <source>Fixed</source>
@@ -4815,7 +4815,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">41,42</context> <context context-type="linenumber">41,42</context>
</context-group> </context-group>
<target state="needs-translation">Fixed</target> <target state="translated">Fissa</target>
</trans-unit> </trans-unit>
<trans-unit id="8283919074858117329" datatype="html"> <trans-unit id="8283919074858117329" datatype="html">
<source>Relative date</source> <source>Relative date</source>
@@ -4827,7 +4827,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">44</context> <context context-type="linenumber">44</context>
</context-group> </context-group>
<target state="needs-translation">Relative date</target> <target state="translated">Data relativa</target>
</trans-unit> </trans-unit>
<trans-unit id="2731996625798485199" datatype="html"> <trans-unit id="2731996625798485199" datatype="html">
<source>Relative</source> <source>Relative</source>
@@ -4835,7 +4835,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">45,46</context> <context context-type="linenumber">45,46</context>
</context-group> </context-group>
<target state="needs-translation">Relative</target> <target state="translated">Relativa</target>
</trans-unit> </trans-unit>
<trans-unit id="6533918067030990396" datatype="html"> <trans-unit id="6533918067030990396" datatype="html">
<source>Amount</source> <source>Amount</source>
@@ -4843,7 +4843,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">51</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<target state="needs-translation">Amount</target> <target state="translated">Quantità</target>
</trans-unit> </trans-unit>
<trans-unit id="8932917860978648376" datatype="html"> <trans-unit id="8932917860978648376" datatype="html">
<source>Unit</source> <source>Unit</source>
@@ -4851,7 +4851,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">56,57</context> <context context-type="linenumber">56,57</context>
</context-group> </context-group>
<target state="needs-translation">Unit</target> <target state="translated">Unità</target>
</trans-unit> </trans-unit>
<trans-unit id="9138811584797805840" datatype="html"> <trans-unit id="9138811584797805840" datatype="html">
<source>Open date picker</source> <source>Open date picker</source>
@@ -4991,7 +4991,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">119,120</context> <context context-type="linenumber">119,120</context>
</context-group> </context-group>
<target state="needs-translation">Operator</target> <target state="translated">Operatore</target>
</trans-unit> </trans-unit>
<trans-unit id="2328549728463836983" datatype="html"> <trans-unit id="2328549728463836983" datatype="html">
<source>Remove query</source> <source>Remove query</source>
@@ -5051,7 +5051,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context>
<context context-type="linenumber">330</context> <context context-type="linenumber">330</context>
</context-group> </context-group>
<target state="needs-translation">days ago</target> <target state="translated">giorni fa</target>
</trans-unit> </trans-unit>
<trans-unit id="2871318661796659216" datatype="html"> <trans-unit id="2871318661796659216" datatype="html">
<source>weeks ago</source> <source>weeks ago</source>
@@ -5059,7 +5059,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context>
<context context-type="linenumber">331</context> <context context-type="linenumber">331</context>
</context-group> </context-group>
<target state="needs-translation">weeks ago</target> <target state="translated">settimane fa</target>
</trans-unit> </trans-unit>
<trans-unit id="6041340836190906216" datatype="html"> <trans-unit id="6041340836190906216" datatype="html">
<source>months ago</source> <source>months ago</source>
@@ -5067,7 +5067,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context>
<context context-type="linenumber">332</context> <context context-type="linenumber">332</context>
</context-group> </context-group>
<target state="needs-translation">months ago</target> <target state="translated">mesi fa</target>
</trans-unit> </trans-unit>
<trans-unit id="963494111451627204" datatype="html"> <trans-unit id="963494111451627204" datatype="html">
<source>years ago</source> <source>years ago</source>
@@ -5075,7 +5075,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context>
<context context-type="linenumber">333</context> <context context-type="linenumber">333</context>
</context-group> </context-group>
<target state="needs-translation">years ago</target> <target state="translated">anni fa</target>
</trans-unit> </trans-unit>
<trans-unit id="5555905617885007774" datatype="html"> <trans-unit id="5555905617885007774" datatype="html">
<source>days from now</source> <source>days from now</source>
@@ -5083,7 +5083,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context>
<context context-type="linenumber">334</context> <context context-type="linenumber">334</context>
</context-group> </context-group>
<target state="needs-translation">days from now</target> <target state="translated">giorni da ora</target>
</trans-unit> </trans-unit>
<trans-unit id="4298377021616940216" datatype="html"> <trans-unit id="4298377021616940216" datatype="html">
<source>weeks from now</source> <source>weeks from now</source>
@@ -5091,7 +5091,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context>
<context context-type="linenumber">335</context> <context context-type="linenumber">335</context>
</context-group> </context-group>
<target state="needs-translation">weeks from now</target> <target state="translated">settimane da ora</target>
</trans-unit> </trans-unit>
<trans-unit id="2772874767134148305" datatype="html"> <trans-unit id="2772874767134148305" datatype="html">
<source>months from now</source> <source>months from now</source>
@@ -5099,7 +5099,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context>
<context context-type="linenumber">336</context> <context context-type="linenumber">336</context>
</context-group> </context-group>
<target state="needs-translation">months from now</target> <target state="translated">mesi da ora</target>
</trans-unit> </trans-unit>
<trans-unit id="6363533917780225967" datatype="html"> <trans-unit id="6363533917780225967" datatype="html">
<source>years from now</source> <source>years from now</source>
@@ -5107,7 +5107,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context> <context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts</context>
<context context-type="linenumber">337</context> <context context-type="linenumber">337</context>
</context-group> </context-group>
<target state="needs-translation">years from now</target> <target state="translated">anni da ora</target>
</trans-unit> </trans-unit>
<trans-unit id="6630533861307510614" datatype="html"> <trans-unit id="6630533861307510614" datatype="html">
<source>Clear created relative date</source> <source>Clear created relative date</source>
@@ -9154,7 +9154,7 @@
<context context-type="sourcefile">src/app/components/common/upload-status-tray/upload-status-tray.component.html</context> <context context-type="sourcefile">src/app/components/common/upload-status-tray/upload-status-tray.component.html</context>
<context context-type="linenumber">16</context> <context context-type="linenumber">16</context>
</context-group> </context-group>
<target state="needs-translation">Toggle document processing status</target> <target state="translated">Attiva/Disattiva stato elaborazione documenti</target>
</trans-unit> </trans-unit>
<trans-unit id="6443586946875325554" datatype="html" approved="yes"> <trans-unit id="6443586946875325554" datatype="html" approved="yes">
<source>Processing: <x id="PH" equiv-text="countUploadingAndProcessing"/></source> <source>Processing: <x id="PH" equiv-text="countUploadingAndProcessing"/></source>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="translated">Ordina per <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="translated">Ordina per <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Modifica documento</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Anteprima documento</target> <target state="translated">Anteprima documento</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Modifica documento</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">新規フィールドを作成</target> <target state="translated">新規フィールドを作成</target>
</trans-unit> </trans-unit>
@@ -11396,22 +11396,22 @@
</context-group> </context-group>
<target state="translated"><x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/> でソート</target> <target state="translated"><x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/> でソート</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">ドキュメントを編集</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">ドキュメントのプレビュー</target> <target state="translated">ドキュメントのプレビュー</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">ドキュメントを編集</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">새 필드 만들기</target> <target state="translated">새 필드 만들기</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">문서 수정</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">문서 미리보기</target> <target state="translated">문서 미리보기</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">문서 수정</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="needs-translation">Create new field</target> <target state="needs-translation">Create new field</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Dokument editéieren</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="needs-translation">Preview document</target> <target state="needs-translation">Preview document</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Dokument editéieren</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="needs-translation">Create new field</target> <target state="needs-translation">Create new field</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="needs-translation">Edit document</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="needs-translation">Preview document</target> <target state="needs-translation">Preview document</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="needs-translation">Edit document</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="needs-translation">Create new field</target> <target state="needs-translation">Create new field</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Rediģēt dokumentu</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="needs-translation">Preview document</target> <target state="needs-translation">Preview document</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Rediģēt dokumentu</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
File diff suppressed because it is too large. Load diff
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="needs-translation">Create new field</target> <target state="needs-translation">Create new field</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="needs-translation">Edit document</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="needs-translation">Preview document</target> <target state="needs-translation">Preview document</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="needs-translation">Edit document</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Maak nieuw veld</target> <target state="translated">Maak nieuw veld</target>
</trans-unit> </trans-unit>
@@ -11396,22 +11396,22 @@
</context-group> </context-group>
<target state="translated">Sorteer op <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="translated">Sorteer op <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Document bewerken</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Voorbeeld van document</target> <target state="translated">Voorbeeld van document</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Document bewerken</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Opprett nytt felt</target> <target state="translated">Opprett nytt felt</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="translated">Sorter etter <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="translated">Sorter etter <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Rediger dokument</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Forhåndsvis dokument</target> <target state="translated">Forhåndsvis dokument</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Rediger dokument</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Utwórz nowe pole</target> <target state="translated">Utwórz nowe pole</target>
</trans-unit> </trans-unit>
@@ -11396,22 +11396,22 @@
</context-group> </context-group>
<target state="translated">Sortuj według <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="translated">Sortuj według <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Edytuj dokument</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Podgląd dokumentu</target> <target state="translated">Podgląd dokumentu</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Edytuj dokument</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Criar novo campo</target> <target state="translated">Criar novo campo</target>
</trans-unit> </trans-unit>
@@ -11398,22 +11398,22 @@ Erro ao enviar documentos por e-mail</target>
</context-group> </context-group>
<target state="translated">Ordenar por <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="translated">Ordenar por <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Editar documento</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Prévisualizar documento</target> <target state="translated">Prévisualizar documento</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Editar documento</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+78 -78
View File
@@ -2007,7 +2007,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
<context context-type="linenumber">78,79</context> <context context-type="linenumber">78,79</context>
</context-group> </context-group>
<target state="needs-translation">Share Links</target> <target state="translated">Partilhar Links</target>
</trans-unit> </trans-unit>
<trans-unit id="2889601918256567804" datatype="html"> <trans-unit id="2889601918256567804" datatype="html">
<source>Workflows</source> <source>Workflows</source>
@@ -2815,7 +2815,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts</context> <context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">82</context>
</context-group> </context-group>
<target state="needs-translation">Mail Fetch</target> <target state="translated">Obter e-mail</target>
</trans-unit> </trans-unit>
<trans-unit id="228975554646076615" datatype="html"> <trans-unit id="228975554646076615" datatype="html">
<source>LLM Index</source> <source>LLM Index</source>
@@ -2915,7 +2915,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts</context> <context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts</context>
<context context-type="linenumber">78</context> <context context-type="linenumber">78</context>
</context-group> </context-group>
<target state="needs-translation">API Upload</target> <target state="translated">Carregar via API</target>
</trans-unit> </trans-unit>
<trans-unit id="6520092939021340973" datatype="html"> <trans-unit id="6520092939021340973" datatype="html">
<source>Folder Consume</source> <source>Folder Consume</source>
@@ -3967,7 +3967,7 @@
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.ts</context> <context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.ts</context>
<context context-type="linenumber">125</context> <context context-type="linenumber">125</context>
</context-group> </context-group>
<target state="needs-translation">Custom fields</target> <target state="translated">Campos personalizados</target>
</trans-unit> </trans-unit>
<trans-unit id="434416984861296627" datatype="html"> <trans-unit id="434416984861296627" datatype="html">
<source>Share links</source> <source>Share links</source>
@@ -4083,7 +4083,7 @@
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.ts</context> <context context-type="sourcefile">src/app/components/app-frame/app-frame.component.ts</context>
<context context-type="linenumber">521</context> <context context-type="linenumber">521</context>
</context-group> </context-group>
<target state="needs-translation">An error occurred while saving update checking settings.</target> <target state="translated">Ocorreu um erro ao guardar as definições de verificação de atualizações.</target>
</trans-unit> </trans-unit>
<trans-unit id="4580988005648117665" datatype="html"> <trans-unit id="4580988005648117665" datatype="html">
<source>Search</source> <source>Search</source>
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="needs-translation">Create new field</target> <target state="needs-translation">Create new field</target>
</trans-unit> </trans-unit>
@@ -4775,7 +4775,7 @@
<context context-type="sourcefile">src/app/components/manage/document-attributes/custom-fields/custom-fields.component.ts</context> <context context-type="sourcefile">src/app/components/manage/document-attributes/custom-fields/custom-fields.component.ts</context>
<context context-type="linenumber">86</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
<target state="needs-translation">Saved field "<x id="PH" equiv-text="newField.name"/>".</target> <target state="translated">Campo guardado "<x id="PH" equiv-text="newField.name"/>".</target>
</trans-unit> </trans-unit>
<trans-unit id="1841172489943868696" datatype="html"> <trans-unit id="1841172489943868696" datatype="html">
<source>Error saving field.</source> <source>Error saving field.</source>
@@ -4787,7 +4787,7 @@
<context context-type="sourcefile">src/app/components/manage/document-attributes/custom-fields/custom-fields.component.ts</context> <context context-type="sourcefile">src/app/components/manage/document-attributes/custom-fields/custom-fields.component.ts</context>
<context context-type="linenumber">96</context> <context context-type="linenumber">96</context>
</context-group> </context-group>
<target state="needs-translation">Error saving field.</target> <target state="translated">Erro ao guardar o campo.</target>
</trans-unit> </trans-unit>
<trans-unit id="3625677668275605418" datatype="html"> <trans-unit id="3625677668275605418" datatype="html">
<source>Date mode</source> <source>Date mode</source>
@@ -5443,7 +5443,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html</context> <context context-type="sourcefile">src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html</context>
<context context-type="linenumber">14,15</context> <context context-type="linenumber">14,15</context>
</context-group> </context-group>
<target state="needs-translation">Data type cannot be changed after a field is created</target> <target state="translated">O tipo de dados não pode ser alterado após a criação de um campo.</target>
</trans-unit> </trans-unit>
<trans-unit id="4910631867841099191" datatype="html"> <trans-unit id="4910631867841099191" datatype="html">
<source>Add option</source> <source>Add option</source>
@@ -5483,7 +5483,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.ts</context> <context context-type="sourcefile">src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.ts</context>
<context context-type="linenumber">118</context> <context context-type="linenumber">118</context>
</context-group> </context-group>
<target state="needs-translation">Create new custom field</target> <target state="translated">Criar novo campo personalizado</target>
</trans-unit> </trans-unit>
<trans-unit id="8751213029607178010" datatype="html"> <trans-unit id="8751213029607178010" datatype="html">
<source>Edit custom field</source> <source>Edit custom field</source>
@@ -5491,7 +5491,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.ts</context> <context context-type="sourcefile">src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.ts</context>
<context context-type="linenumber">122</context> <context context-type="linenumber">122</context>
</context-group> </context-group>
<target state="needs-translation">Edit custom field</target> <target state="translated">Editar campo personalizado</target>
</trans-unit> </trans-unit>
<trans-unit id="6672809941092516947" datatype="html" approved="yes"> <trans-unit id="6672809941092516947" datatype="html" approved="yes">
<source>Create new document type</source> <source>Create new document type</source>
@@ -6099,7 +6099,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts</context> <context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts</context>
<context context-type="linenumber">120</context> <context context-type="linenumber">120</context>
</context-group> </context-group>
<target state="needs-translation">Do not assign title from this rule</target> <target state="translated">Não atribua o título a partir desta regra</target>
</trans-unit> </trans-unit>
<trans-unit id="1568902914205618549" datatype="html"> <trans-unit id="1568902914205618549" datatype="html">
<source>Do not assign a correspondent</source> <source>Do not assign a correspondent</source>
@@ -6143,7 +6143,7 @@
<context context-type="sourcefile">src/app/components/manage/mail/mail.component.ts</context> <context context-type="sourcefile">src/app/components/manage/mail/mail.component.ts</context>
<context context-type="linenumber">110</context> <context context-type="linenumber">110</context>
</context-group> </context-group>
<target state="needs-translation">Error retrieving mail accounts</target> <target state="translated">Erro ao recuperar contas de e-mail</target>
</trans-unit> </trans-unit>
<trans-unit id="8904588217825479681" datatype="html"> <trans-unit id="8904588217825479681" datatype="html">
<source>Error retrieving correspondents</source> <source>Error retrieving correspondents</source>
@@ -6491,7 +6491,7 @@
<context context-type="sourcefile">src/app/components/manage/workflows/workflows.component.html</context> <context context-type="sourcefile">src/app/components/manage/workflows/workflows.component.html</context>
<context context-type="linenumber">18,19</context> <context context-type="linenumber">18,19</context>
</context-group> </context-group>
<target state="needs-translation">Sort order</target> <target state="translated">Ordem de ordenação</target>
</trans-unit> </trans-unit>
<trans-unit id="1586840222182376783" datatype="html"> <trans-unit id="1586840222182376783" datatype="html">
<source>Triggers</source> <source>Triggers</source>
@@ -6639,7 +6639,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context> <context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">161</context> <context context-type="linenumber">161</context>
</context-group> </context-group>
<target state="needs-translation">Filter filename</target> <target state="translated">Filtrar nome do ficheiro</target>
</trans-unit> </trans-unit>
<trans-unit id="3694878959415278689" datatype="html"> <trans-unit id="3694878959415278689" datatype="html">
<source>Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive.</source> <source>Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive.</source>
@@ -6647,7 +6647,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context> <context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">161</context> <context context-type="linenumber">161</context>
</context-group> </context-group>
<target state="needs-translation">Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive.</target> <target state="translated">Aplicar a documentos que correspondam a este nome do ficheiro. São permitidos asteriscos como *.pdf ou *invoice*. Sem distinção de maiúsculas e minúsculas.</target>
</trans-unit> </trans-unit>
<trans-unit id="1473412958770421458" datatype="html"> <trans-unit id="1473412958770421458" datatype="html">
<source>Filter sources</source> <source>Filter sources</source>
@@ -6655,7 +6655,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context> <context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">163</context> <context context-type="linenumber">163</context>
</context-group> </context-group>
<target state="needs-translation">Filter sources</target> <target state="translated">Filtrar fontes</target>
</trans-unit> </trans-unit>
<trans-unit id="6540860478788535250" datatype="html"> <trans-unit id="6540860478788535250" datatype="html">
<source>Filter path</source> <source>Filter path</source>
@@ -6663,7 +6663,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context> <context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">164</context> <context context-type="linenumber">164</context>
</context-group> </context-group>
<target state="needs-translation">Filter path</target> <target state="translated">Filtrar caminho</target>
</trans-unit> </trans-unit>
<trans-unit id="4941865803454225171" datatype="html"> <trans-unit id="4941865803454225171" datatype="html">
<source>Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</source> <source>Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</source>
@@ -6687,7 +6687,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context> <context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">165</context> <context context-type="linenumber">165</context>
</context-group> </context-group>
<target state="needs-translation">Apply to documents consumed via this mail rule.</target> <target state="translated">Aplicar aos documentos consumidos através desta regra de e-mail.</target>
</trans-unit> </trans-unit>
<trans-unit id="6840369584127435743" datatype="html"> <trans-unit id="6840369584127435743" datatype="html">
<source>Content matching algorithm</source> <source>Content matching algorithm</source>
@@ -6775,7 +6775,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context> <context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">268</context> <context context-type="linenumber">268</context>
</context-group> </context-group>
<target state="needs-translation">Assign storage path</target> <target state="translated">Atribuir caminho de armazenamento</target>
</trans-unit> </trans-unit>
<trans-unit id="475685412372379925" datatype="html"> <trans-unit id="475685412372379925" datatype="html">
<source>Assign custom fields</source> <source>Assign custom fields</source>
@@ -6799,7 +6799,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context> <context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">275,276</context> <context context-type="linenumber">275,276</context>
</context-group> </context-group>
<target state="needs-translation">Assign view permissions</target> <target state="translated">Atribuir permissões de visualização</target>
</trans-unit> </trans-unit>
<trans-unit id="1744964187586405039" datatype="html"> <trans-unit id="1744964187586405039" datatype="html">
<source>Assign edit permissions</source> <source>Assign edit permissions</source>
@@ -6807,7 +6807,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context> <context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">294,295</context> <context context-type="linenumber">294,295</context>
</context-group> </context-group>
<target state="needs-translation">Assign edit permissions</target> <target state="translated">Atribuir permissões de edição</target>
</trans-unit> </trans-unit>
<trans-unit id="6236311670364192011" datatype="html"> <trans-unit id="6236311670364192011" datatype="html">
<source>Remove tags</source> <source>Remove tags</source>
@@ -7111,7 +7111,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts</context> <context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts</context>
<context context-type="linenumber">74</context> <context context-type="linenumber">74</context>
</context-group> </context-group>
<target state="needs-translation">Consume Folder</target> <target state="translated">Consumir Pasta</target>
</trans-unit> </trans-unit>
<trans-unit id="3553216189604488439" datatype="html" approved="yes"> <trans-unit id="3553216189604488439" datatype="html" approved="yes">
<source>Modified</source> <source>Modified</source>
@@ -7732,7 +7732,7 @@
<context context-type="sourcefile">src/app/components/common/input/password/password.component.html</context> <context context-type="sourcefile">src/app/components/common/input/password/password.component.html</context>
<context context-type="linenumber">12</context> <context context-type="linenumber">12</context>
</context-group> </context-group>
<target state="needs-translation">Show password</target> <target state="translated">Mostrar palavra-passe</target>
</trans-unit> </trans-unit>
<trans-unit id="594042705136125260" datatype="html"> <trans-unit id="594042705136125260" datatype="html">
<source>Edit Permissions</source> <source>Edit Permissions</source>
@@ -7797,7 +7797,7 @@
<context context-type="sourcefile">src/app/components/common/input/select/select.component.ts</context> <context context-type="sourcefile">src/app/components/common/input/select/select.component.ts</context>
<context context-type="linenumber">113</context> <context context-type="linenumber">113</context>
</context-group> </context-group>
<target state="needs-translation">No items found</target> <target state="translated">Nenhum item encontrado</target>
</trans-unit> </trans-unit>
<trans-unit id="6541407358060244620" datatype="html"> <trans-unit id="6541407358060244620" datatype="html">
<source>Note: value has not yet been set and will not apply until explicitly changed</source> <source>Note: value has not yet been set and will not apply until explicitly changed</source>
@@ -8009,7 +8009,7 @@
<context context-type="sourcefile">src/app/components/common/permissions-dialog/permissions-dialog.component.ts</context> <context context-type="sourcefile">src/app/components/common/permissions-dialog/permissions-dialog.component.ts</context>
<context context-type="linenumber">51</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<target state="needs-translation">Set permissions</target> <target state="translated">Definir permissões</target>
</trans-unit> </trans-unit>
<trans-unit id="1678966148862835666" datatype="html"> <trans-unit id="1678966148862835666" datatype="html">
<source>Edit permissions for </source> <source>Edit permissions for </source>
@@ -8017,7 +8017,7 @@
<context context-type="sourcefile">src/app/components/common/permissions-dialog/permissions-dialog.component.ts</context> <context context-type="sourcefile">src/app/components/common/permissions-dialog/permissions-dialog.component.ts</context>
<context context-type="linenumber">62</context> <context context-type="linenumber">62</context>
</context-group> </context-group>
<target state="needs-translation">Edit permissions for </target> <target state="translated">Editar permissões para</target>
</trans-unit> </trans-unit>
<trans-unit id="347498040201588614" datatype="html"> <trans-unit id="347498040201588614" datatype="html">
<source>Existing owner, user and group permissions will be merged with these settings.</source> <source>Existing owner, user and group permissions will be merged with these settings.</source>
@@ -8041,7 +8041,7 @@
<context context-type="sourcefile">src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html</context>
<context context-type="linenumber">55,56</context> <context context-type="linenumber">55,56</context>
</context-group> </context-group>
<target state="needs-translation">Unowned</target> <target state="translated">Sem dono</target>
</trans-unit> </trans-unit>
<trans-unit id="7789618798958221204" datatype="html"> <trans-unit id="7789618798958221204" datatype="html">
<source>Clear selected users</source> <source>Clear selected users</source>
@@ -8057,7 +8057,7 @@
<context context-type="sourcefile">src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html</context>
<context context-type="linenumber">90</context> <context context-type="linenumber">90</context>
</context-group> </context-group>
<target state="needs-translation">Hide unowned</target> <target state="translated">Ocultar sem dono</target>
</trans-unit> </trans-unit>
<trans-unit id="5947558132119506443" datatype="html"> <trans-unit id="5947558132119506443" datatype="html">
<source>My documents</source> <source>My documents</source>
@@ -8209,7 +8209,7 @@
<context context-type="sourcefile">src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html</context> <context context-type="sourcefile">src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html</context>
<context context-type="linenumber">15</context> <context context-type="linenumber">15</context>
</context-group> </context-group>
<target state="needs-translation">Confirm Email</target> <target state="translated">Confirmar e-mail</target>
</trans-unit> </trans-unit>
<trans-unit id="3241357959735682038" datatype="html"> <trans-unit id="3241357959735682038" datatype="html">
<source>Confirm Password</source> <source>Confirm Password</source>
@@ -8217,7 +8217,7 @@
<context context-type="sourcefile">src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html</context> <context context-type="sourcefile">src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html</context>
<context context-type="linenumber">25</context> <context context-type="linenumber">25</context>
</context-group> </context-group>
<target state="needs-translation">Confirm Password</target> <target state="translated">Confirmar Senha</target>
</trans-unit> </trans-unit>
<trans-unit id="7554924397178347823" datatype="html"> <trans-unit id="7554924397178347823" datatype="html">
<source>API Auth Token</source> <source>API Auth Token</source>
@@ -8225,7 +8225,7 @@
<context context-type="sourcefile">src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html</context> <context context-type="sourcefile">src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html</context>
<context context-type="linenumber">33,34</context> <context context-type="linenumber">33,34</context>
</context-group> </context-group>
<target state="needs-translation">API Auth Token</target> <target state="translated">Token de Autenticação da API</target>
</trans-unit> </trans-unit>
<trans-unit id="4323470180912194028" datatype="html"> <trans-unit id="4323470180912194028" datatype="html">
<source>Copy</source> <source>Copy</source>
@@ -8273,7 +8273,7 @@
<context context-type="sourcefile">src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html</context> <context context-type="sourcefile">src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html</context>
<context context-type="linenumber">47,48</context> <context context-type="linenumber">47,48</context>
</context-group> </context-group>
<target state="needs-translation">Regenerate auth token</target> <target state="translated">Regenerar token de autenticação</target>
</trans-unit> </trans-unit>
<trans-unit id="4369881772624105142" datatype="html"> <trans-unit id="4369881772624105142" datatype="html">
<source>Warning: changing the token cannot be undone</source> <source>Warning: changing the token cannot be undone</source>
@@ -8569,7 +8569,7 @@
<context context-type="sourcefile">src/app/components/manage/workflows/workflows.component.html</context> <context context-type="sourcefile">src/app/components/manage/workflows/workflows.component.html</context>
<context context-type="linenumber">19,20</context> <context context-type="linenumber">19,20</context>
</context-group> </context-group>
<target state="needs-translation">Status</target> <target state="translated">Estado</target>
</trans-unit> </trans-unit>
<trans-unit id="2861306361489095884" datatype="html"> <trans-unit id="2861306361489095884" datatype="html">
<source>Slug</source> <source>Slug</source>
@@ -8693,7 +8693,7 @@
<context context-type="sourcefile">src/app/components/common/share-links-dialog/share-links-dialog.component.html</context> <context context-type="sourcefile">src/app/components/common/share-links-dialog/share-links-dialog.component.html</context>
<context context-type="linenumber">9,10</context> <context context-type="linenumber">9,10</context>
</context-group> </context-group>
<target state="needs-translation"> No existing links </target> <target state="translated">Sem links existentes</target>
</trans-unit> </trans-unit>
<trans-unit id="7419704019640008953" datatype="html"> <trans-unit id="7419704019640008953" datatype="html">
<source>Share</source> <source>Share</source>
@@ -8709,7 +8709,7 @@
<context context-type="sourcefile">src/app/components/common/share-links-dialog/share-links-dialog.component.html</context> <context context-type="sourcefile">src/app/components/common/share-links-dialog/share-links-dialog.component.html</context>
<context context-type="linenumber">48,49</context> <context context-type="linenumber">48,49</context>
</context-group> </context-group>
<target state="needs-translation">Share archive version</target> <target state="translated">Partilhar versão de arquivo</target>
</trans-unit> </trans-unit>
<trans-unit id="3429210839568770054" datatype="html"> <trans-unit id="3429210839568770054" datatype="html">
<source>Error retrieving links</source> <source>Error retrieving links</source>
@@ -8717,7 +8717,7 @@
<context context-type="sourcefile">src/app/components/common/share-links-dialog/share-links-dialog.component.ts</context> <context context-type="sourcefile">src/app/components/common/share-links-dialog/share-links-dialog.component.ts</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">67</context>
</context-group> </context-group>
<target state="needs-translation">Error retrieving links</target> <target state="translated">Erro ao recuperar links</target>
</trans-unit> </trans-unit>
<trans-unit id="4776429682428363094" datatype="html"> <trans-unit id="4776429682428363094" datatype="html">
<source>1 day</source> <source>1 day</source>
@@ -8737,7 +8737,7 @@
<context context-type="sourcefile">src/app/components/common/share-links-dialog/share-links-dialog.component.ts</context> <context context-type="sourcefile">src/app/components/common/share-links-dialog/share-links-dialog.component.ts</context>
<context context-type="linenumber">86</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
<target state="needs-translation"><x id="PH" equiv-text="days"/> days</target> <target state="translated"><x id="PH" equiv-text="days"/> dias</target>
</trans-unit> </trans-unit>
<trans-unit id="2897042887615940599" datatype="html"> <trans-unit id="2897042887615940599" datatype="html">
<source>Error deleting link</source> <source>Error deleting link</source>
@@ -8745,7 +8745,7 @@
<context context-type="sourcefile">src/app/components/common/share-links-dialog/share-links-dialog.component.ts</context> <context context-type="sourcefile">src/app/components/common/share-links-dialog/share-links-dialog.component.ts</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">115</context>
</context-group> </context-group>
<target state="needs-translation">Error deleting link</target> <target state="translated">Erro ao eliminar link</target>
</trans-unit> </trans-unit>
<trans-unit id="8400747326190565173" datatype="html"> <trans-unit id="8400747326190565173" datatype="html">
<source>Error creating link</source> <source>Error creating link</source>
@@ -8753,7 +8753,7 @@
<context context-type="sourcefile">src/app/components/common/share-links-dialog/share-links-dialog.component.ts</context> <context context-type="sourcefile">src/app/components/common/share-links-dialog/share-links-dialog.component.ts</context>
<context context-type="linenumber">143</context> <context context-type="linenumber">143</context>
</context-group> </context-group>
<target state="needs-translation">Error creating link</target> <target state="translated">Erro ao criar o link</target>
</trans-unit> </trans-unit>
<trans-unit id="8336346011691074629" datatype="html"> <trans-unit id="8336346011691074629" datatype="html">
<source>No suggestions</source> <source>No suggestions</source>
@@ -9137,7 +9137,7 @@
<context context-type="sourcefile">src/app/components/common/toast/toast.component.html</context> <context context-type="sourcefile">src/app/components/common/toast/toast.component.html</context>
<context context-type="linenumber">54</context> <context context-type="linenumber">54</context>
</context-group> </context-group>
<target state="needs-translation">Copy Raw Error</target> <target state="translated">Copiar Erro Bruto</target>
</trans-unit> </trans-unit>
<trans-unit id="1749180330008942007" datatype="html" approved="yes"> <trans-unit id="1749180330008942007" datatype="html" approved="yes">
<source>Dismiss completed</source> <source>Dismiss completed</source>
@@ -9223,7 +9223,7 @@
<context context-type="sourcefile">src/app/components/dashboard/dashboard.component.ts</context> <context context-type="sourcefile">src/app/components/dashboard/dashboard.component.ts</context>
<context context-type="linenumber">90</context> <context context-type="linenumber">90</context>
</context-group> </context-group>
<target state="needs-translation">Dashboard updated</target> <target state="translated">Painel atualizado</target>
</trans-unit> </trans-unit>
<trans-unit id="3214475953924351473" datatype="html"> <trans-unit id="3214475953924351473" datatype="html">
<source>Error updating dashboard</source> <source>Error updating dashboard</source>
@@ -9231,7 +9231,7 @@
<context context-type="sourcefile">src/app/components/dashboard/dashboard.component.ts</context> <context context-type="sourcefile">src/app/components/dashboard/dashboard.component.ts</context>
<context context-type="linenumber">93</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
<target state="needs-translation">Error updating dashboard</target> <target state="translated">Erro ao atualizar o dashboard</target>
</trans-unit> </trans-unit>
<trans-unit id="1559883523769732271" datatype="html"> <trans-unit id="1559883523769732271" datatype="html">
<source>Error while loading documents</source> <source>Error while loading documents</source>
@@ -9319,7 +9319,7 @@
<context context-type="sourcefile">src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html</context> <context context-type="sourcefile">src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html</context>
<context context-type="linenumber">189,192</context> <context context-type="linenumber">189,192</context>
</context-group> </context-group>
<target state="needs-translation">No documents</target> <target state="translated">Nenhum documento</target>
</trans-unit> </trans-unit>
<trans-unit id="1069523139277190436" datatype="html" approved="yes"> <trans-unit id="1069523139277190436" datatype="html" approved="yes">
<source>Statistics</source> <source>Statistics</source>
@@ -10079,7 +10079,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1503</context> <context context-type="linenumber">1503</context>
</context-group> </context-group>
<target state="needs-translation">Error deleting document</target> <target state="translated">Erro ao eliminar documento</target>
</trans-unit> </trans-unit>
<trans-unit id="619486176823357521" datatype="html"> <trans-unit id="619486176823357521" datatype="html">
<source>Reprocess confirm</source> <source>Reprocess confirm</source>
@@ -10123,7 +10123,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1549</context> <context context-type="linenumber">1549</context>
</context-group> </context-group>
<target state="needs-translation">Error executing operation</target> <target state="translated">Erro ao executar a operação</target>
</trans-unit> </trans-unit>
<trans-unit id="6030453331794586802" datatype="html"> <trans-unit id="6030453331794586802" datatype="html">
<source>Error downloading document</source> <source>Error downloading document</source>
@@ -10567,7 +10567,7 @@
<context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context>
<context context-type="linenumber">349</context> <context context-type="linenumber">349</context>
</context-group> </context-group>
<target state="needs-translation">Error executing bulk operation</target> <target state="translated">Erro ao executar operação em lote</target>
</trans-unit> </trans-unit>
<trans-unit id="7894972847287473517" datatype="html"> <trans-unit id="7894972847287473517" datatype="html">
<source>&quot;<x id="PH" equiv-text="items[0].name"/>&quot;</source> <source>&quot;<x id="PH" equiv-text="items[0].name"/>&quot;</source>
@@ -10701,7 +10701,7 @@
<context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context>
<context context-type="linenumber">681</context> <context context-type="linenumber">681</context>
</context-group> </context-group>
<target state="needs-translation">Confirm storage path assignment</target> <target state="translated">Confirmar atribuição do caminho de armazenamento</target>
</trans-unit> </trans-unit>
<trans-unit id="8750527458618415924" datatype="html"> <trans-unit id="8750527458618415924" datatype="html">
<source>This operation will assign the storage path &quot;<x id="PH" equiv-text="storagePath.name"/>&quot; to <x id="PH_1" equiv-text="this.getSelectionSize()"/> selected document(s).</source> <source>This operation will assign the storage path &quot;<x id="PH" equiv-text="storagePath.name"/>&quot; to <x id="PH_1" equiv-text="this.getSelectionSize()"/> selected document(s).</source>
@@ -11047,7 +11047,7 @@
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">24</context> <context context-type="linenumber">24</context>
</context-group> </context-group>
<target state="needs-translation">Toggle tag filter</target> <target state="translated">Alternar filtro de rótulos</target>
</trans-unit> </trans-unit>
<trans-unit id="4648526799630820486" datatype="html"> <trans-unit id="4648526799630820486" datatype="html">
<source>Toggle correspondent filter</source> <source>Toggle correspondent filter</source>
@@ -11055,7 +11055,7 @@
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">47</context> <context context-type="linenumber">47</context>
</context-group> </context-group>
<target state="needs-translation">Toggle correspondent filter</target> <target state="translated">Alternar filtro de correspondente</target>
</trans-unit> </trans-unit>
<trans-unit id="5319701482646590642" datatype="html"> <trans-unit id="5319701482646590642" datatype="html">
<source>Toggle document type filter</source> <source>Toggle document type filter</source>
@@ -11063,7 +11063,7 @@
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">63</context> <context context-type="linenumber">63</context>
</context-group> </context-group>
<target state="needs-translation">Toggle document type filter</target> <target state="translated">Alternar filtro de tipo de documento</target>
</trans-unit> </trans-unit>
<trans-unit id="8950368321707344185" datatype="html"> <trans-unit id="8950368321707344185" datatype="html">
<source>Toggle storage path filter</source> <source>Toggle storage path filter</source>
@@ -11071,7 +11071,7 @@
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">70</context> <context context-type="linenumber">70</context>
</context-group> </context-group>
<target state="needs-translation">Toggle storage path filter</target> <target state="translated">Alternar filtro de caminho de armazenamento</target>
</trans-unit> </trans-unit>
<trans-unit id="3797570084942068182" datatype="html" approved="yes"> <trans-unit id="3797570084942068182" datatype="html" approved="yes">
<source>Select</source> <source>Select</source>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Editar documento</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="needs-translation">Preview document</target> <target state="needs-translation">Preview document</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Editar documento</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -11707,7 +11707,7 @@
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">364</context> <context context-type="linenumber">364</context>
</context-group> </context-group>
<target state="needs-translation">Owner not in: <x id="PH" equiv-text="rule.value"/></target> <target state="translated">Proprietário não está em: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
<trans-unit id="1082034558646673343" datatype="html"> <trans-unit id="1082034558646673343" datatype="html">
<source>Without an owner</source> <source>Without an owner</source>
@@ -11715,7 +11715,7 @@
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">367</context> <context context-type="linenumber">367</context>
</context-group> </context-group>
<target state="needs-translation">Without an owner</target> <target state="translated">Sem proprietário</target>
</trans-unit> </trans-unit>
<trans-unit id="7210076240260527720" datatype="html" approved="yes"> <trans-unit id="7210076240260527720" datatype="html" approved="yes">
<source>Save current view</source> <source>Save current view</source>
@@ -11819,7 +11819,7 @@
<context context-type="sourcefile">src/app/components/document-notes/document-notes.component.ts</context> <context context-type="sourcefile">src/app/components/document-notes/document-notes.component.ts</context>
<context context-type="linenumber">83</context> <context context-type="linenumber">83</context>
</context-group> </context-group>
<target state="needs-translation">Error saving note</target> <target state="translated">Erro ao guardar nota</target>
</trans-unit> </trans-unit>
<trans-unit id="4144411010137688084" datatype="html"> <trans-unit id="4144411010137688084" datatype="html">
<source>Error deleting note</source> <source>Error deleting note</source>
@@ -11827,7 +11827,7 @@
<context context-type="sourcefile">src/app/components/document-notes/document-notes.component.ts</context> <context context-type="sourcefile">src/app/components/document-notes/document-notes.component.ts</context>
<context context-type="linenumber">97</context> <context context-type="linenumber">97</context>
</context-group> </context-group>
<target state="needs-translation">Error deleting note</target> <target state="translated">Erro ao eliminar nota</target>
</trans-unit> </trans-unit>
<trans-unit id="7103632680753685326" datatype="html"> <trans-unit id="7103632680753685326" datatype="html">
<source>Drop files to begin upload</source> <source>Drop files to begin upload</source>
@@ -11851,7 +11851,7 @@
<context context-type="sourcefile">src/app/components/manage/document-attributes/custom-fields/custom-fields.component.html</context> <context context-type="sourcefile">src/app/components/manage/document-attributes/custom-fields/custom-fields.component.html</context>
<context context-type="linenumber">6,7</context> <context context-type="linenumber">6,7</context>
</context-group> </context-group>
<target state="needs-translation">Data Type</target> <target state="translated">Tipo de Dados</target>
</trans-unit> </trans-unit>
<trans-unit id="6209318295562170730" datatype="html"> <trans-unit id="6209318295562170730" datatype="html">
<source>Filter Documents (<x id="INTERPOLATION" equiv-text="{{ field.document_count }}"/>)</source> <source>Filter Documents (<x id="INTERPOLATION" equiv-text="{{ field.document_count }}"/>)</source>
@@ -11883,7 +11883,7 @@
<context context-type="sourcefile">src/app/components/manage/document-attributes/custom-fields/custom-fields.component.html</context> <context context-type="sourcefile">src/app/components/manage/document-attributes/custom-fields/custom-fields.component.html</context>
<context context-type="linenumber">70,72</context> <context context-type="linenumber">70,72</context>
</context-group> </context-group>
<target state="needs-translation">No fields defined.</target> <target state="translated">Sem campos definidos.</target>
</trans-unit> </trans-unit>
<trans-unit id="3032792139967609806" datatype="html"> <trans-unit id="3032792139967609806" datatype="html">
<source>Confirm delete field</source> <source>Confirm delete field</source>
@@ -11891,7 +11891,7 @@
<context context-type="sourcefile">src/app/components/manage/document-attributes/custom-fields/custom-fields.component.ts</context> <context context-type="sourcefile">src/app/components/manage/document-attributes/custom-fields/custom-fields.component.ts</context>
<context context-type="linenumber">104</context> <context context-type="linenumber">104</context>
</context-group> </context-group>
<target state="needs-translation">Confirm delete field</target> <target state="translated">Confirmar eliminação do campo</target>
</trans-unit> </trans-unit>
<trans-unit id="2939457975223185057" datatype="html"> <trans-unit id="2939457975223185057" datatype="html">
<source>This operation will permanently delete this field.</source> <source>This operation will permanently delete this field.</source>
@@ -11899,7 +11899,7 @@
<context context-type="sourcefile">src/app/components/manage/document-attributes/custom-fields/custom-fields.component.ts</context> <context context-type="sourcefile">src/app/components/manage/document-attributes/custom-fields/custom-fields.component.ts</context>
<context context-type="linenumber">105</context> <context context-type="linenumber">105</context>
</context-group> </context-group>
<target state="needs-translation">This operation will permanently delete this field.</target> <target state="translated">Esta operação irá eliminar permanentemente este campo.</target>
</trans-unit> </trans-unit>
<trans-unit id="4679555638382452936" datatype="html"> <trans-unit id="4679555638382452936" datatype="html">
<source>Deleted field &quot;<x id="PH" equiv-text="field.name"/>&quot;</source> <source>Deleted field &quot;<x id="PH" equiv-text="field.name"/>&quot;</source>
@@ -11931,7 +11931,7 @@
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context> <context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">57</context>
</context-group> </context-group>
<target state="needs-translation">Add Field</target> <target state="translated">Adicionar Campo</target>
</trans-unit> </trans-unit>
<trans-unit id="6316128875819022658" datatype="html"> <trans-unit id="6316128875819022658" datatype="html">
<source>correspondent</source> <source>correspondent</source>
@@ -12183,7 +12183,7 @@
<context context-type="sourcefile">src/app/components/manage/document-attributes/management-list/management-list.component.ts</context> <context context-type="sourcefile">src/app/components/manage/document-attributes/management-list/management-list.component.ts</context>
<context context-type="linenumber">289</context> <context context-type="linenumber">289</context>
</context-group> </context-group>
<target state="needs-translation">Error while deleting element</target> <target state="translated">Erro ao eliminar elemento</target>
</trans-unit> </trans-unit>
<trans-unit id="2976110979192587241" datatype="html"> <trans-unit id="2976110979192587241" datatype="html">
<source>Error saving settings</source> <source>Error saving settings</source>
@@ -12207,7 +12207,7 @@
<context context-type="sourcefile">src/app/components/manage/document-attributes/management-list/management-list.component.ts</context> <context context-type="sourcefile">src/app/components/manage/document-attributes/management-list/management-list.component.ts</context>
<context context-type="linenumber">432</context> <context context-type="linenumber">432</context>
</context-group> </context-group>
<target state="needs-translation">Permissions updated successfully</target> <target state="translated">Permissões atualizadas com sucesso</target>
</trans-unit> </trans-unit>
<trans-unit id="4639647950943944112" datatype="html"> <trans-unit id="4639647950943944112" datatype="html">
<source>Error updating permissions</source> <source>Error updating permissions</source>
@@ -12271,7 +12271,7 @@
<context context-type="sourcefile">src/app/components/manage/document-attributes/management-list/storage-path-list/storage-path-list.component.ts</context> <context context-type="sourcefile">src/app/components/manage/document-attributes/management-list/storage-path-list/storage-path-list.component.ts</context>
<context context-type="linenumber">59</context> <context context-type="linenumber">59</context>
</context-group> </context-group>
<target state="needs-translation">Do you really want to delete the storage path "<x id="PH" equiv-text="object.name"/>"?</target> <target state="translated">Tem a certeza que quer eliminar o caminho de armazenamento "<x id="PH" equiv-text="object.name"/>"?</target>
</trans-unit> </trans-unit>
<trans-unit id="6402703264596649214" datatype="html"> <trans-unit id="6402703264596649214" datatype="html">
<source>tag</source> <source>tag</source>
@@ -12303,7 +12303,7 @@
<context context-type="sourcefile">src/app/components/manage/mail/mail.component.html</context> <context context-type="sourcefile">src/app/components/manage/mail/mail.component.html</context>
<context context-type="linenumber">2,3</context> <context context-type="linenumber">2,3</context>
</context-group> </context-group>
<target state="needs-translation">Mail Settings</target> <target state="translated">Configurações de Email</target>
</trans-unit> </trans-unit>
<trans-unit id="8913167930428886792" datatype="html"> <trans-unit id="8913167930428886792" datatype="html">
<source>Mail accounts</source> <source>Mail accounts</source>
@@ -12423,7 +12423,7 @@
<context context-type="sourcefile">src/app/components/manage/mail/mail.component.ts</context> <context context-type="sourcefile">src/app/components/manage/mail/mail.component.ts</context>
<context context-type="linenumber">130</context> <context context-type="linenumber">130</context>
</context-group> </context-group>
<target state="needs-translation">Error retrieving mail rules</target> <target state="translated">Erro ao recuperar as regras de e-mail</target>
</trans-unit> </trans-unit>
<trans-unit id="763945516325093575" datatype="html"> <trans-unit id="763945516325093575" datatype="html">
<source>OAuth2 authentication success</source> <source>OAuth2 authentication success</source>
@@ -13332,7 +13332,7 @@
<context context-type="sourcefile">src/app/data/matching-model.ts</context> <context context-type="sourcefile">src/app/data/matching-model.ts</context>
<context context-type="linenumber">46</context> <context context-type="linenumber">46</context>
</context-group> </context-group>
<target state="needs-translation">None: Disable matching</target> <target state="translated">Nenhum: Desativar correspondência</target>
</trans-unit> </trans-unit>
<trans-unit id="432834967329800065" datatype="html"> <trans-unit id="432834967329800065" datatype="html">
<source>General Settings</source> <source>General Settings</source>
@@ -14268,7 +14268,7 @@
<context context-type="sourcefile">src/app/guards/dirty-saved-view.guard.ts</context> <context context-type="sourcefile">src/app/guards/dirty-saved-view.guard.ts</context>
<context context-type="linenumber">29</context> <context context-type="linenumber">29</context>
</context-group> </context-group>
<target state="needs-translation">You have unsaved changes to the saved view</target> <target state="translated">Tem alterações não guardadas na vista guardada</target>
</trans-unit> </trans-unit>
<trans-unit id="7282050913165342352" datatype="html"> <trans-unit id="7282050913165342352" datatype="html">
<source>Are you sure you want to close this saved view?</source> <source>Are you sure you want to close this saved view?</source>
@@ -14276,7 +14276,7 @@
<context context-type="sourcefile">src/app/guards/dirty-saved-view.guard.ts</context> <context context-type="sourcefile">src/app/guards/dirty-saved-view.guard.ts</context>
<context context-type="linenumber">33</context> <context context-type="linenumber">33</context>
</context-group> </context-group>
<target state="needs-translation">Are you sure you want to close this saved view?</target> <target state="translated">Tem a certeza que quer fechar esta vista guardada?</target>
</trans-unit> </trans-unit>
<trans-unit id="856284624775342512" datatype="html"> <trans-unit id="856284624775342512" datatype="html">
<source>Save and close</source> <source>Save and close</source>
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Creare câmp nou</target> <target state="translated">Creare câmp nou</target>
</trans-unit> </trans-unit>
@@ -11396,22 +11396,22 @@
</context-group> </context-group>
<target state="translated">Sortează după <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="translated">Sortează după <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Editează document</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Previzualizare document</target> <target state="translated">Previzualizare document</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Editează document</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Создать новое поле</target> <target state="translated">Создать новое поле</target>
</trans-unit> </trans-unit>
@@ -11396,22 +11396,22 @@
</context-group> </context-group>
<target state="translated">Сортировать по <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="translated">Сортировать по <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Изменить документ</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Предпросмотр документа</target> <target state="translated">Предпросмотр документа</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Изменить документ</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Vytvoriť nové pole</target> <target state="translated">Vytvoriť nové pole</target>
</trans-unit> </trans-unit>
@@ -11398,22 +11398,22 @@ zhodujúce sa</target>
</context-group> </context-group>
<target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Upraviť dokument</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="needs-translation">Preview document</target> <target state="needs-translation">Preview document</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Upraviť dokument</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Ustvari novo polje</target> <target state="translated">Ustvari novo polje</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="translated">Razvrsti po <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="translated">Razvrsti po <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Uredi dokument</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Predogled dokumenta</target> <target state="translated">Predogled dokumenta</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Uredi dokument</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Krijo fushë të re</target> <target state="translated">Krijo fushë të re</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="translated">Rendit by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="translated">Rendit by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Redakto dokument</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Preview dokument</target> <target state="translated">Preview dokument</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Redakto dokument</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Kreiraj novo polje</target> <target state="translated">Kreiraj novo polje</target>
</trans-unit> </trans-unit>
@@ -11398,22 +11398,22 @@
</context-group> </context-group>
<target state="translated">Složi prema <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="translated">Složi prema <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Uredi dokument</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Pregledaj dokument</target> <target state="translated">Pregledaj dokument</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Uredi dokument</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Skapa nytt fält</target> <target state="translated">Skapa nytt fält</target>
</trans-unit> </trans-unit>
@@ -11396,22 +11396,22 @@
</context-group> </context-group>
<target state="translated">Sortera efter <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="translated">Sortera efter <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Redigera dokument</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Förhandsvisa dokument</target> <target state="translated">Förhandsvisa dokument</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Redigera dokument</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="needs-translation">Create new field</target> <target state="needs-translation">Create new field</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">แก้ไขเอกสาร</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="needs-translation">Preview document</target> <target state="needs-translation">Preview document</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">แก้ไขเอกสาร</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Yeni alan oluştur</target> <target state="translated">Yeni alan oluştur</target>
</trans-unit> </trans-unit>
@@ -11398,22 +11398,22 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
</context-group> </context-group>
<target state="translated"><x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/> göre sırala</target> <target state="translated"><x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/> göre sırala</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Belgeyi düzenle</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Belgeyi ön izle</target> <target state="translated">Belgeyi ön izle</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Belgeyi düzenle</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">Створити нове поле</target> <target state="translated">Створити нове поле</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target> <target state="needs-translation">Sort by <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">Редагувати документ</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">Попередній перегляд документа</target> <target state="translated">Попередній перегляд документа</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">Редагувати документ</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4779,7 +4779,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="final">Tạo trường mới</target> <target state="final">Tạo trường mới</target>
</trans-unit> </trans-unit>
@@ -11459,22 +11459,22 @@
Sắp xếp theo Sắp xếp theo
</target> </target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html" approved="yes">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="final">Chỉnh sửa tài liệu</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html" approved="yes"> <trans-unit id="3420321797707163677" datatype="html" approved="yes">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="final">Xem trước tài liệu</target> <target state="final">Xem trước tài liệu</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html" approved="yes">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="final">Chỉnh sửa tài liệu</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html" approved="yes"> <trans-unit id="4512084577073831437" datatype="html" approved="yes">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">创建新字段</target> <target state="translated">创建新字段</target>
</trans-unit> </trans-unit>
@@ -11396,22 +11396,22 @@
</context-group> </context-group>
<target state="translated">按 <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/> 排序</target> <target state="translated">按 <x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/> 排序</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">编辑文档</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">预览文档</target> <target state="translated">预览文档</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">编辑文档</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
+10 -10
View File
@@ -4761,7 +4761,7 @@
<source>Create new field</source> <source>Create new field</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context> <context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">19</context>
</context-group> </context-group>
<target state="translated">建立新欄位</target> <target state="translated">建立新欄位</target>
</trans-unit> </trans-unit>
@@ -11397,22 +11397,22 @@
</context-group> </context-group>
<target state="translated">以<x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/>排序</target> <target state="translated">以<x id="INTERPOLATION" equiv-text="{{getDisplayCustomFieldTitle(field_id)}}"/>排序</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="translated">編輯文件</target>
</trans-unit>
<trans-unit id="3420321797707163677" datatype="html"> <trans-unit id="3420321797707163677" datatype="html">
<source>Preview document</source> <source>Preview document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">329</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<target state="translated">預覽文件</target> <target state="translated">預覽文件</target>
</trans-unit> </trans-unit>
<trans-unit id="2179847500064178686" datatype="html">
<source>Edit document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="translated">編輯文件</target>
</trans-unit>
<trans-unit id="4512084577073831437" datatype="html"> <trans-unit id="4512084577073831437" datatype="html">
<source>Reset filters / selection</source> <source>Reset filters / selection</source>
<context-group purpose="location"> <context-group purpose="location">
-24
View File
@@ -77,30 +77,6 @@ def _clear_django_caches() -> None:
cache.clear() cache.clear()
@pytest.fixture(autouse=True)
def _keep_connection_open_in_atomic(monkeypatch: pytest.MonkeyPatch) -> None:
"""Make ``close_old_connections()`` a no-op inside the test's transaction.
The Celery signal handlers call it, as a worker would between tasks. Tests
run inside an open atomic block, where Postgres really closes the
connection, taking the test transaction and every later test on the
worker with it. SQLite in-memory ignores the close, which hid this.
"""
from django.db.backends.base.base import BaseDatabaseWrapper
original = BaseDatabaseWrapper.close_if_unusable_or_obsolete
def close_unless_atomic(self: BaseDatabaseWrapper) -> None:
if not self.in_atomic_block:
original(self)
monkeypatch.setattr(
BaseDatabaseWrapper,
"close_if_unusable_or_obsolete",
close_unless_atomic,
)
@pytest.fixture @pytest.fixture
def paperless_dirs( def paperless_dirs(
tmp_path: Path, tmp_path: Path,
+7 -3
View File
@@ -10,9 +10,6 @@ from typing import TYPE_CHECKING
import regex as regex_mod import regex as regex_mod
from django.conf import settings from django.conf import settings
from pdf2image import convert_from_path from pdf2image import convert_from_path
from pikepdf import Page
from pikepdf import PasswordError
from pikepdf import Pdf
from documents.converters import convert_from_tiff_to_pdf from documents.converters import convert_from_tiff_to_pdf
from documents.data_models import ConsumableDocument from documents.data_models import ConsumableDocument
@@ -34,6 +31,7 @@ from documents.utils import maybe_override_pixel_limit
from paperless.config import BarcodeConfig from paperless.config import BarcodeConfig
if TYPE_CHECKING: if TYPE_CHECKING:
from pikepdf import Page
from PIL import Image from PIL import Image
logger = logging.getLogger("paperless.barcodes") logger = logging.getLogger("paperless.barcodes")
@@ -282,6 +280,8 @@ class BarcodePlugin(ConsumeTaskPlugin):
# No op if not a TIFF # No op if not a TIFF
self.convert_from_tiff_to_pdf() self.convert_from_tiff_to_pdf()
from pikepdf import PasswordError
try: try:
self.barcodes = scan_pdf( self.barcodes = scan_pdf(
self.pdf_file, self.pdf_file,
@@ -433,6 +433,8 @@ class BarcodePlugin(ConsumeTaskPlugin):
document_paths = [] document_paths = []
fname: str = self.input_doc.original_file.stem fname: str = self.input_doc.original_file.stem
from pikepdf import Pdf
with Pdf.open(self.pdf_file) as input_pdf: with Pdf.open(self.pdf_file) as input_pdf:
# Start with an empty document # Start with an empty document
current_document: list[Page] = [] current_document: list[Page] = []
@@ -516,6 +518,8 @@ def scan_pdf(pdf_path: Path, settings: BarcodeConfig, work_dir: Path) -> list[Ba
""" """
barcodes: list[Barcode] = [] barcodes: list[Barcode] = []
from pikepdf import Pdf
with Pdf.open(pdf_path) as pdf: with Pdf.open(pdf_path) as pdf:
num_of_pages = len(pdf.pages) num_of_pages = len(pdf.pages)
logger.debug(f"PDF has {num_of_pages} pages") logger.debug(f"PDF has {num_of_pages} pages")
+2 -1
View File
@@ -1,6 +1,5 @@
from pathlib import Path from pathlib import Path
import img2pdf
from PIL import Image from PIL import Image
from documents.utils import copy_basic_file_stats from documents.utils import copy_basic_file_stats
@@ -17,6 +16,8 @@ def convert_from_tiff_to_pdf(tiff_path: Path, target_directory: Path) -> Path:
Returns the path of the PDF created. Returns the path of the PDF created.
""" """
import img2pdf
# override pixel setting if needed # override pixel setting if needed
maybe_override_pixel_limit() maybe_override_pixel_limit()
+2 -1
View File
@@ -6,7 +6,6 @@ from pathlib import Path
from typing import Final from typing import Final
from django.conf import settings from django.conf import settings
from pikepdf import Pdf
from documents.consumer import ConsumerError from documents.consumer import ConsumerError
from documents.converters import convert_from_tiff_to_pdf from documents.converters import convert_from_tiff_to_pdf
@@ -85,6 +84,8 @@ class CollatePlugin(NoCleanupPluginMixin, NoSetupPluginMixin, ConsumeTaskPlugin)
valid_staging_exists = True valid_staging_exists = True
if valid_staging_exists: if valid_staging_exists:
from pikepdf import Pdf
try: try:
# Collate pages from second PDF in reverse order # Collate pages from second PDF in reverse order
with Pdf.open(staging) as pdf1, Pdf.open(pdf_file) as pdf2: with Pdf.open(staging) as pdf1, Pdf.open(pdf_file) as pdf2:
+2 -1
View File
@@ -11,7 +11,6 @@ from decimal import InvalidOperation
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from typing import Any from typing import Any
import dateparser
from django.conf import settings from django.conf import settings
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.db.models import Case from django.db.models import Case
@@ -350,6 +349,8 @@ class DateQueryField(serializers.DateField):
if not isinstance(value, str): if not isinstance(value, str):
raise raise
import dateparser
try: try:
parsed = dateparser.parse( parsed = dateparser.parse(
value, value,
+14 -2
View File
@@ -14,8 +14,6 @@ from __future__ import annotations
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from typing import NamedTuple from typing import NamedTuple
import pikepdf
if TYPE_CHECKING: if TYPE_CHECKING:
from collections.abc import Callable from collections.abc import Callable
from collections.abc import Iterable from collections.abc import Iterable
@@ -43,6 +41,8 @@ def rotate_pdf(src: Path, dst: Path, degrees: int) -> None:
Rotate every page relatively on the opened document, not a rebuild, so Info, Rotate every page relatively on the opened document, not a rebuild, so Info,
XMP and outlines are kept. ``src`` is not modified. XMP and outlines are kept. ``src`` is not modified.
""" """
import pikepdf
with pikepdf.open(src) as pdf: with pikepdf.open(src) as pdf:
for page in pdf.pages: for page in pdf.pages:
page.rotate(degrees, relative=True) page.rotate(degrees, relative=True)
@@ -58,6 +58,8 @@ def remove_pages(src: Path, dst: Path, pages: Iterable[int]) -> None:
Duplicates are ignored. Pages are removed highest first so earlier removals Duplicates are ignored. Pages are removed highest first so earlier removals
never shift the index of later ones. never shift the index of later ones.
""" """
import pikepdf
unique = sorted(set(pages)) unique = sorted(set(pages))
_require_positive(unique) _require_positive(unique)
with pikepdf.open(src) as pdf: with pikepdf.open(src) as pdf:
@@ -81,6 +83,8 @@ def build_pdfs(
(Info, XMP, outlines) is not carried over. Returns the written paths in output (Info, XMP, outlines) is not carried over. Returns the written paths in output
order. order.
""" """
import pikepdf
for specs, _ in outputs: for specs, _ in outputs:
_require_positive(spec.page for spec in specs) _require_positive(spec.page for spec in specs)
@@ -140,6 +144,8 @@ def needs_decrypt(src: Path) -> bool:
True if ``src`` is encrypted. A PDF that needs a password to open at all True if ``src`` is encrypted. A PDF that needs a password to open at all
counts as encrypted. counts as encrypted.
""" """
import pikepdf
try: try:
with pikepdf.open(src) as pdf: with pikepdf.open(src) as pdf:
return bool(pdf.is_encrypted) return bool(pdf.is_encrypted)
@@ -154,6 +160,8 @@ def decrypt_pdf(src: Path, make_dst: Callable[[], Path], password: str) -> Path:
``make_dst`` is only called once the password has been accepted, so a wrong ``make_dst`` is only called once the password has been accepted, so a wrong
password never leaves a destination behind. password never leaves a destination behind.
""" """
import pikepdf
with pikepdf.open(src, password=password) as pdf: with pikepdf.open(src, password=password) as pdf:
pdf.remove_unreferenced_resources() pdf.remove_unreferenced_resources()
dst = make_dst() dst = make_dst()
@@ -170,6 +178,8 @@ class PdfMerger:
""" """
def __init__(self) -> None: def __init__(self) -> None:
import pikepdf
self._pdf = pikepdf.new() self._pdf = pikepdf.new()
self._version: str = self._pdf.pdf_version self._version: str = self._pdf.pdf_version
@@ -185,6 +195,8 @@ class PdfMerger:
self._pdf.close() self._pdf.close()
def add(self, path: Path) -> None: def add(self, path: Path) -> None:
import pikepdf
with pikepdf.open(str(path)) as pdf: with pikepdf.open(str(path)) as pdf:
self._version = max(self._version, pdf.pdf_version) self._version = max(self._version, pdf.pdf_version)
self._pdf.pages.extend(pdf.pages) self._pdf.pages.extend(pdf.pages)
+2 -2
View File
@@ -7,8 +7,6 @@ from dataclasses import dataclass
from types import TracebackType from types import TracebackType
from typing import Self from typing import Self
import dateparser
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -80,6 +78,8 @@ class DateParserPluginBase(ABC):
Uses configuration from `self.config`. Uses configuration from `self.config`.
""" """
import dateparser
try: try:
return dateparser.parse( return dateparser.parse(
date_string, date_string,
+6 -6
View File
@@ -476,13 +476,13 @@ def update_filename_and_move_files(
return return
with FileLock(settings.MEDIA_LOCK): with FileLock(settings.MEDIA_LOCK):
try: # If this was waiting for the lock, the filename or archive_filename
# If this was waiting for the lock, the filename or archive_filename # of this document may have been updated. This happens if multiple updates
# of this document may have been updated. This happens if multiple updates # get queued from the UI for the same document
# get queued from the UI for the same document # So freshen up the data before doing anything
# So freshen up the data before doing anything instance.refresh_from_db()
instance.refresh_from_db()
try:
old_filename = instance.filename old_filename = instance.filename
old_source_path = instance.source_path old_source_path = instance.source_path
move_original = False move_original = False
+8 -3
View File
@@ -76,9 +76,6 @@ from paperless.logging import consume_task_id
from paperless.parsers import ParserContext from paperless.parsers import ParserContext
from paperless.parsers.registry import get_parser_registry from paperless.parsers.registry import get_parser_registry
from paperless_ai.exceptions import LLMTimeoutError from paperless_ai.exceptions import LLMTimeoutError
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: if settings.AUDIT_LOG_ENABLED:
from auditlog.models import LogEntry from auditlog.models import LogEntry
@@ -339,6 +336,8 @@ def bulk_update_documents(document_ids) -> None:
ai_config = AIConfig() ai_config = AIConfig()
if ai_config.llm_index_enabled: if ai_config.llm_index_enabled:
from paperless_ai.indexing import update_llm_index
update_llm_index( update_llm_index(
rebuild=False, rebuild=False,
document_ids=document_ids, document_ids=document_ids,
@@ -499,6 +498,8 @@ def update_document_content_maybe_archive_file(
ai_config = AIConfig() ai_config = AIConfig()
if ai_config.llm_index_enabled: if ai_config.llm_index_enabled:
from paperless_ai.indexing import llm_index_add_or_update_document
llm_index_add_or_update_document(document) llm_index_add_or_update_document(document)
clear_document_caches(document.pk) clear_document_caches(document.pk)
@@ -800,11 +801,15 @@ def apply_ai_suggestions(self, action_id: int, document_id: int) -> None:
@shared_task @shared_task
def update_document_in_llm_index(document) -> None: def update_document_in_llm_index(document) -> None:
from paperless_ai.indexing import llm_index_add_or_update_document
llm_index_add_or_update_document(document) llm_index_add_or_update_document(document)
@shared_task @shared_task
def remove_document_from_llm_index(document) -> None: def remove_document_from_llm_index(document) -> None:
from paperless_ai.indexing import llm_index_remove_document
llm_index_remove_document(document) llm_index_remove_document(document)
+4 -1
View File
@@ -44,7 +44,10 @@ def localize_date(value: date | datetime | str, format: str, locale: str) -> str
def format_datetime(value: str | datetime, format: str) -> str: def format_datetime(value: str | datetime, format: str) -> str:
if isinstance(value, str): if isinstance(value, str):
value = parse_date(value) parsed = parse_datetime(value) or parse_date(value)
if parsed is None:
raise ValueError(f"Invalid date or datetime string: {value!r}")
return parsed.strftime(format=format)
return value.strftime(format=format) return value.strftime(format=format)
@@ -71,7 +71,7 @@ class TestParseString:
): ):
# We still need to mock dateparser.parse to force the exception # We still need to mock dateparser.parse to force the exception
mocker.patch( mocker.patch(
"documents.plugins.date_parsing.base.dateparser.parse", "dateparser.parse",
side_effect=ValueError( side_effect=ValueError(
"Parsing error: 01/01/2024", "Parsing error: 01/01/2024",
), ),
@@ -260,7 +260,7 @@ class TestRegexDateParser:
parser = RegexDateParserPlugin(base_config) parser = RegexDateParserPlugin(base_config)
# Patch the dateparser.parse # Patch the dateparser.parse
target = "documents.plugins.date_parsing.base.dateparser.parse" target = "dateparser.parse"
def fake_parse( def fake_parse(
date_string: str, date_string: str,
@@ -335,7 +335,7 @@ class TestRegexDateParser:
) )
parser = RegexDateParserPlugin(cfg) parser = RegexDateParserPlugin(cfg)
target = "documents.plugins.date_parsing.base.dateparser.parse" target = "dateparser.parse"
def fake_parse( def fake_parse(
date_string: str, date_string: str,
@@ -400,7 +400,7 @@ class TestRegexDateParser:
parser = RegexDateParserPlugin(cfg) parser = RegexDateParserPlugin(cfg)
# Patch the module's dateparser.parse so we can inspect calls # Patch the module's dateparser.parse so we can inspect calls
target = "documents.plugins.date_parsing.base.dateparser.parse" target = "dateparser.parse"
def fake_parse( def fake_parse(
date_string: str, date_string: str,
+5 -5
View File
@@ -1070,7 +1070,7 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase):
with ( with (
patch("documents.tasks.llmindex_index.apply_async") as mock_update, patch("documents.tasks.llmindex_index.apply_async") as mock_update,
patch("paperless.views.llm_index_exists") as mock_exists, patch("paperless_ai.indexing.llm_index_exists") as mock_exists,
): ):
mock_exists.return_value = False mock_exists.return_value = False
self.client.patch( self.client.patch(
@@ -1095,7 +1095,7 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase):
with ( with (
patch("documents.tasks.llmindex_index.apply_async") as mock_update, patch("documents.tasks.llmindex_index.apply_async") as mock_update,
patch("paperless.views.llm_index_exists", return_value=False), patch("paperless_ai.indexing.llm_index_exists", return_value=False),
): ):
self.client.patch( self.client.patch(
f"{self.ENDPOINT}1/", f"{self.ENDPOINT}1/",
@@ -1115,7 +1115,7 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase):
with ( with (
patch("documents.tasks.llmindex_index.apply_async") as mock_update, patch("documents.tasks.llmindex_index.apply_async") as mock_update,
patch("paperless.views.llm_index_exists") as mock_exists, patch("paperless_ai.indexing.llm_index_exists") as mock_exists,
): ):
mock_exists.return_value = True mock_exists.return_value = True
self.client.patch( self.client.patch(
@@ -1136,7 +1136,7 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase):
with ( with (
patch("documents.tasks.llmindex_index.apply_async") as mock_update, patch("documents.tasks.llmindex_index.apply_async") as mock_update,
patch("paperless.views.llm_index_exists") as mock_exists, patch("paperless_ai.indexing.llm_index_exists") as mock_exists,
): ):
mock_exists.return_value = True mock_exists.return_value = True
self.client.patch( self.client.patch(
@@ -1174,7 +1174,7 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase):
with ( with (
patch("documents.tasks.llmindex_index.apply_async") as mock_update, patch("documents.tasks.llmindex_index.apply_async") as mock_update,
patch("paperless.views.llm_index_exists") as mock_exists, patch("paperless_ai.indexing.llm_index_exists") as mock_exists,
): ):
mock_exists.return_value = True mock_exists.return_value = True
self.client.patch( self.client.patch(
+2 -2
View File
@@ -61,7 +61,7 @@ class TestChatStreamingViewInputValidation(APITestCase):
return_value=self._mock_ai_enabled(), return_value=self._mock_ai_enabled(),
), ),
mock.patch( mock.patch(
"documents.views.stream_chat_with_documents", "paperless_ai.chat.stream_chat_with_documents",
return_value=iter(chunks), return_value=iter(chunks),
), ),
): ):
@@ -104,7 +104,7 @@ class TestChatStreamingViewUnrestrictedFlag:
""" """
mocker.patch("documents.views.AIConfig").return_value.ai_enabled = True mocker.patch("documents.views.AIConfig").return_value.ai_enabled = True
return mocker.patch( return mocker.patch(
"documents.views.stream_chat_with_documents", "paperless_ai.chat.stream_chat_with_documents",
return_value=iter(()), return_value=iter(()),
) )
+13 -13
View File
@@ -1062,7 +1062,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase):
"custom_fields": [ "custom_fields": [
{ {
"field": custom_field_doclink.id, "field": custom_field_doclink.id,
"value": [doc2.id, doc3.id, doc4.id], "value": [2, 3, 4],
}, },
], ],
}, },
@@ -1073,13 +1073,13 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase):
self.assertEqual(CustomFieldInstance.objects.count(), 4) self.assertEqual(CustomFieldInstance.objects.count(), 4)
_cf_5 = doc2.custom_fields.first() _cf_5 = doc2.custom_fields.first()
assert _cf_5 is not None assert _cf_5 is not None
self.assertEqual(_cf_5.value, [doc1.id]) self.assertEqual(_cf_5.value, [1])
_cf_6 = doc3.custom_fields.first() _cf_6 = doc3.custom_fields.first()
assert _cf_6 is not None assert _cf_6 is not None
self.assertEqual(_cf_6.value, [doc1.id]) self.assertEqual(_cf_6.value, [1])
_cf_7 = doc4.custom_fields.first() _cf_7 = doc4.custom_fields.first()
assert _cf_7 is not None assert _cf_7 is not None
self.assertEqual(_cf_7.value, [doc1.id]) self.assertEqual(_cf_7.value, [1])
# Add links appends if necessary # Add links appends if necessary
resp = self.client.patch( resp = self.client.patch(
@@ -1088,7 +1088,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase):
"custom_fields": [ "custom_fields": [
{ {
"field": custom_field_doclink.id, "field": custom_field_doclink.id,
"value": [doc1.id, doc4.id], "value": [1, 4],
}, },
], ],
}, },
@@ -1098,7 +1098,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase):
self.assertEqual(resp.status_code, status.HTTP_200_OK) self.assertEqual(resp.status_code, status.HTTP_200_OK)
_cf_8 = doc4.custom_fields.first() _cf_8 = doc4.custom_fields.first()
assert _cf_8 is not None assert _cf_8 is not None
self.assertEqual(_cf_8.value, [doc1.id, doc3.id]) self.assertEqual(_cf_8.value, [1, 3])
# Remove one of the links, removed on other doc # Remove one of the links, removed on other doc
resp = self.client.patch( resp = self.client.patch(
@@ -1107,7 +1107,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase):
"custom_fields": [ "custom_fields": [
{ {
"field": custom_field_doclink.id, "field": custom_field_doclink.id,
"value": [doc2.id, doc3.id], "value": [2, 3],
}, },
], ],
}, },
@@ -1117,13 +1117,13 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase):
self.assertEqual(resp.status_code, status.HTTP_200_OK) self.assertEqual(resp.status_code, status.HTTP_200_OK)
_cf_9 = doc2.custom_fields.first() _cf_9 = doc2.custom_fields.first()
assert _cf_9 is not None assert _cf_9 is not None
self.assertEqual(_cf_9.value, [doc1.id]) self.assertEqual(_cf_9.value, [1])
_cf_10 = doc3.custom_fields.first() _cf_10 = doc3.custom_fields.first()
assert _cf_10 is not None assert _cf_10 is not None
self.assertEqual(_cf_10.value, [doc1.id, doc4.id]) self.assertEqual(_cf_10.value, [1, 4])
_cf_11 = doc4.custom_fields.first() _cf_11 = doc4.custom_fields.first()
assert _cf_11 is not None assert _cf_11 is not None
self.assertEqual(_cf_11.value, [doc3.id]) self.assertEqual(_cf_11.value, [3])
# Removes the field entirely # Removes the field entirely
resp = self.client.patch( resp = self.client.patch(
@@ -1140,10 +1140,10 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase):
self.assertEqual(_cf_12.value, []) self.assertEqual(_cf_12.value, [])
_cf_13 = doc3.custom_fields.first() _cf_13 = doc3.custom_fields.first()
assert _cf_13 is not None assert _cf_13 is not None
self.assertEqual(_cf_13.value, [doc4.id]) self.assertEqual(_cf_13.value, [4])
_cf_14 = doc4.custom_fields.first() _cf_14 = doc4.custom_fields.first()
assert _cf_14 is not None assert _cf_14 is not None
self.assertEqual(_cf_14.value, [doc3.id]) self.assertEqual(_cf_14.value, [3])
# If field exists on target doc but value is None # If field exists on target doc but value is None
doc5 = Document.objects.create( doc5 = Document.objects.create(
@@ -1170,7 +1170,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase):
self.assertEqual(resp.status_code, status.HTTP_200_OK) self.assertEqual(resp.status_code, status.HTTP_200_OK)
_cf_15 = doc5.custom_fields.first() _cf_15 = doc5.custom_fields.first()
assert _cf_15 is not None assert _cf_15 is not None
self.assertEqual(_cf_15.value, [doc1.id]) self.assertEqual(_cf_15.value, [1])
def test_documentlink_patch_requires_change_permission_on_target_documents( def test_documentlink_patch_requires_change_permission_on_target_documents(
self, self,
@@ -1110,7 +1110,7 @@ class TestVersionActionPermissions(DirectoriesMixin, APITestCase):
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
with ( with (
mock.patch("documents.views.AIConfig") as ai_config, mock.patch("documents.views.AIConfig") as ai_config,
mock.patch("documents.views.stream_chat_with_documents") as chat, mock.patch("paperless_ai.chat.stream_chat_with_documents") as chat,
): ):
ai_config.return_value.ai_enabled = True ai_config.return_value.ai_enabled = True
response = self.client.post( response = self.client.post(
+1 -1
View File
@@ -2686,7 +2686,7 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
response = self.client.get("/api/documents/34676/suggestions/") response = self.client.get("/api/documents/34676/suggestions/")
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
@mock.patch("documents.views.get_ai_document_classification") @mock.patch("paperless_ai.ai_classifier.get_ai_document_classification")
@override_settings(AI_ENABLED=True) @override_settings(AI_ENABLED=True)
def test_suggestions_still_uses_classifier_when_ai_enabled( def test_suggestions_still_uses_classifier_when_ai_enabled(
self, self,
@@ -628,23 +628,22 @@ class TestCustomFieldsSearch(DirectoriesMixin, APITestCase):
# Subset check (document link field only) # # Subset check (document link field only) #
# ==========================================================# # ==========================================================#
def test_document_link_contains(self) -> None: def test_document_link_contains(self) -> None:
linked = {self.documents[1].id, self.documents[2].id}
# Document link field "contains" performs a subset check. # Document link field "contains" performs a subset check.
self._assert_query_match_predicate( self._assert_query_match_predicate(
["documentlink_field", "contains", sorted(linked)], ["documentlink_field", "contains", [1, 2]],
lambda document: ( lambda document: (
"documentlink_field" in document "documentlink_field" in document
and document["documentlink_field"] is not None and document["documentlink_field"] is not None
and set(document["documentlink_field"]) >= linked and set(document["documentlink_field"]) >= {1, 2}
), ),
) )
# The order of IDs don't matter - this is the same as above. # The order of IDs don't matter - this is the same as above.
self._assert_query_match_predicate( self._assert_query_match_predicate(
["documentlink_field", "contains", sorted(linked, reverse=True)], ["documentlink_field", "contains", [2, 1]],
lambda document: ( lambda document: (
"documentlink_field" in document "documentlink_field" in document
and document["documentlink_field"] is not None and document["documentlink_field"] is not None
and set(document["documentlink_field"]) >= linked and set(document["documentlink_field"]) >= {1, 2}
), ),
) )
+29
View File
@@ -308,3 +308,32 @@ class TestBulkDownloadSchema:
def test_bulk_download_response_403(self, api_schema: SchemaGenerator) -> None: def test_bulk_download_response_403(self, api_schema: SchemaGenerator) -> None:
op = api_schema["paths"]["/api/documents/bulk_download/"]["post"] op = api_schema["paths"]["/api/documents/bulk_download/"]["post"]
assert "403" in op["responses"] assert "403" in op["responses"]
class TestDocumentListObjectFilterSchema:
"""documents_list: comma-separated ObjectFilter params must be typed as integer arrays."""
@pytest.mark.parametrize(
"param_name",
[
"tags__id__all",
"tags__id__none",
"tags__id__in",
"correspondent__id__none",
"document_type__id__none",
"storage_path__id__none",
"owner__id__none",
"custom_fields__id__all",
"custom_fields__id__none",
"custom_fields__id__in",
],
)
def test_object_filter_param_is_integer_array(
self,
api_schema: SchemaGenerator,
param_name: str,
) -> None:
params = api_schema["paths"]["/api/documents/"]["get"]["parameters"]
param = next(p for p in params if p["name"] == param_name)
assert param["schema"] == {"type": "array", "items": {"type": "integer"}}
assert param["explode"] is False
+4 -6
View File
@@ -944,7 +944,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase):
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
results = response.data["results"] results = response.data["results"]
self.assertEqual({r["id"] for r in results}, {d1.id, d2.id}) self.assertEqual({r["id"] for r in results}, {1, 2})
@mock.patch("documents.search._backend.parse_user_query") @mock.patch("documents.search._backend.parse_user_query")
def test_search_parser_bug_surfaces_as_500_not_400(self, m) -> None: def test_search_parser_bug_surfaces_as_500_not_400(self, m) -> None:
@@ -1801,7 +1801,6 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase):
def test_search_sorting(self) -> None: def test_search_sorting(self) -> None:
u1 = UserFactory(username="user1") u1 = UserFactory(username="user1")
u2 = UserFactory(username="user2") u2 = UserFactory(username="user2")
u3 = UserFactory(username="user3")
c1 = Correspondent.objects.create(name="corres Ax") c1 = Correspondent.objects.create(name="corres Ax")
c2 = Correspondent.objects.create(name="corres Cx") c2 = Correspondent.objects.create(name="corres Cx")
c3 = Correspondent.objects.create(name="corres Bx") c3 = Correspondent.objects.create(name="corres Bx")
@@ -1827,7 +1826,6 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase):
content="test", content="test",
archive_serial_number=1, archive_serial_number=1,
title="1", title="1",
owner=u3,
) )
Note.objects.create( Note.objects.create(
note="This is a note.", note="This is a note.",
@@ -1880,14 +1878,14 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase):
search_query("&ordering=-num_notes"), search_query("&ordering=-num_notes"),
[d1.id, d3.id, d2.id], [d1.id, d3.id, d2.id],
) )
# owner sort: ORM orders by owner_id (integer) # owner sort: ORM orders by owner_id (integer); NULLs first in SQLite ASC
self.assertListEqual( self.assertListEqual(
search_query("&ordering=owner"), search_query("&ordering=owner"),
[d1.id, d2.id, d3.id], [d3.id, d1.id, d2.id],
) )
self.assertListEqual( self.assertListEqual(
search_query("&ordering=-owner"), search_query("&ordering=-owner"),
[d3.id, d2.id, d1.id], [d2.id, d1.id, d3.id],
) )
def test_search_ordering_by_score(self) -> None: def test_search_ordering_by_score(self) -> None:
+48 -2
View File
@@ -5,7 +5,6 @@ from datetime import timedelta
from pathlib import Path from pathlib import Path
from unittest import mock from unittest import mock
from django.db import connection
from django.test import override_settings from django.test import override_settings
from django.utils import timezone from django.utils import timezone
from rest_framework import status from rest_framework import status
@@ -69,7 +68,7 @@ class TestSystemStatus(APITestCase):
self.assertEqual(response.data["install_type"], "bare-metal") self.assertEqual(response.data["install_type"], "bare-metal")
self.assertIsNotNone(response.data["storage"]["total"]) self.assertIsNotNone(response.data["storage"]["total"])
self.assertIsNotNone(response.data["storage"]["available"]) self.assertIsNotNone(response.data["storage"]["available"])
self.assertEqual(response.data["database"]["type"], connection.vendor) self.assertEqual(response.data["database"]["type"], "sqlite")
self.assertIsNotNone(response.data["database"]["url"]) self.assertIsNotNone(response.data["database"]["url"])
self.assertEqual(response.data["database"]["status"], "OK") self.assertEqual(response.data["database"]["status"], "OK")
self.assertIsNone(response.data["database"]["error"]) self.assertIsNone(response.data["database"]["error"])
@@ -540,3 +539,50 @@ class TestSystemStatus(APITestCase):
self.assertEqual(response.data["tasks"]["summary"]["success_count"], 1) self.assertEqual(response.data["tasks"]["summary"]["success_count"], 1)
self.assertEqual(response.data["tasks"]["summary"]["failure_count"], 1) self.assertEqual(response.data["tasks"]["summary"]["failure_count"], 1)
self.assertEqual(response.data["tasks"]["summary"]["pending_count"], 1) self.assertEqual(response.data["tasks"]["summary"]["pending_count"], 1)
def test_system_status_reports_database_error(self) -> None:
"""
GIVEN:
- Reading the migration state fails
WHEN:
- The system status is requested
THEN:
- The response reports the database error rather than a server error
"""
self.client.force_login(self.user)
with mock.patch(
"documents.views.MigrationLoader",
side_effect=Exception("database is down"),
):
response = self.client.get(self.ENDPOINT)
self.assertEqual(response.status_code, status.HTTP_200_OK)
database = response.data["database"]
self.assertEqual(database["status"], "ERROR")
self.assertIsNotNone(database["error"])
self.assertEqual(
database["migration_status"],
{"latest_migration": None, "unapplied_migrations": []},
)
def test_system_status_migration_query_error(self) -> None:
"""
GIVEN:
- The migration graph loads but reading the applied migrations fails
WHEN:
- The system status is requested
THEN:
- No migrations are reported as unapplied, since the state is unknown
"""
self.client.force_login(self.user)
with mock.patch("documents.views.MigrationRecorder") as recorder:
recorder.Migration.objects.all.side_effect = Exception("query failed")
response = self.client.get(self.ENDPOINT)
self.assertEqual(response.status_code, status.HTTP_200_OK)
database = response.data["database"]
self.assertEqual(database["status"], "ERROR")
self.assertEqual(
database["migration_status"],
{"latest_migration": None, "unapplied_migrations": []},
)
+4 -2
View File
@@ -1031,7 +1031,9 @@ class TestPDFActions(DirectoriesMixin, TestCase):
with self.assertLogs("paperless.bulk_edit", level="ERROR") as cm: with self.assertLogs("paperless.bulk_edit", level="ERROR") as cm:
bulk_edit.merge(doc_ids) bulk_edit.merge(doc_ids)
error_str = cm.output[0] error_str = cm.output[0]
expected_str = f"Error merging document {self.doc2.id}, it will not be included in the merge" expected_str = (
"Error merging document 2, it will not be included in the merge"
)
self.assertIn(expected_str, error_str) self.assertIn(expected_str, error_str)
mock_consume_file.assert_not_called() mock_consume_file.assert_not_called()
@@ -1191,7 +1193,7 @@ class TestPDFActions(DirectoriesMixin, TestCase):
with self.assertLogs("paperless.bulk_edit", level="ERROR") as cm: with self.assertLogs("paperless.bulk_edit", level="ERROR") as cm:
bulk_edit.split(doc_ids, pages) bulk_edit.split(doc_ids, pages)
error_str = cm.output[0] error_str = cm.output[0]
expected_str = f"Error splitting document {self.doc2.id}" expected_str = "Error splitting document 2"
self.assertIn(expected_str, error_str) self.assertIn(expected_str, error_str)
mock_consume_file.assert_not_called() mock_consume_file.assert_not_called()
+5 -5
View File
@@ -248,8 +248,8 @@ class TestConsumer(
) )
self.assertIsNone(document.correspondent) self.assertIsNone(document.correspondent)
self.assertIsNone(document.document_type) self.assertIsNone(document.document_type)
self.assertEqual(document.filename, f"{document.pk:07}.pdf") self.assertEqual(document.filename, "0000001.pdf")
self.assertEqual(document.archive_filename, f"{document.pk:07}.pdf") self.assertEqual(document.archive_filename, "0000001.pdf")
self.assertIsFile(document.source_path) self.assertIsFile(document.source_path)
@@ -1127,17 +1127,17 @@ class TestConsumer(
with self.get_consumer(settings.CONSUMPTION_DIR / "simple.png") as consumer: with self.get_consumer(settings.CONSUMPTION_DIR / "simple.png") as consumer:
consumer.run() consumer.run()
doc1 = Document.objects.latest("pk") doc1 = Document.objects.filter(pk=1).first()
with self.get_consumer(settings.CONSUMPTION_DIR / "simple.pdf") as consumer: with self.get_consumer(settings.CONSUMPTION_DIR / "simple.pdf") as consumer:
consumer.run() consumer.run()
doc2 = Document.objects.latest("pk") doc2 = Document.objects.filter(pk=2).first()
with self.get_consumer(settings.CONSUMPTION_DIR / "simple.png.pdf") as consumer: with self.get_consumer(settings.CONSUMPTION_DIR / "simple.png.pdf") as consumer:
consumer.run() consumer.run()
doc3 = Document.objects.latest("pk") doc3 = Document.objects.filter(pk=3).first()
self.assertEqual(doc1.filename, "simple.png") self.assertEqual(doc1.filename, "simple.png")
self.assertEqual(doc1.archive_filename, "simple.pdf") self.assertEqual(doc1.archive_filename, "simple.pdf")
+26 -6
View File
@@ -31,6 +31,7 @@ from documents.serialisers import DocumentSerializer
from documents.tasks import empty_trash from documents.tasks import empty_trash
from paperless_testing.assertions import FileSystemAssertsMixin from paperless_testing.assertions import FileSystemAssertsMixin
from paperless_testing.dirs import DirectoriesMixin from paperless_testing.dirs import DirectoriesMixin
from paperless_testing.dirs import PaperlessDirs
from paperless_testing.factories import DocumentFactory from paperless_testing.factories import DocumentFactory
from paperless_testing.factories import UserFactory from paperless_testing.factories import UserFactory
@@ -760,9 +761,6 @@ class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, Test
archive_checksum="B", archive_checksum="B",
) )
# Without a format the files are renamed to match the primary key
original = doc.source_path
archive = doc.archive_path
self.assertIsFile(original) self.assertIsFile(original)
self.assertIsFile(archive) self.assertIsFile(archive)
self.assertIsFile(doc.source_path) self.assertIsFile(doc.source_path)
@@ -981,9 +979,6 @@ class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, Test
archive_filename="0000001.pdf", archive_filename="0000001.pdf",
) )
# Without a format the files are renamed to match the primary key
original = doc.source_path
archive = doc.archive_path
self.assertIsFile(original) self.assertIsFile(original)
self.assertIsFile(archive) self.assertIsFile(archive)
self.assertIsFile(doc.source_path) self.assertIsFile(doc.source_path)
@@ -2140,3 +2135,28 @@ class TestPathDateLocalization:
with override_settings(FILENAME_FORMAT=filename_format): with override_settings(FILENAME_FORMAT=filename_format):
filename = generate_filename(document) filename = generate_filename(document)
assert filename == Path(expected_filename) assert filename == Path(expected_filename)
@pytest.mark.django_db
def test_refresh_failure_surfaces_database_error(
paperless_dirs: PaperlessDirs,
) -> None:
"""
GIVEN:
- A document with a stored filename
WHEN:
- Saving it triggers a filename update and refreshing it from the database fails
THEN:
- The database error is raised, not an unbound variable error from the rollback
"""
document = DocumentFactory(filename="some.pdf")
with (
mock.patch.object(
Document,
"refresh_from_db",
side_effect=DatabaseError("database is locked"),
),
pytest.raises(DatabaseError, match="database is locked"),
):
document.save()
+21
View File
@@ -4,6 +4,7 @@ from typing import Literal
import pytest import pytest
from documents.templating.filters import format_datetime
from documents.templating.filters import localize_date from documents.templating.filters import localize_date
@@ -294,3 +295,23 @@ class TestDateLocalization:
Tests `localize_date` with `date` string across different locales and formats. Tests `localize_date` with `date` string across different locales and formats.
""" """
assert localize_date(value, format_style, locale_str) == expected_output assert localize_date(value, format_style, locale_str) == expected_output
class TestFormatDatetime:
@pytest.mark.parametrize(
("value", "expected"),
[
pytest.param("2026-09-21", "2026-09-21 00:00", id="date"),
pytest.param(
"2026-09-21T13:45:00+00:00",
"2026-09-21 13:45",
id="datetime",
),
],
)
def test_parses_iso_strings(self, value: str, expected: str) -> None:
assert format_datetime(value, "%Y-%m-%d %H:%M") == expected
def test_rejects_unparseable_string(self) -> None:
with pytest.raises(ValueError, match="not a date"):
format_datetime("not a date", "%Y")
+38 -33
View File
@@ -151,20 +151,6 @@ class TestExportImport(
super().setUp() super().setUp()
def _install_sample_files(self) -> None:
documents_dir = Path(self.dirs.media_dir) / "documents"
shutil.rmtree(documents_dir)
install_document_samples(documents_dir)
# Thumbnails are located by primary key, which the database sequence
# does not reset between tests on PostgreSQL
for number, document in enumerate(
(self.d1, self.d2, self.d3, self.d4),
start=1,
):
source = documents_dir / "thumbnails" / f"{number:07}.webp"
if source != document.thumbnail_path:
shutil.copy(source, document.thumbnail_path)
def _get_document_from_manifest(self, manifest, id): def _get_document_from_manifest(self, manifest, id):
f = list( f = list(
filter( filter(
@@ -218,7 +204,8 @@ class TestExportImport(
return manifest return manifest
def test_exporter(self, *, use_filename_format=False) -> None: def test_exporter(self, *, use_filename_format=False) -> None:
self._install_sample_files() shutil.rmtree(Path(self.dirs.media_dir) / "documents")
install_document_samples(Path(self.dirs.media_dir) / "documents")
num_permission_objects = Permission.objects.count() num_permission_objects = Permission.objects.count()
@@ -321,7 +308,8 @@ class TestExportImport(
self.assertEqual(messages.total_issue_count, 0) self.assertEqual(messages.total_issue_count, 0)
def test_exporter_with_filename_format(self) -> None: def test_exporter_with_filename_format(self) -> None:
self._install_sample_files() shutil.rmtree(Path(self.dirs.media_dir) / "documents")
install_document_samples(Path(self.dirs.media_dir) / "documents")
with override_settings( with override_settings(
FILENAME_FORMAT="{created_year}/{correspondent}/{title}", FILENAME_FORMAT="{created_year}/{correspondent}/{title}",
@@ -329,7 +317,8 @@ class TestExportImport(
self.test_exporter(use_filename_format=True) self.test_exporter(use_filename_format=True)
def test_exporter_includes_share_links_and_bundles(self) -> None: def test_exporter_includes_share_links_and_bundles(self) -> None:
self._install_sample_files() shutil.rmtree(Path(self.dirs.media_dir) / "documents")
install_document_samples(Path(self.dirs.media_dir) / "documents")
share_link = ShareLink.objects.create( share_link = ShareLink.objects.create(
slug="share-link-slug", slug="share-link-slug",
@@ -427,7 +416,8 @@ class TestExportImport(
) )
def test_update_export_changed_time(self) -> None: def test_update_export_changed_time(self) -> None:
self._install_sample_files() shutil.rmtree(Path(self.dirs.media_dir) / "documents")
install_document_samples(Path(self.dirs.media_dir) / "documents")
self._do_export() self._do_export()
self.assertIsFile(self.target / "manifest.json") self.assertIsFile(self.target / "manifest.json")
@@ -462,7 +452,8 @@ class TestExportImport(
self.assertEqual(st_mtime_3, st_mtime_4) self.assertEqual(st_mtime_3, st_mtime_4)
def test_update_export_changed_checksum(self) -> None: def test_update_export_changed_checksum(self) -> None:
self._install_sample_files() shutil.rmtree(Path(self.dirs.media_dir) / "documents")
install_document_samples(Path(self.dirs.media_dir) / "documents")
self._do_export() self._do_export()
@@ -488,7 +479,8 @@ class TestExportImport(
self.assertIsFile(self.target / "manifest.json") self.assertIsFile(self.target / "manifest.json")
def test_update_export_deleted_document(self) -> None: def test_update_export_deleted_document(self) -> None:
self._install_sample_files() shutil.rmtree(Path(self.dirs.media_dir) / "documents")
install_document_samples(Path(self.dirs.media_dir) / "documents")
manifest = self._do_export() manifest = self._do_export()
@@ -519,7 +511,8 @@ class TestExportImport(
@override_settings(FILENAME_FORMAT="{title}/{correspondent}") @override_settings(FILENAME_FORMAT="{title}/{correspondent}")
def test_update_export_changed_location(self) -> None: def test_update_export_changed_location(self) -> None:
self._install_sample_files() shutil.rmtree(Path(self.dirs.media_dir) / "documents")
install_document_samples(Path(self.dirs.media_dir) / "documents")
self._do_export(use_filename_format=True) self._do_export(use_filename_format=True)
self.assertIsFile(self.target / "wow1" / "c.pdf") self.assertIsFile(self.target / "wow1" / "c.pdf")
@@ -560,7 +553,8 @@ class TestExportImport(
- Zipfile is created - Zipfile is created
- Zipfile contains exported files - Zipfile contains exported files
""" """
self._install_sample_files() shutil.rmtree(Path(self.dirs.media_dir) / "documents")
install_document_samples(Path(self.dirs.media_dir) / "documents")
args = ["document_exporter", self.target, "--zip"] args = ["document_exporter", self.target, "--zip"]
@@ -588,7 +582,8 @@ class TestExportImport(
- Zipfile is created - Zipfile is created
- Zipfile contains exported files - Zipfile contains exported files
""" """
self._install_sample_files() shutil.rmtree(Path(self.dirs.media_dir) / "documents")
install_document_samples(Path(self.dirs.media_dir) / "documents")
args = ["document_exporter", self.target, "--zip", "--use-filename-format"] args = ["document_exporter", self.target, "--zip", "--use-filename-format"]
@@ -623,7 +618,8 @@ class TestExportImport(
- Zipfile contains exported files - Zipfile contains exported files
- The existing file and directory in target are removed - The existing file and directory in target are removed
""" """
self._install_sample_files() shutil.rmtree(Path(self.dirs.media_dir) / "documents")
install_document_samples(Path(self.dirs.media_dir) / "documents")
# Create stuff in target directory # Create stuff in target directory
existing_file = self.target / "test.txt" existing_file = self.target / "test.txt"
@@ -718,7 +714,8 @@ class TestExportImport(
- Manifest.json doesn't contain information about archive files - Manifest.json doesn't contain information about archive files
- Documents can be imported again - Documents can be imported again
""" """
self._install_sample_files() shutil.rmtree(Path(self.dirs.media_dir) / "documents")
install_document_samples(Path(self.dirs.media_dir) / "documents")
manifest = self._do_export() manifest = self._do_export()
has_archive = False has_archive = False
@@ -760,7 +757,8 @@ class TestExportImport(
- Manifest.json doesn't contain information about thumbnails - Manifest.json doesn't contain information about thumbnails
- Documents can be imported again - Documents can be imported again
""" """
self._install_sample_files() shutil.rmtree(Path(self.dirs.media_dir) / "documents")
install_document_samples(Path(self.dirs.media_dir) / "documents")
manifest = self._do_export() manifest = self._do_export()
has_thumbnail = False has_thumbnail = False
@@ -804,7 +802,8 @@ class TestExportImport(
- Main manifest.json file doesn't contain information about documents - Main manifest.json file doesn't contain information about documents
- Documents can be imported again - Documents can be imported again
""" """
self._install_sample_files() shutil.rmtree(Path(self.dirs.media_dir) / "documents")
install_document_samples(Path(self.dirs.media_dir) / "documents")
manifest = self._do_export(split_manifest=True) manifest = self._do_export(split_manifest=True)
has_document = False has_document = False
@@ -828,7 +827,8 @@ class TestExportImport(
self.assertEqual(CustomFieldInstance.objects.count(), 1) self.assertEqual(CustomFieldInstance.objects.count(), 1)
def _export_import_barcodes(self, *, split_manifest: bool) -> None: def _export_import_barcodes(self, *, split_manifest: bool) -> None:
self._install_sample_files() shutil.rmtree(Path(self.dirs.media_dir) / "documents")
install_document_samples(Path(self.dirs.media_dir) / "documents")
DocumentBarcodeFactory(document=self.d1, value="https://example.com") DocumentBarcodeFactory(document=self.d1, value="https://example.com")
DocumentBarcodeFactory(document=self.d2, page=2, value="DE8937") DocumentBarcodeFactory(document=self.d2, page=2, value="DE8937")
@@ -863,7 +863,8 @@ class TestExportImport(
THEN: THEN:
- Documents can be imported again - Documents can be imported again
""" """
self._install_sample_files() shutil.rmtree(Path(self.dirs.media_dir) / "documents")
install_document_samples(Path(self.dirs.media_dir) / "documents")
self._do_export(use_folder_prefix=True) self._do_export(use_folder_prefix=True)
@@ -889,7 +890,8 @@ class TestExportImport(
THEN: THEN:
- Documents can be imported again - Documents can be imported again
""" """
self._install_sample_files() shutil.rmtree(Path(self.dirs.media_dir) / "documents")
install_document_samples(Path(self.dirs.media_dir) / "documents")
self._do_export(use_folder_prefix=True, split_manifest=True) self._do_export(use_folder_prefix=True, split_manifest=True)
@@ -915,7 +917,8 @@ class TestExportImport(
- ContentType & Permission objects are not deleted, db transaction rolled back - ContentType & Permission objects are not deleted, db transaction rolled back
""" """
self._install_sample_files() shutil.rmtree(Path(self.dirs.media_dir) / "documents")
install_document_samples(Path(self.dirs.media_dir) / "documents")
num_content_type_objects = ContentType.objects.count() num_content_type_objects = ContentType.objects.count()
num_permission_objects = Permission.objects.count() num_permission_objects = Permission.objects.count()
@@ -951,7 +954,8 @@ class TestExportImport(
self.assertEqual(Permission.objects.count(), num_permission_objects + 1) self.assertEqual(Permission.objects.count(), num_permission_objects + 1)
def test_exporter_with_auditlog_disabled(self) -> None: def test_exporter_with_auditlog_disabled(self) -> None:
self._install_sample_files() shutil.rmtree(Path(self.dirs.media_dir) / "documents")
install_document_samples(Path(self.dirs.media_dir) / "documents")
with override_settings( with override_settings(
AUDIT_LOG_ENABLED=False, AUDIT_LOG_ENABLED=False,
@@ -970,7 +974,8 @@ class TestExportImport(
- The soft-deleted document, note, and custom field instance - The soft-deleted document, note, and custom field instance
survive the round-trip with deleted_at preserved survive the round-trip with deleted_at preserved
""" """
self._install_sample_files() shutil.rmtree(Path(self.dirs.media_dir) / "documents")
install_document_samples(Path(self.dirs.media_dir) / "documents")
# d1 has self.note and self.cfi1 attached via setUp # d1 has self.note and self.cfi1 attached via setUp
self.d1.delete() self.d1.delete()
@@ -19,10 +19,6 @@ class TestFuzzyMatchCommand(TestCase):
call_command( call_command(
"document_fuzzy_match", "document_fuzzy_match",
"--no-progress-bar", "--no-progress-bar",
# The default scales with the CPU count and forks, which closes
# the test's database connection on PostgreSQL
"--processes",
"1",
*args, *args,
stdout=stdout, stdout=stdout,
stderr=stderr, stderr=stderr,
@@ -425,29 +425,26 @@ class TestRetaggerStoragePath(DirectoriesMixin):
@pytest.mark.management @pytest.mark.management
@pytest.mark.django_db @pytest.mark.django_db
class TestRetaggerIdRange(DirectoriesMixin): class TestRetaggerIdRange(DirectoriesMixin):
@pytest.mark.usefixtures("documents")
@pytest.mark.parametrize( @pytest.mark.parametrize(
("range_end", "expected_count"), ("id_range_args", "expected_count"),
[ [
pytest.param("second", 1, id="narrow_range_limits_scope"), pytest.param(["1", "2"], 1, id="narrow_range_limits_scope"),
pytest.param("extra", 2, id="wide_range_tags_all_matches"), pytest.param(["1", "9999"], 2, id="wide_range_tags_all_matches"),
], ],
) )
def test_id_range_limits_scope( def test_id_range_limits_scope(
self, self,
tags: TagTuple, tags: TagTuple,
documents: DocumentTuple, id_range_args: list[str],
range_end: str,
expected_count: int, expected_count: int,
) -> None: ) -> None:
first, second, *_ = documents DocumentFactory(content="NOT the first document")
extra = DocumentFactory(content="NOT the first document")
end = {"second": second, "extra": extra}[range_end]
call_command( call_command(
"document_retagger", "document_retagger",
"--tags", "--tags",
"--id-range", "--id-range",
str(first.pk), *id_range_args,
str(end.pk),
skip_checks=True, skip_checks=True,
) )
tag_first, *_ = tags tag_first, *_ = tags
@@ -572,7 +572,7 @@ class TestAiChatAllDocumentsPermissionBoundary:
ENDPOINT = "/api/documents/chat/" ENDPOINT = "/api/documents/chat/"
@override_settings(AI_ENABLED=True) @override_settings(AI_ENABLED=True)
@patch("documents.views.stream_chat_with_documents") @patch("paperless_ai.chat.stream_chat_with_documents")
def test_chat_all_documents_excludes_unshared_document(self, mock_stream_chat): def test_chat_all_documents_excludes_unshared_document(self, mock_stream_chat):
mock_stream_chat.return_value = iter([b"data"]) mock_stream_chat.return_value = iter([b"data"])
+4 -4
View File
@@ -322,7 +322,7 @@ class TestUpdateContent(DirectoriesMixin, TestCase):
) )
@override_settings(AI_ENABLED=True, LLM_EMBEDDING_BACKEND="huggingface") @override_settings(AI_ENABLED=True, LLM_EMBEDDING_BACKEND="huggingface")
@mock.patch("documents.tasks.llm_index_add_or_update_document") @mock.patch("paperless_ai.indexing.llm_index_add_or_update_document")
@mock.patch("documents.search.get_backend") @mock.patch("documents.search.get_backend")
def test_update_content_version_updates_llm_index( def test_update_content_version_updates_llm_index(
self, self,
@@ -450,7 +450,7 @@ class TestAIIndex(DirectoriesMixin, TestCase):
checksum="wow", checksum="wow",
) )
with mock.patch( with mock.patch(
"documents.tasks.llm_index_add_or_update_document", "paperless_ai.indexing.llm_index_add_or_update_document",
) as llm_index_add_or_update_document: ) as llm_index_add_or_update_document:
tasks.update_document_in_llm_index(doc) tasks.update_document_in_llm_index(doc)
llm_index_add_or_update_document.assert_called_once_with(doc) llm_index_add_or_update_document.assert_called_once_with(doc)
@@ -470,7 +470,7 @@ class TestAIIndex(DirectoriesMixin, TestCase):
checksum="wow", checksum="wow",
) )
with mock.patch( with mock.patch(
"documents.tasks.llm_index_remove_document", "paperless_ai.indexing.llm_index_remove_document",
) as llm_index_remove_document: ) as llm_index_remove_document:
tasks.remove_document_from_llm_index(doc) tasks.remove_document_from_llm_index(doc)
llm_index_remove_document.assert_called_once_with(doc) llm_index_remove_document.assert_called_once_with(doc)
@@ -495,7 +495,7 @@ class TestAIIndex(DirectoriesMixin, TestCase):
"documents.tasks.update_document_in_llm_index", "documents.tasks.update_document_in_llm_index",
) as update_document_in_llm_index, ) as update_document_in_llm_index,
mock.patch( mock.patch(
"documents.tasks.update_llm_index", "paperless_ai.indexing.update_llm_index",
) as update_llm_index, ) as update_llm_index,
): ):
doc_ids = [doc.pk for doc in docs] doc_ids = [doc.pk for doc in docs]
+16 -16
View File
@@ -474,7 +474,7 @@ class TestAISuggestions(DirectoriesMixin, TestCase):
self.assertEqual(response.json()["tags"], []) self.assertEqual(response.json()["tags"], [])
self.assertEqual(response.json()["suggested_tags"], []) self.assertEqual(response.json()["suggested_tags"], [])
@patch("documents.views.get_ai_document_classification") @patch("paperless_ai.ai_classifier.get_ai_document_classification")
@override_settings( @override_settings(
AI_ENABLED=True, AI_ENABLED=True,
LLM_BACKEND="mock_backend", LLM_BACKEND="mock_backend",
@@ -524,7 +524,7 @@ class TestAISuggestions(DirectoriesMixin, TestCase):
None, None,
) )
@patch("documents.views.get_ai_document_classification") @patch("paperless_ai.ai_classifier.get_ai_document_classification")
@override_settings( @override_settings(
AI_ENABLED=True, AI_ENABLED=True,
LLM_BACKEND="mock_backend", LLM_BACKEND="mock_backend",
@@ -562,7 +562,7 @@ class TestAISuggestions(DirectoriesMixin, TestCase):
"KI Title", "KI Title",
) )
@patch("documents.views.get_ai_document_classification") @patch("paperless_ai.ai_classifier.get_ai_document_classification")
@override_settings( @override_settings(
AI_ENABLED=True, AI_ENABLED=True,
LLM_BACKEND="mock_backend", LLM_BACKEND="mock_backend",
@@ -601,7 +601,7 @@ class TestAISuggestions(DirectoriesMixin, TestCase):
"Titre IA", "Titre IA",
) )
@patch("documents.views.get_ai_document_classification") @patch("paperless_ai.ai_classifier.get_ai_document_classification")
@override_settings( @override_settings(
AI_ENABLED=True, AI_ENABLED=True,
LLM_BACKEND="mock_backend", LLM_BACKEND="mock_backend",
@@ -637,7 +637,7 @@ class TestAISuggestions(DirectoriesMixin, TestCase):
), ),
) )
@patch("documents.views.get_ai_document_classification") @patch("paperless_ai.ai_classifier.get_ai_document_classification")
@override_settings( @override_settings(
AI_ENABLED=True, AI_ENABLED=True,
LLM_BACKEND="mock_backend", LLM_BACKEND="mock_backend",
@@ -709,7 +709,7 @@ class TestAISuggestions(DirectoriesMixin, TestCase):
), ),
) )
@patch("documents.views.get_ai_document_classification") @patch("paperless_ai.ai_classifier.get_ai_document_classification")
@override_settings( @override_settings(
AI_ENABLED=True, AI_ENABLED=True,
LLM_BACKEND="openai-like", LLM_BACKEND="openai-like",
@@ -738,7 +738,7 @@ class TestAISuggestions(DirectoriesMixin, TestCase):
get_llm_suggestion_cache(self.document.pk, backend="openai-like"), get_llm_suggestion_cache(self.document.pk, backend="openai-like"),
) )
@patch("documents.views.get_ai_document_classification") @patch("paperless_ai.ai_classifier.get_ai_document_classification")
@override_settings( @override_settings(
AI_ENABLED=True, AI_ENABLED=True,
LLM_BACKEND="openai-like", LLM_BACKEND="openai-like",
@@ -765,7 +765,7 @@ class TestAISuggestions(DirectoriesMixin, TestCase):
get_llm_suggestion_cache(self.document.pk, backend="openai-like"), get_llm_suggestion_cache(self.document.pk, backend="openai-like"),
) )
@patch("documents.views.get_ai_document_classification") @patch("paperless_ai.ai_classifier.get_ai_document_classification")
@override_settings( @override_settings(
AI_ENABLED=True, AI_ENABLED=True,
LLM_BACKEND="openai-like", LLM_BACKEND="openai-like",
@@ -797,7 +797,7 @@ class TestAISuggestions(DirectoriesMixin, TestCase):
get_llm_suggestion_cache(self.document.pk, backend="openai-like"), get_llm_suggestion_cache(self.document.pk, backend="openai-like"),
) )
@patch("documents.views.get_ai_document_classification") @patch("paperless_ai.ai_classifier.get_ai_document_classification")
@override_settings( @override_settings(
AI_ENABLED=True, AI_ENABLED=True,
LLM_BACKEND="mock_backend", LLM_BACKEND="mock_backend",
@@ -835,7 +835,7 @@ class TestAISuggestions(DirectoriesMixin, TestCase):
self.assertEqual(response.json()["tags"], [self.tag1.pk]) self.assertEqual(response.json()["tags"], [self.tag1.pk])
self.assertEqual(response.json()["suggested_tags"], ["Follow-up"]) self.assertEqual(response.json()["suggested_tags"], ["Follow-up"])
@patch("documents.views.get_ai_document_classification") @patch("paperless_ai.ai_classifier.get_ai_document_classification")
@override_settings( @override_settings(
AI_ENABLED=True, AI_ENABLED=True,
LLM_BACKEND="mock_backend", LLM_BACKEND="mock_backend",
@@ -874,7 +874,7 @@ class TestAISuggestions(DirectoriesMixin, TestCase):
self.assertEqual(response.json()["tags"], [self.tag1.pk]) self.assertEqual(response.json()["tags"], [self.tag1.pk])
self.assertEqual(response.json()["suggested_tags"], []) self.assertEqual(response.json()["suggested_tags"], [])
@patch("documents.views.get_ai_document_classification") @patch("paperless_ai.ai_classifier.get_ai_document_classification")
@override_settings( @override_settings(
AI_ENABLED=True, AI_ENABLED=True,
LLM_BACKEND="mock_backend", LLM_BACKEND="mock_backend",
@@ -996,7 +996,7 @@ class TestAIChatStreamingView(DirectoriesMixin, TestCase):
self.assertEqual(response.status_code, 400) self.assertEqual(response.status_code, 400)
self.assertIn(b"AI is required for this feature", response.content) self.assertIn(b"AI is required for this feature", response.content)
@patch("documents.views.stream_chat_with_documents") @patch("paperless_ai.chat.stream_chat_with_documents")
@patch("documents.views.permitted_document_ids") @patch("documents.views.permitted_document_ids")
@override_settings(AI_ENABLED=True) @override_settings(AI_ENABLED=True)
def test_post_no_document_id(self, mock_permitted_ids, mock_stream_chat) -> None: def test_post_no_document_id(self, mock_permitted_ids, mock_stream_chat) -> None:
@@ -1016,7 +1016,7 @@ class TestAIChatStreamingView(DirectoriesMixin, TestCase):
self.assertEqual(list(call_kwargs["documents"]), [self.document]) self.assertEqual(list(call_kwargs["documents"]), [self.document])
self.assertIsNone(call_kwargs["output_language"]) self.assertIsNone(call_kwargs["output_language"])
@patch("documents.views.stream_chat_with_documents") @patch("paperless_ai.chat.stream_chat_with_documents")
@patch("documents.views.permitted_document_ids") @patch("documents.views.permitted_document_ids")
@override_settings(AI_ENABLED=True) @override_settings(AI_ENABLED=True)
def test_post_uses_user_display_language( def test_post_uses_user_display_language(
@@ -1042,7 +1042,7 @@ class TestAIChatStreamingView(DirectoriesMixin, TestCase):
self.assertEqual(list(call_kwargs["documents"]), [self.document]) self.assertEqual(list(call_kwargs["documents"]), [self.document])
self.assertEqual(call_kwargs["output_language"], "de-de") self.assertEqual(call_kwargs["output_language"], "de-de")
@patch("documents.views.stream_chat_with_documents") @patch("paperless_ai.chat.stream_chat_with_documents")
@override_settings(AI_ENABLED=True) @override_settings(AI_ENABLED=True)
def test_post_with_document_id(self, mock_stream_chat) -> None: def test_post_with_document_id(self, mock_stream_chat) -> None:
self.grant_view_document_permission() self.grant_view_document_permission()
@@ -1079,7 +1079,7 @@ class TestAIChatStreamingView(DirectoriesMixin, TestCase):
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
self.assertIn(b"Insufficient permissions", response.content) self.assertIn(b"Insufficient permissions", response.content)
@patch("documents.views.stream_chat_with_documents") @patch("paperless_ai.chat.stream_chat_with_documents")
@override_settings(AI_ENABLED=True) @override_settings(AI_ENABLED=True)
def test_post_no_document_id_requires_view_document_permission( def test_post_no_document_id_requires_view_document_permission(
self, self,
@@ -1093,7 +1093,7 @@ class TestAIChatStreamingView(DirectoriesMixin, TestCase):
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
mock_stream_chat.assert_not_called() mock_stream_chat.assert_not_called()
@patch("documents.views.stream_chat_with_documents") @patch("paperless_ai.chat.stream_chat_with_documents")
@override_settings(AI_ENABLED=True) @override_settings(AI_ENABLED=True)
def test_post_with_document_id_requires_view_document_permission( def test_post_with_document_id_requires_view_document_permission(
self, self,
+3 -3
View File
@@ -174,8 +174,8 @@ class TestWorkflows(
w.save() w.save()
self.assertEqual(w.__str__(), "Workflow: Workflow 1") self.assertEqual(w.__str__(), "Workflow: Workflow 1")
self.assertEqual(trigger.__str__(), f"WorkflowTrigger {trigger.pk}") self.assertEqual(trigger.__str__(), "WorkflowTrigger 1")
self.assertEqual(action.__str__(), f"WorkflowAction {action.pk}") self.assertEqual(action.__str__(), "WorkflowAction 1")
test_file = shutil.copy( test_file = shutil.copy(
self.SIMPLE_PDF, self.SIMPLE_PDF,
@@ -433,7 +433,7 @@ class TestWorkflows(
list(document.tags.all()), list(document.tags.all()),
[self.t1, self.t2, self.t3], [self.t1, self.t2, self.t3],
) )
self.assertCountEqual( self.assertEqual(
list( list(
get_users_with_perms( get_users_with_perms(
document, document,
Loaded 100 of 167 files, more files were not shown because too many files have changed in this diff. Show more