mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-08-03 01:22:17 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6d249b4932 | ||
|
|
371c4f57d3 |
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "paperless-ngx"
|
name = "paperless-ngx"
|
||||||
version = "3.0.1"
|
version = "3.0.2"
|
||||||
description = "A community-supported supercharged document management system: scan, index and archive all your physical documents"
|
description = "A community-supported supercharged document management system: scan, index and archive all your physical documents"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "paperless-ngx-ui",
|
"name": "paperless-ngx-ui",
|
||||||
"version": "3.0.1",
|
"version": "3.0.2",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"preinstall": "npx only-allow pnpm",
|
"preinstall": "npx only-allow pnpm",
|
||||||
"ng": "ng",
|
"ng": "ng",
|
||||||
|
|||||||
@@ -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.0.1',
|
version: '3.0.2',
|
||||||
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/',
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from typing import Final
|
from typing import Final
|
||||||
|
|
||||||
__version__: Final[tuple[int, int, int]] = (3, 0, 1)
|
__version__: Final[tuple[int, int, int]] = (3, 0, 2)
|
||||||
# Version string like X.Y.Z
|
# Version string like X.Y.Z
|
||||||
__full_version_str__: Final[str] = ".".join(map(str, __version__))
|
__full_version_str__: Final[str] = ".".join(map(str, __version__))
|
||||||
# Version string like X.Y
|
# Version string like X.Y
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
# Split out of 0002_optimize_integer_field_sizes.py into its own migration
|
|
||||||
# (own transaction). Running this UPDATE in the same transaction as the
|
|
||||||
# later ALTER TABLE on paperless_mail_mailrule can fail on PostgreSQL with
|
|
||||||
# "cannot ALTER TABLE because it has pending trigger events", since the
|
|
||||||
# update queues FK trigger events against that table that are still pending
|
|
||||||
# when the subsequent AlterField tries to rewrite it. Committing the clamp
|
|
||||||
# here first avoids that.
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
|
|
||||||
def clamp_mailrule_maximum_age(apps, schema_editor):
|
|
||||||
# Clamp the maximum_age field of MailRule because of PositiveIntegerField --> PositiveSmallIntegerField
|
|
||||||
MailRule = apps.get_model("paperless_mail", "MailRule")
|
|
||||||
MailRule.objects.filter(maximum_age__gt=32767).update(maximum_age=32767)
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
dependencies = [
|
|
||||||
("paperless_mail", "0001_squashed"),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RunPython(
|
|
||||||
clamp_mailrule_maximum_age,
|
|
||||||
migrations.RunPython.noop,
|
|
||||||
),
|
|
||||||
]
|
|
||||||
@@ -4,9 +4,19 @@ from django.db import migrations
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
|
def clamp_mailrule_maximum_age(apps, schema_editor):
|
||||||
|
# Clamp the maximum_age field of MailRule because of PositiveIntegerField --> PositiveSmallIntegerField
|
||||||
|
MailRule = apps.get_model("paperless_mail", "MailRule")
|
||||||
|
MailRule.objects.filter(maximum_age__gt=32767).update(maximum_age=32767)
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
# The data update must commit before PostgreSQL rewrites the table, otherwise
|
||||||
|
# pending foreign-key trigger events can block the subsequent ALTER TABLE.
|
||||||
|
atomic = False
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
("paperless_mail", "0001_1_clamp_mailrule_maximum_age"),
|
("paperless_mail", "0001_squashed"),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
@@ -112,6 +122,10 @@ class Migration(migrations.Migration):
|
|||||||
verbose_name="consumption scope",
|
verbose_name="consumption scope",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
migrations.RunPython(
|
||||||
|
clamp_mailrule_maximum_age,
|
||||||
|
migrations.RunPython.noop,
|
||||||
|
),
|
||||||
migrations.AlterField(
|
migrations.AlterField(
|
||||||
model_name="mailrule",
|
model_name="mailrule",
|
||||||
name="maximum_age",
|
name="maximum_age",
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
import importlib
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
def test_optimize_integer_fields_preserves_released_migration_history():
|
||||||
|
migration_module = importlib.import_module(
|
||||||
|
"paperless_mail.migrations.0002_optimize_integer_field_sizes",
|
||||||
|
)
|
||||||
|
|
||||||
|
assert migration_module.Migration.dependencies == [
|
||||||
|
("paperless_mail", "0001_squashed"),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def test_mailrule_maximum_age_is_clamped_before_non_atomic_alter():
|
||||||
|
migration_module = importlib.import_module(
|
||||||
|
"paperless_mail.migrations.0002_optimize_integer_field_sizes",
|
||||||
|
)
|
||||||
|
migration = migration_module.Migration
|
||||||
|
|
||||||
|
clamp_index = next(
|
||||||
|
index
|
||||||
|
for index, operation in enumerate(migration.operations)
|
||||||
|
if isinstance(operation, migrations.RunPython)
|
||||||
|
and operation.code is migration_module.clamp_mailrule_maximum_age
|
||||||
|
)
|
||||||
|
alter_index = next(
|
||||||
|
index
|
||||||
|
for index, operation in enumerate(migration.operations)
|
||||||
|
if isinstance(operation, migrations.AlterField)
|
||||||
|
and operation.model_name == "mailrule"
|
||||||
|
and operation.name == "maximum_age"
|
||||||
|
)
|
||||||
|
|
||||||
|
assert migration.atomic is False
|
||||||
|
assert clamp_index < alter_index
|
||||||
@@ -2880,7 +2880,7 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "paperless-ngx"
|
name = "paperless-ngx"
|
||||||
version = "3.0.1"
|
version = "3.0.2"
|
||||||
source = { virtual = "." }
|
source = { virtual = "." }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "azure-ai-documentintelligence", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
|
{ name = "azure-ai-documentintelligence", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
|
||||||
|
|||||||
Reference in New Issue
Block a user