mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-11-25 23:59:09 -06:00
Compare commits
3 Commits
dependabot
...
l10n_dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a49e2a3db8 | ||
|
|
1e61a6cd6a | ||
|
|
a76731ca89 |
@@ -8,14 +8,17 @@ ARG DEBIAN_FRONTEND=noninteractive
|
|||||||
ARG TARGETARCH
|
ARG TARGETARCH
|
||||||
|
|
||||||
# Can be workflow provided, defaults set for manual building
|
# Can be workflow provided, defaults set for manual building
|
||||||
ARG JBIG2ENC_VERSION=0.29
|
ARG JBIG2ENC_VERSION=0.30
|
||||||
|
|
||||||
# Set Python environment variables
|
# Set Python environment variables
|
||||||
ENV PYTHONDONTWRITEBYTECODE=1 \
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
||||||
PYTHONUNBUFFERED=1 \
|
PYTHONUNBUFFERED=1 \
|
||||||
# Ignore warning from Whitenoise
|
# Ignore warning from Whitenoise
|
||||||
PYTHONWARNINGS="ignore:::django.http.response:517" \
|
PYTHONWARNINGS="ignore:::django.http.response:517" \
|
||||||
PNGX_CONTAINERIZED=1
|
PNGX_CONTAINERIZED=1 \
|
||||||
|
# https://docs.astral.sh/uv/reference/settings/#link-mode
|
||||||
|
UV_LINK_MODE=copy \
|
||||||
|
UV_CACHE_DIR=/cache/uv/
|
||||||
|
|
||||||
#
|
#
|
||||||
# Begin installation and configuration
|
# Begin installation and configuration
|
||||||
@@ -81,7 +84,7 @@ RUN set -eux \
|
|||||||
&& apt-get update \
|
&& apt-get update \
|
||||||
&& apt-get install --yes --quiet ${PYTHON_PACKAGES}
|
&& apt-get install --yes --quiet ${PYTHON_PACKAGES}
|
||||||
|
|
||||||
COPY --from=ghcr.io/astral-sh/uv:0.7.8 /uv /bin/uv
|
COPY --from=ghcr.io/astral-sh/uv:0.9.10 /uv /bin/uv
|
||||||
|
|
||||||
|
|
||||||
RUN set -eux \
|
RUN set -eux \
|
||||||
@@ -103,6 +106,7 @@ COPY [ \
|
|||||||
|
|
||||||
RUN set -eux \
|
RUN set -eux \
|
||||||
&& echo "Configuring ImageMagick" \
|
&& echo "Configuring ImageMagick" \
|
||||||
|
&& mkdir -p /etc/ImageMagick-6 \
|
||||||
&& mv paperless-policy.xml /etc/ImageMagick-6/policy.xml
|
&& mv paperless-policy.xml /etc/ImageMagick-6/policy.xml
|
||||||
|
|
||||||
|
|
||||||
@@ -118,7 +122,7 @@ ARG BUILD_PACKAGES="\
|
|||||||
pkg-config"
|
pkg-config"
|
||||||
|
|
||||||
# hadolint ignore=DL3042
|
# hadolint ignore=DL3042
|
||||||
RUN --mount=type=cache,target=/root/.cache/uv,id=pip-cache \
|
RUN --mount=type=cache,target=/cache/uv/,id=uv-cache \
|
||||||
set -eux \
|
set -eux \
|
||||||
&& echo "Installing build system packages" \
|
&& echo "Installing build system packages" \
|
||||||
&& apt-get update \
|
&& apt-get update \
|
||||||
|
|||||||
@@ -892,7 +892,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/admin/logs/logs.component.html</context>
|
<context context-type="sourcefile">src/app/components/admin/logs/logs.component.html</context>
|
||||||
<context context-type="linenumber">60</context>
|
<context context-type="linenumber">60</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Jump to bottom</target>
|
<target state="translated">Vés al final</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="1255048712725285892" datatype="html">
|
<trans-unit id="1255048712725285892" datatype="html">
|
||||||
<source>Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>.</source>
|
<source>Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>.</source>
|
||||||
|
|||||||
@@ -6222,7 +6222,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/common/pdf-editor/pdf-editor.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/pdf-editor/pdf-editor.component.html</context>
|
||||||
<context context-type="linenumber">9</context>
|
<context context-type="linenumber">9</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Select all pages</target>
|
<target state="translated">모든 페이지 선택</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="234610397929376642" datatype="html">
|
<trans-unit id="234610397929376642" datatype="html">
|
||||||
<source>Deselect all pages</source>
|
<source>Deselect all pages</source>
|
||||||
@@ -6230,7 +6230,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/common/pdf-editor/pdf-editor.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/pdf-editor/pdf-editor.component.html</context>
|
||||||
<context context-type="linenumber">12</context>
|
<context context-type="linenumber">12</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Deselect all pages</target>
|
<target state="translated">모든 페이지 선택 해제</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="2530246103796817298" datatype="html">
|
<trans-unit id="2530246103796817298" datatype="html">
|
||||||
<source>Rotate selected pages counter-clockwise</source>
|
<source>Rotate selected pages counter-clockwise</source>
|
||||||
@@ -6238,7 +6238,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/common/pdf-editor/pdf-editor.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/pdf-editor/pdf-editor.component.html</context>
|
||||||
<context context-type="linenumber">17</context>
|
<context context-type="linenumber">17</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Rotate selected pages counter-clockwise</target>
|
<target state="translated">선택한 페이지 반시계방향으로 회전</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="4787219034890830544" datatype="html">
|
<trans-unit id="4787219034890830544" datatype="html">
|
||||||
<source>Rotate selected pages clockwise</source>
|
<source>Rotate selected pages clockwise</source>
|
||||||
@@ -6246,7 +6246,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/common/pdf-editor/pdf-editor.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/pdf-editor/pdf-editor.component.html</context>
|
||||||
<context context-type="linenumber">20</context>
|
<context context-type="linenumber">20</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Rotate selected pages clockwise</target>
|
<target state="translated">선택한 페이지 시계방향으로 회전</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="3441043765105475130" datatype="html">
|
<trans-unit id="3441043765105475130" datatype="html">
|
||||||
<source>Delete selected pages</source>
|
<source>Delete selected pages</source>
|
||||||
@@ -6254,7 +6254,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/common/pdf-editor/pdf-editor.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/pdf-editor/pdf-editor.component.html</context>
|
||||||
<context context-type="linenumber">23</context>
|
<context context-type="linenumber">23</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Delete selected pages</target>
|
<target state="translated">선택한 페이지 삭제</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="3873740163706409154" datatype="html">
|
<trans-unit id="3873740163706409154" datatype="html">
|
||||||
<source>Rotate page counter-clockwise</source>
|
<source>Rotate page counter-clockwise</source>
|
||||||
@@ -6994,7 +6994,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/common/system-status-dialog/system-status-dialog.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/system-status-dialog/system-status-dialog.component.html</context>
|
||||||
<context context-type="linenumber">105</context>
|
<context context-type="linenumber">105</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Tasks Queue</target>
|
<target state="translated">작업 대기열</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="6911698235105017958" datatype="html">
|
<trans-unit id="6911698235105017958" datatype="html">
|
||||||
<source>Redis Status</source>
|
<source>Redis Status</source>
|
||||||
@@ -7042,7 +7042,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/common/system-status-dialog/system-status-dialog.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/system-status-dialog/system-status-dialog.component.html</context>
|
||||||
<context context-type="linenumber">245</context>
|
<context context-type="linenumber">245</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Run Task</target>
|
<target state="translated">작업 실행</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="4089509911694721896" datatype="html">
|
<trans-unit id="4089509911694721896" datatype="html">
|
||||||
<source>Last Updated</source>
|
<source>Last Updated</source>
|
||||||
@@ -7090,7 +7090,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/common/system-status-dialog/system-status-dialog.component.html</context>
|
<context context-type="sourcefile">src/app/components/common/system-status-dialog/system-status-dialog.component.html</context>
|
||||||
<context context-type="linenumber">257</context>
|
<context context-type="linenumber">257</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">WebSocket Connection</target>
|
<target state="translated">WebSocket 연결</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="8998179362936748717" datatype="html">
|
<trans-unit id="8998179362936748717" datatype="html">
|
||||||
<source>OK</source>
|
<source>OK</source>
|
||||||
@@ -7480,7 +7480,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">58</context>
|
<context context-type="linenumber">58</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Print</target>
|
<target state="translated">인쇄</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="1418444397960583910" datatype="html">
|
<trans-unit id="1418444397960583910" datatype="html">
|
||||||
<source>More like this</source>
|
<source>More like this</source>
|
||||||
@@ -8036,7 +8036,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">1096</context>
|
<context context-type="linenumber">1096</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Error downloading document</target>
|
<target state="translated">문서 다운로드 중 오류 발생</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="4458954481601077369" datatype="html">
|
<trans-unit id="4458954481601077369" datatype="html">
|
||||||
<source>Page Fit</source>
|
<source>Page Fit</source>
|
||||||
@@ -8068,7 +8068,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">1460</context>
|
<context context-type="linenumber">1460</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Print failed.</target>
|
<target state="translated">인쇄 실패.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="6457245677384603573" datatype="html">
|
<trans-unit id="6457245677384603573" datatype="html">
|
||||||
<source>Error loading document for printing.</source>
|
<source>Error loading document for printing.</source>
|
||||||
@@ -9848,7 +9848,7 @@
|
|||||||
<context context-type="sourcefile">src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html</context>
|
<context context-type="sourcefile">src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html</context>
|
||||||
<context context-type="linenumber">33</context>
|
<context context-type="linenumber">33</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
<target state="needs-translation">Received</target>
|
<target state="translated">받음</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="4749295647449765550" datatype="html">
|
<trans-unit id="4749295647449765550" datatype="html">
|
||||||
<source>Processed</source>
|
<source>Processed</source>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -3,7 +3,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: paperless-ngx\n"
|
"Project-Id-Version: paperless-ngx\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-11-14 16:09+0000\n"
|
"POT-Creation-Date: 2025-11-14 16:09+0000\n"
|
||||||
"PO-Revision-Date: 2025-11-20 00:35\n"
|
"PO-Revision-Date: 2025-11-24 12:15\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: Catalan\n"
|
"Language-Team: Catalan\n"
|
||||||
"Language: ca_ES\n"
|
"Language: ca_ES\n"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: paperless-ngx\n"
|
"Project-Id-Version: paperless-ngx\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-11-14 16:09+0000\n"
|
"POT-Creation-Date: 2025-11-14 16:09+0000\n"
|
||||||
"PO-Revision-Date: 2025-11-14 16:11\n"
|
"PO-Revision-Date: 2025-11-25 00:35\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: Korean\n"
|
"Language-Team: Korean\n"
|
||||||
"Language: ko_KR\n"
|
"Language: ko_KR\n"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: paperless-ngx\n"
|
"Project-Id-Version: paperless-ngx\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-11-14 16:09+0000\n"
|
"POT-Creation-Date: 2025-11-14 16:09+0000\n"
|
||||||
"PO-Revision-Date: 2025-11-21 23:54\n"
|
"PO-Revision-Date: 2025-11-25 12:16\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: Turkish\n"
|
"Language-Team: Turkish\n"
|
||||||
"Language: tr_TR\n"
|
"Language: tr_TR\n"
|
||||||
|
|||||||
@@ -38,10 +38,19 @@ def handle_social_account_updated(sender, request, sociallogin, **kwargs):
|
|||||||
"""
|
"""
|
||||||
from django.contrib.auth.models import Group
|
from django.contrib.auth.models import Group
|
||||||
|
|
||||||
social_account_groups = sociallogin.account.extra_data.get(
|
extra_data = sociallogin.account.extra_data or {}
|
||||||
|
social_account_groups = extra_data.get(
|
||||||
"groups",
|
"groups",
|
||||||
[],
|
[],
|
||||||
) # None if not found
|
) # pre-allauth 65.11.0 structure
|
||||||
|
|
||||||
|
if not social_account_groups:
|
||||||
|
# allauth 65.11.0+ nests claims under `userinfo`/`id_token`
|
||||||
|
social_account_groups = (
|
||||||
|
extra_data.get("userinfo", {}).get("groups")
|
||||||
|
or extra_data.get("id_token", {}).get("groups")
|
||||||
|
or []
|
||||||
|
)
|
||||||
if settings.SOCIAL_ACCOUNT_SYNC_GROUPS and social_account_groups is not None:
|
if settings.SOCIAL_ACCOUNT_SYNC_GROUPS and social_account_groups is not None:
|
||||||
groups = Group.objects.filter(name__in=social_account_groups)
|
groups = Group.objects.filter(name__in=social_account_groups)
|
||||||
logger.debug(
|
logger.debug(
|
||||||
|
|||||||
@@ -192,6 +192,68 @@ class TestSyncSocialLoginGroups(TestCase):
|
|||||||
)
|
)
|
||||||
self.assertEqual(list(user.groups.all()), [])
|
self.assertEqual(list(user.groups.all()), [])
|
||||||
|
|
||||||
|
@override_settings(SOCIAL_ACCOUNT_SYNC_GROUPS=True)
|
||||||
|
def test_userinfo_groups(self):
|
||||||
|
"""
|
||||||
|
GIVEN:
|
||||||
|
- Enabled group syncing, and `groups` nested under `userinfo`
|
||||||
|
WHEN:
|
||||||
|
- The social login is updated via signal after login
|
||||||
|
THEN:
|
||||||
|
- The user's groups are updated using `userinfo.groups`
|
||||||
|
"""
|
||||||
|
group = Group.objects.create(name="group1")
|
||||||
|
user = User.objects.create_user(username="testuser")
|
||||||
|
sociallogin = Mock(
|
||||||
|
user=user,
|
||||||
|
account=Mock(
|
||||||
|
extra_data={
|
||||||
|
"userinfo": {
|
||||||
|
"groups": ["group1"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
handle_social_account_updated(
|
||||||
|
sender=None,
|
||||||
|
request=HttpRequest(),
|
||||||
|
sociallogin=sociallogin,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(list(user.groups.all()), [group])
|
||||||
|
|
||||||
|
@override_settings(SOCIAL_ACCOUNT_SYNC_GROUPS=True)
|
||||||
|
def test_id_token_groups_fallback(self):
|
||||||
|
"""
|
||||||
|
GIVEN:
|
||||||
|
- Enabled group syncing, and `groups` only under `id_token`
|
||||||
|
WHEN:
|
||||||
|
- The social login is updated via signal after login
|
||||||
|
THEN:
|
||||||
|
- The user's groups are updated using `id_token.groups`
|
||||||
|
"""
|
||||||
|
group = Group.objects.create(name="group1")
|
||||||
|
user = User.objects.create_user(username="testuser")
|
||||||
|
sociallogin = Mock(
|
||||||
|
user=user,
|
||||||
|
account=Mock(
|
||||||
|
extra_data={
|
||||||
|
"id_token": {
|
||||||
|
"groups": ["group1"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
handle_social_account_updated(
|
||||||
|
sender=None,
|
||||||
|
request=HttpRequest(),
|
||||||
|
sociallogin=sociallogin,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(list(user.groups.all()), [group])
|
||||||
|
|
||||||
|
|
||||||
class TestUserGroupDeletionCleanup(TestCase):
|
class TestUserGroupDeletionCleanup(TestCase):
|
||||||
"""
|
"""
|
||||||
|
|||||||
6
uv.lock
generated
6
uv.lock
generated
@@ -839,14 +839,14 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "django-soft-delete"
|
name = "django-soft-delete"
|
||||||
version = "1.0.22"
|
version = "1.0.21"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
|
{ name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/98/d1/c990b731676f93bd4594dee4b5133df52f5d0eee1eb8a969b4030014ac54/django_soft_delete-1.0.22.tar.gz", hash = "sha256:32d0bb95f180c28a40163e78a558acc18901fd56011f91f8ee735c171a6d4244", size = 21982, upload-time = "2025-10-25T13:11:46.199Z" }
|
sdist = { url = "https://files.pythonhosted.org/packages/da/bf/13996c18bffee3bbcf294830c1737bfb5564164b8319c51e6714b6bdf783/django_soft_delete-1.0.21.tar.gz", hash = "sha256:542bd4650d2769105a4363ea7bb7fbdb3c28429dbaa66417160f8f4b5dc689d5", size = 21153, upload-time = "2025-09-17T08:46:30.476Z" }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/f5/c2/fca2bf69b7ca7e18aed9ac059e89f1043663e207a514e8fb652450e49631/django_soft_delete-1.0.22-py3-none-any.whl", hash = "sha256:81973c541d21452d249151085d617ebbfb5ec463899f47cd6b1306677481e94c", size = 19221, upload-time = "2025-10-25T13:11:44.755Z" },
|
{ url = "https://files.pythonhosted.org/packages/fa/e6/8f4fed14499c63e35ca33cf9f424ad2e14e963ec5545594d7c7dc2f710f4/django_soft_delete-1.0.21-py3-none-any.whl", hash = "sha256:dd91e671d9d431ff96f4db727ce03e7fbb4008ae4541b1d162d5d06cc9becd2a", size = 18681, upload-time = "2025-09-17T08:46:29.272Z" },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|||||||
Reference in New Issue
Block a user