mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-08-12 00:19:48 +00:00
![dependabot[bot]](/assets/img/avatar_default.png)
* Chore(deps): Bump the django group across 1 directory with 9 updates Bumps the django group with 9 updates in the / directory: | Package | From | To | | --- | --- | --- | | [django](https://github.com/django/django) | `5.1.8` | `5.2.5` | | [django-auditlog](https://github.com/jazzband/django-auditlog) | `3.1.2` | `3.2.1` | | [django-guardian](https://github.com/django-guardian/django-guardian) | `2.4.0` | `3.0.3` | | [django-multiselectfield](https://github.com/goinnn/django-multiselectfield) | `0.1.13` | `1.0.1` | | [django-soft-delete](https://github.com/san4ezy/django_softdelete) | `1.0.18` | `1.0.19` | | [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.0` | `3.16.1` | | [djangorestframework-guardian](https://github.com/rpkilby/django-rest-framework-guardian) | `0.3.0` | `0.4.0` | | [drf-spectacular-sidecar](https://github.com/tfranzel/drf-spectacular-sidecar) | `2025.4.1` | `2025.8.1` | | [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.10.0` | `4.11.1` | Updates `django` from 5.1.8 to 5.2.5 - [Commits](https://github.com/django/django/compare/5.1.8...5.2.5) Updates `django-auditlog` from 3.1.2 to 3.2.1 - [Release notes](https://github.com/jazzband/django-auditlog/releases) - [Changelog](https://github.com/jazzband/django-auditlog/blob/master/CHANGELOG.md) - [Commits](https://github.com/jazzband/django-auditlog/compare/v3.1.2...v3.2.1) Updates `django-guardian` from 2.4.0 to 3.0.3 - [Release notes](https://github.com/django-guardian/django-guardian/releases) - [Commits](https://github.com/django-guardian/django-guardian/compare/v2.4.0...3.0.3) Updates `django-multiselectfield` from 0.1.13 to 1.0.1 - [Release notes](https://github.com/goinnn/django-multiselectfield/releases) - [Changelog](https://github.com/goinnn/django-multiselectfield/blob/master/CHANGES.rst) - [Commits](https://github.com/goinnn/django-multiselectfield/compare/v0.1.13...v1.0.1) Updates `django-soft-delete` from 1.0.18 to 1.0.19 - [Changelog](https://github.com/san4ezy/django_softdelete/blob/master/CHANGELOG.md) - [Commits](https://github.com/san4ezy/django_softdelete/commits) Updates `djangorestframework` from 3.16.0 to 3.16.1 - [Release notes](https://github.com/encode/django-rest-framework/releases) - [Commits](https://github.com/encode/django-rest-framework/compare/3.16.0...3.16.1) Updates `djangorestframework-guardian` from 0.3.0 to 0.4.0 - [Changelog](https://github.com/rpkilby/django-rest-framework-guardian/blob/master/CHANGELOG) - [Commits](https://github.com/rpkilby/django-rest-framework-guardian/compare/0.3.0...0.4.0) Updates `drf-spectacular-sidecar` from 2025.4.1 to 2025.8.1 - [Commits](https://github.com/tfranzel/drf-spectacular-sidecar/compare/2025.4.1...2025.8.1) Updates `pytest-django` from 4.10.0 to 4.11.1 - [Release notes](https://github.com/pytest-dev/pytest-django/releases) - [Changelog](https://github.com/pytest-dev/pytest-django/blob/main/docs/changelog.rst) - [Commits](https://github.com/pytest-dev/pytest-django/compare/v4.10.0...v4.11.1) --- updated-dependencies: - dependency-name: django dependency-version: 5.2.5 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: django - dependency-name: django-auditlog dependency-version: 3.2.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: django - dependency-name: django-guardian dependency-version: 3.0.3 dependency-type: direct:production update-type: version-update:semver-major dependency-group: django - dependency-name: django-multiselectfield dependency-version: 1.0.1 dependency-type: direct:production update-type: version-update:semver-major dependency-group: django - dependency-name: django-soft-delete dependency-version: 1.0.19 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: django - dependency-name: djangorestframework dependency-version: 3.16.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: django - dependency-name: djangorestframework-guardian dependency-version: 0.4.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: django - dependency-name: drf-spectacular-sidecar dependency-version: 2025.8.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: django - dependency-name: pytest-django dependency-version: 4.11.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: django ... Signed-off-by: dependabot[bot] <support@github.com> * Fix log matches related to newlines, add newlines to stdout.writelines * Fix disable api remote auth test, Django 5.2 no longer uses process_request * Remove postgres version check * Update administration.md * Handle django-multiselectfield v1.0 changes * Update administration.md --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
135 lines
5.1 KiB
Python
135 lines
5.1 KiB
Python
from documents.data_models import DocumentSource
|
|
from documents.tests.utils import TestMigrations
|
|
|
|
|
|
class TestMigrateWorkflow(TestMigrations):
|
|
migrate_from = "1043_alter_savedviewfilterrule_rule_type"
|
|
migrate_to = "1044_workflow_workflowaction_workflowtrigger_and_more"
|
|
dependencies = (
|
|
(
|
|
"paperless_mail",
|
|
"0029_mailrule_pdf_layout",
|
|
),
|
|
)
|
|
|
|
def setUpBeforeMigration(self, apps):
|
|
User = apps.get_model("auth", "User")
|
|
Group = apps.get_model("auth", "Group")
|
|
self.Permission = apps.get_model("auth", "Permission")
|
|
self.user = User.objects.create(username="user1")
|
|
self.group = Group.objects.create(name="group1")
|
|
permission = self.Permission.objects.get(codename="add_document")
|
|
self.user.user_permissions.add(permission.id)
|
|
self.group.permissions.add(permission.id)
|
|
|
|
# create a CT to migrate
|
|
c = apps.get_model("documents", "Correspondent").objects.create(
|
|
name="Correspondent Name",
|
|
)
|
|
dt = apps.get_model("documents", "DocumentType").objects.create(
|
|
name="DocType Name",
|
|
)
|
|
t1 = apps.get_model("documents", "Tag").objects.create(name="t1")
|
|
sp = apps.get_model("documents", "StoragePath").objects.create(path="/test/")
|
|
cf1 = apps.get_model("documents", "CustomField").objects.create(
|
|
name="Custom Field 1",
|
|
data_type="string",
|
|
)
|
|
ma = apps.get_model("paperless_mail", "MailAccount").objects.create(
|
|
name="MailAccount 1",
|
|
)
|
|
mr = apps.get_model("paperless_mail", "MailRule").objects.create(
|
|
name="MailRule 1",
|
|
order=0,
|
|
account=ma,
|
|
)
|
|
|
|
user2 = User.objects.create(username="user2")
|
|
user3 = User.objects.create(username="user3")
|
|
group2 = Group.objects.create(name="group2")
|
|
|
|
ConsumptionTemplate = apps.get_model("documents", "ConsumptionTemplate")
|
|
|
|
ct = ConsumptionTemplate.objects.create(
|
|
name="Template 1",
|
|
order=0,
|
|
sources=f"{DocumentSource.ApiUpload},{DocumentSource.ConsumeFolder},{DocumentSource.MailFetch}",
|
|
filter_filename="*simple*",
|
|
filter_path="*/samples/*",
|
|
filter_mailrule=mr,
|
|
assign_title="Doc from {correspondent}",
|
|
assign_correspondent=c,
|
|
assign_document_type=dt,
|
|
assign_storage_path=sp,
|
|
assign_owner=user2,
|
|
)
|
|
|
|
ct.assign_tags.add(t1)
|
|
ct.assign_view_users.add(user3)
|
|
ct.assign_view_groups.add(group2)
|
|
ct.assign_change_users.add(user3)
|
|
ct.assign_change_groups.add(group2)
|
|
ct.assign_custom_fields.add(cf1)
|
|
ct.save()
|
|
|
|
def test_users_with_add_documents_get_add_and_workflow_templates_get_migrated(self):
|
|
permission = self.Permission.objects.get(codename="add_workflow")
|
|
self.assertTrue(permission in self.user.user_permissions.all())
|
|
self.assertTrue(permission in self.group.permissions.all())
|
|
|
|
Workflow = self.apps.get_model("documents", "Workflow")
|
|
self.assertEqual(Workflow.objects.all().count(), 1)
|
|
|
|
|
|
class TestReverseMigrateWorkflow(TestMigrations):
|
|
migrate_from = "1044_workflow_workflowaction_workflowtrigger_and_more"
|
|
migrate_to = "1043_alter_savedviewfilterrule_rule_type"
|
|
|
|
def setUpBeforeMigration(self, apps):
|
|
User = apps.get_model("auth", "User")
|
|
Group = apps.get_model("auth", "Group")
|
|
self.Permission = apps.get_model("auth", "Permission")
|
|
self.user = User.objects.create(username="user1")
|
|
self.group = Group.objects.create(name="group1")
|
|
permission = self.Permission.objects.filter(
|
|
codename="add_workflow",
|
|
).first()
|
|
if permission is not None:
|
|
self.user.user_permissions.add(permission.id)
|
|
self.group.permissions.add(permission.id)
|
|
|
|
Workflow = apps.get_model("documents", "Workflow")
|
|
WorkflowTrigger = apps.get_model("documents", "WorkflowTrigger")
|
|
WorkflowAction = apps.get_model("documents", "WorkflowAction")
|
|
|
|
trigger = WorkflowTrigger.objects.create(
|
|
type=0,
|
|
sources=[str(DocumentSource.ConsumeFolder)],
|
|
filter_path="*/path/*",
|
|
filter_filename="*file*",
|
|
)
|
|
|
|
action = WorkflowAction.objects.create(
|
|
assign_title="assign title",
|
|
)
|
|
workflow = Workflow.objects.create(
|
|
name="workflow 1",
|
|
order=0,
|
|
)
|
|
workflow.triggers.set([trigger])
|
|
workflow.actions.set([action])
|
|
workflow.save()
|
|
|
|
def test_remove_workflow_permissions_and_migrate_workflows_to_consumption_templates(
|
|
self,
|
|
):
|
|
permission = self.Permission.objects.filter(
|
|
codename="add_workflow",
|
|
).first()
|
|
if permission is not None:
|
|
self.assertFalse(permission in self.user.user_permissions.all())
|
|
self.assertFalse(permission in self.group.permissions.all())
|
|
|
|
ConsumptionTemplate = self.apps.get_model("documents", "ConsumptionTemplate")
|
|
self.assertEqual(ConsumptionTemplate.objects.all().count(), 1)
|