mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-03-01 23:06:25 +00:00
Compare commits
1 Commits
feature-ve
...
dependabot
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
07cbee3bce |
6
.github/workflows/ci-docker.yml
vendored
6
.github/workflows/ci-docker.yml
vendored
@@ -130,7 +130,7 @@ jobs:
|
||||
type=semver,pattern={{major}}.{{minor}}
|
||||
- name: Build and push by digest
|
||||
id: build
|
||||
uses: docker/build-push-action@v6.18.0
|
||||
uses: docker/build-push-action@v6.19.2
|
||||
with:
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
@@ -152,7 +152,7 @@ jobs:
|
||||
touch "/tmp/digests/${digest#sha256:}"
|
||||
- name: Upload digest
|
||||
if: steps.check-push.outputs.should-push == 'true'
|
||||
uses: actions/upload-artifact@v6.0.0
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: digests-${{ matrix.arch }}
|
||||
path: /tmp/digests/*
|
||||
@@ -168,7 +168,7 @@ jobs:
|
||||
packages: write
|
||||
steps:
|
||||
- name: Download digests
|
||||
uses: actions/download-artifact@v7.0.0
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
path: /tmp/digests
|
||||
pattern: digests-*
|
||||
|
||||
4
.github/workflows/ci-release.yml
vendored
4
.github/workflows/ci-release.yml
vendored
@@ -118,7 +118,7 @@ jobs:
|
||||
sudo chown -R 1000:1000 paperless-ngx/
|
||||
tar -cJf paperless-ngx.tar.xz paperless-ngx/
|
||||
- name: Upload release artifact
|
||||
uses: actions/upload-artifact@v6
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: release
|
||||
path: dist/paperless-ngx.tar.xz
|
||||
@@ -133,7 +133,7 @@ jobs:
|
||||
version: ${{ steps.get-version.outputs.version }}
|
||||
steps:
|
||||
- name: Download release artifact
|
||||
uses: actions/download-artifact@v7
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: release
|
||||
path: ./
|
||||
|
||||
@@ -332,7 +332,6 @@ Paperless provides the following variables for use within filenames:
|
||||
- `{{ owner_username }}`: Username of document owner, if any, or "none"
|
||||
- `{{ original_name }}`: Document original filename, minus the extension, if any, or "none"
|
||||
- `{{ doc_pk }}`: The paperless identifier (primary key) for the document.
|
||||
- `{{ version_label }}`: The document version label or "none" if not explicitly set.
|
||||
|
||||
!!! warning
|
||||
|
||||
|
||||
@@ -618,7 +618,6 @@ applied. You can use the following placeholders in the template with any trigger
|
||||
- `{{original_filename}}`: original file name without extension
|
||||
- `{{filename}}`: current file name without extension
|
||||
- `{{doc_title}}`: current document title (cannot be used in title assignment)
|
||||
- `{{version_label}}`: the document version label (empty if not explicitly set)
|
||||
|
||||
The following placeholders are only available for "added" or "updated" triggers
|
||||
|
||||
@@ -627,7 +626,7 @@ The following placeholders are only available for "added" or "updated" triggers
|
||||
- `{{created_year_short}}`: created year
|
||||
- `{{created_month}}`: created month
|
||||
- `{{created_month_name}}`: created month name
|
||||
- `{{created_month_name_short}}`: created month short name
|
||||
- `{created_month_name_short}}`: created month short name
|
||||
- `{{created_day}}`: created day
|
||||
- `{{created_time}}`: created time in HH:MM format
|
||||
- `{{doc_url}}`: URL to the document in the web UI. Requires the `PAPERLESS_URL` setting to be set.
|
||||
|
||||
@@ -715,17 +715,6 @@ class ConsumerPlugin(
|
||||
else None
|
||||
)
|
||||
|
||||
version_index = (
|
||||
0
|
||||
if self.input_doc.root_document_id is None
|
||||
else (
|
||||
Document.objects.filter(
|
||||
root_document_id=self.input_doc.root_document_id,
|
||||
).count()
|
||||
+ 1
|
||||
)
|
||||
)
|
||||
|
||||
return parse_w_workflow_placeholders(
|
||||
title,
|
||||
correspondent_name,
|
||||
@@ -734,8 +723,6 @@ class ConsumerPlugin(
|
||||
local_added,
|
||||
self.filename,
|
||||
self.filename,
|
||||
version_label=self.metadata.version_label,
|
||||
version_index=version_index,
|
||||
)
|
||||
|
||||
def _store(
|
||||
|
||||
@@ -427,16 +427,6 @@ class Document(SoftDeleteModel, ModelWithOwner): # type: ignore[django-manager-
|
||||
def created_date(self):
|
||||
return self.created
|
||||
|
||||
@property
|
||||
def version_index(self):
|
||||
if self.root_document_id is None or self.pk is None:
|
||||
return 0
|
||||
|
||||
return Document.objects.filter(
|
||||
root_document_id=self.root_document_id,
|
||||
id__lte=self.id,
|
||||
).count()
|
||||
|
||||
def add_nested_tags(self, tags) -> None:
|
||||
tag_ids = set()
|
||||
for tag in tags:
|
||||
|
||||
@@ -2749,7 +2749,6 @@ class WorkflowActionSerializer(serializers.ModelSerializer):
|
||||
created_month_name_short="",
|
||||
created_day="",
|
||||
created_time="",
|
||||
version_index="",
|
||||
)
|
||||
except (ValueError, KeyError) as e:
|
||||
raise serializers.ValidationError(
|
||||
|
||||
@@ -6,7 +6,6 @@ from pathlib import PurePath
|
||||
|
||||
import pathvalidate
|
||||
from django.utils import timezone
|
||||
from django.utils.functional import SimpleLazyObject
|
||||
from django.utils.text import slugify as django_slugify
|
||||
from jinja2 import StrictUndefined
|
||||
from jinja2 import Template
|
||||
@@ -114,7 +113,6 @@ def create_dummy_document():
|
||||
archive_filename="/dummy/archive_filename.pdf",
|
||||
original_filename="original_file.pdf",
|
||||
archive_serial_number=12345,
|
||||
version_label="Version #1",
|
||||
)
|
||||
return dummy_doc
|
||||
|
||||
@@ -157,15 +155,14 @@ def get_basic_metadata_context(
|
||||
document: Document,
|
||||
*,
|
||||
no_value_default: str = NO_VALUE_PLACEHOLDER,
|
||||
version_index: object | None = None,
|
||||
) -> dict[str, object]:
|
||||
) -> dict[str, str]:
|
||||
"""
|
||||
Given a Document, constructs some basic information about it. If certain values are not set,
|
||||
they will be replaced with the no_value_default.
|
||||
|
||||
Regardless of set or not, the values will be sanitized
|
||||
"""
|
||||
context: dict[str, object] = {
|
||||
return {
|
||||
"title": pathvalidate.sanitize_filename(
|
||||
document.title,
|
||||
replacement_text="-",
|
||||
@@ -192,30 +189,17 @@ def get_basic_metadata_context(
|
||||
if document.original_filename
|
||||
else no_value_default,
|
||||
"doc_pk": f"{document.pk:07}",
|
||||
"version_label": pathvalidate.sanitize_filename(
|
||||
document.version_label,
|
||||
replacement_text="-",
|
||||
)
|
||||
if document.version_label
|
||||
else no_value_default,
|
||||
}
|
||||
|
||||
if version_index is not None:
|
||||
context["version_index"] = version_index
|
||||
|
||||
return context
|
||||
|
||||
|
||||
def get_safe_document_context(
|
||||
document: Document,
|
||||
tags: Iterable[Tag],
|
||||
*,
|
||||
version_index: object | None = None,
|
||||
) -> dict[str, object]:
|
||||
"""
|
||||
Build a document context object to avoid supplying entire model instance.
|
||||
"""
|
||||
context: dict[str, object] = {
|
||||
return {
|
||||
"id": document.pk,
|
||||
"pk": document.pk,
|
||||
"title": document.title,
|
||||
@@ -253,11 +237,6 @@ def get_safe_document_context(
|
||||
else None,
|
||||
}
|
||||
|
||||
if version_index is not None:
|
||||
context["version_index"] = version_index
|
||||
|
||||
return context
|
||||
|
||||
|
||||
def get_tags_context(tags: Iterable[Tag]) -> dict[str, str | list[str]]:
|
||||
"""
|
||||
@@ -368,20 +347,9 @@ def validate_filepath_template_and_render(
|
||||
custom_fields = CustomFieldInstance.global_objects.filter(document=document)
|
||||
|
||||
# Build the context dictionary
|
||||
lazy_version_index = SimpleLazyObject(lambda: document.version_index)
|
||||
context = (
|
||||
{
|
||||
"document": get_safe_document_context(
|
||||
document,
|
||||
tags=tags_list,
|
||||
version_index=lazy_version_index,
|
||||
),
|
||||
}
|
||||
| get_basic_metadata_context(
|
||||
document,
|
||||
no_value_default=NO_VALUE_PLACEHOLDER,
|
||||
version_index=lazy_version_index,
|
||||
)
|
||||
{"document": get_safe_document_context(document, tags=tags_list)}
|
||||
| get_basic_metadata_context(document, no_value_default=NO_VALUE_PLACEHOLDER)
|
||||
| get_creation_date_context(document)
|
||||
| get_added_date_context(document)
|
||||
| get_tags_context(tags_list)
|
||||
|
||||
@@ -41,8 +41,6 @@ def parse_w_workflow_placeholders(
|
||||
doc_title: str | None = None,
|
||||
doc_url: str | None = None,
|
||||
doc_id: int | None = None,
|
||||
version_label: str | None = None,
|
||||
version_index: int | None = None,
|
||||
) -> str:
|
||||
"""
|
||||
Available title placeholders for Workflows depend on what has already been assigned,
|
||||
@@ -64,8 +62,6 @@ def parse_w_workflow_placeholders(
|
||||
"owner_username": owner_username,
|
||||
"original_filename": Path(original_filename).stem,
|
||||
"filename": Path(filename).stem,
|
||||
"version_label": version_label or "",
|
||||
"version_index": version_index or "1",
|
||||
}
|
||||
if created is not None:
|
||||
formatting.update(
|
||||
|
||||
@@ -267,7 +267,7 @@ class TestApiStoragePaths(DirectoriesMixin, APITestCase):
|
||||
"/{created_month_name_short}/{created_day}/{added}/{added_year}"
|
||||
"/{added_year_short}/{added_month}/{added_month_name}"
|
||||
"/{added_month_name_short}/{added_day}/{asn}"
|
||||
"/{tag_list}/{owner_username}/{original_name}/{doc_pk}/{version_index}/",
|
||||
"/{tag_list}/{owner_username}/{original_name}/{doc_pk}/",
|
||||
},
|
||||
),
|
||||
content_type="application/json",
|
||||
|
||||
@@ -355,35 +355,6 @@ class TestApiWorkflows(DirectoriesMixin, APITestCase):
|
||||
|
||||
self.assertEqual(Workflow.objects.count(), 1)
|
||||
|
||||
def test_api_create_assign_title_accepts_version_index(self) -> None:
|
||||
response = self.client.post(
|
||||
self.ENDPOINT,
|
||||
json.dumps(
|
||||
{
|
||||
"name": "Workflow with version index",
|
||||
"order": 1,
|
||||
"triggers": [
|
||||
{
|
||||
"type": WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED,
|
||||
},
|
||||
],
|
||||
"actions": [
|
||||
{
|
||||
"assign_title": "Version {version_index}",
|
||||
},
|
||||
],
|
||||
},
|
||||
),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||
workflow = Workflow.objects.get(name="Workflow with version index")
|
||||
self.assertEqual(
|
||||
workflow.actions.first().assign_title,
|
||||
"Version {version_index}",
|
||||
)
|
||||
|
||||
def test_api_create_workflow_trigger_action_empty_fields(self) -> None:
|
||||
"""
|
||||
GIVEN:
|
||||
|
||||
@@ -428,11 +428,7 @@ class TestConsumer(
|
||||
DocumentMetadataOverrides(
|
||||
correspondent_id=c.pk,
|
||||
document_type_id=dt.pk,
|
||||
title=(
|
||||
"{{correspondent}}{{document_type}} "
|
||||
"{{added_month}}-{{added_year_short}}.{{version_label}}"
|
||||
),
|
||||
version_label="v2",
|
||||
title="{{correspondent}}{{document_type}} {{added_month}}-{{added_year_short}}",
|
||||
),
|
||||
) as consumer:
|
||||
consumer.run()
|
||||
@@ -440,10 +436,7 @@ class TestConsumer(
|
||||
document = Document.objects.first()
|
||||
|
||||
now = timezone.now()
|
||||
self.assertEqual(
|
||||
document.title,
|
||||
f"{c.name}{dt.name} {now.strftime('%m-%y')}.v2",
|
||||
)
|
||||
self.assertEqual(document.title, f"{c.name}{dt.name} {now.strftime('%m-%y')}")
|
||||
self._assert_first_last_send_progress()
|
||||
|
||||
def testOverrideOwner(self) -> None:
|
||||
|
||||
@@ -156,54 +156,6 @@ class TestDocument(TestCase):
|
||||
)
|
||||
self.assertEqual(doc.get_public_filename(), "2020-12-25 test")
|
||||
|
||||
def test_version_index_for_root_is_zero(self) -> None:
|
||||
root = Document.objects.create(
|
||||
title="Root",
|
||||
content="content",
|
||||
checksum="checksum-root",
|
||||
mime_type="application/pdf",
|
||||
created=date(2025, 1, 1),
|
||||
)
|
||||
|
||||
self.assertEqual(root.version_index, 0)
|
||||
|
||||
def test_version_index_uses_id_ordering(self) -> None:
|
||||
root = Document.objects.create(
|
||||
title="Root",
|
||||
content="content",
|
||||
checksum="checksum-root",
|
||||
mime_type="application/pdf",
|
||||
created=date(2025, 1, 1),
|
||||
)
|
||||
v1 = Document.objects.create(
|
||||
root_document=root,
|
||||
title="V1",
|
||||
content="content",
|
||||
checksum="checksum-v1",
|
||||
mime_type="application/pdf",
|
||||
created=date(2025, 1, 3),
|
||||
)
|
||||
v2 = Document.objects.create(
|
||||
root_document=root,
|
||||
title="V2",
|
||||
content="content",
|
||||
checksum="checksum-v2",
|
||||
mime_type="application/pdf",
|
||||
created=date(2025, 1, 2),
|
||||
)
|
||||
v3 = Document.objects.create(
|
||||
root_document=root,
|
||||
title="V3",
|
||||
content="content",
|
||||
checksum="checksum-v3",
|
||||
mime_type="application/pdf",
|
||||
created=date(2025, 1, 1),
|
||||
)
|
||||
|
||||
self.assertEqual(v1.version_index, 1)
|
||||
self.assertEqual(v2.version_index, 2)
|
||||
self.assertEqual(v3.version_index, 3)
|
||||
|
||||
|
||||
def test_suggestion_content() -> None:
|
||||
"""
|
||||
|
||||
@@ -281,32 +281,6 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
|
||||
self.assertEqual(generate_filename(d1), Path("652 - the_doc.pdf"))
|
||||
self.assertEqual(generate_filename(d2), Path("none - the_doc.pdf"))
|
||||
|
||||
@override_settings(FILENAME_FORMAT="{title}.{version_label}")
|
||||
def test_version_label(self) -> None:
|
||||
d1 = Document.objects.create(
|
||||
title="the_doc",
|
||||
mime_type="application/pdf",
|
||||
checksum="A",
|
||||
version_label="Version #2",
|
||||
)
|
||||
d2 = Document.objects.create(
|
||||
title="the_doc",
|
||||
mime_type="application/pdf",
|
||||
checksum="B",
|
||||
)
|
||||
d3 = Document.objects.create(
|
||||
title="the_doc",
|
||||
mime_type="application/pdf",
|
||||
checksum="C",
|
||||
version_label="Super weird %@\"'<> ¯\\_(ツ)_/¯",
|
||||
)
|
||||
self.assertEqual(generate_filename(d1), Path("the_doc.Version #2.pdf"))
|
||||
self.assertEqual(generate_filename(d2), Path("the_doc.none.pdf"))
|
||||
self.assertEqual(
|
||||
generate_filename(d3),
|
||||
Path("the_doc.Super weird %@-'-- ¯-_(ツ)_-¯.pdf"),
|
||||
)
|
||||
|
||||
@override_settings(FILENAME_FORMAT="{title} {tag_list}")
|
||||
def test_tag_list(self) -> None:
|
||||
doc = Document.objects.create(title="doc1", mime_type="application/pdf")
|
||||
@@ -409,21 +383,6 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
|
||||
|
||||
self.assertEqual(generate_filename(document), Path("0013579.pdf"))
|
||||
|
||||
@override_settings(FILENAME_FORMAT="{version_index}")
|
||||
def test_format_version_index(self) -> None:
|
||||
root = Document.objects.create(
|
||||
checksum="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
mime_type="application/pdf",
|
||||
)
|
||||
version = Document.objects.create(
|
||||
root_document=root,
|
||||
checksum="bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
||||
mime_type="application/pdf",
|
||||
)
|
||||
|
||||
self.assertEqual(generate_filename(root), Path("0.pdf"))
|
||||
self.assertEqual(generate_filename(version), Path("1.pdf"))
|
||||
|
||||
@override_settings(FILENAME_FORMAT=None)
|
||||
def test_format_none(self) -> None:
|
||||
document = Document()
|
||||
|
||||
@@ -951,38 +951,6 @@ class TestWorkflows(
|
||||
self.assertEqual(doc.correspondent, self.c2)
|
||||
self.assertEqual(doc.title, f"Doc created in {created.year}")
|
||||
|
||||
def test_document_updated_workflow_version_index_placeholder(self) -> None:
|
||||
trigger = WorkflowTrigger.objects.create(
|
||||
type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED,
|
||||
)
|
||||
action = WorkflowAction.objects.create(
|
||||
assign_title="Version {{ version_index }}",
|
||||
)
|
||||
workflow = Workflow.objects.create(
|
||||
name="Workflow version index",
|
||||
order=0,
|
||||
)
|
||||
workflow.triggers.add(trigger)
|
||||
workflow.actions.add(action)
|
||||
workflow.save()
|
||||
|
||||
root = Document.objects.create(
|
||||
title="root",
|
||||
checksum="cccccccccccccccccccccccccccccccc",
|
||||
mime_type="application/pdf",
|
||||
)
|
||||
version = Document.objects.create(
|
||||
title="v1",
|
||||
checksum="dddddddddddddddddddddddddddddddd",
|
||||
mime_type="application/pdf",
|
||||
root_document=root,
|
||||
)
|
||||
|
||||
run_workflows(WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED, version)
|
||||
version.refresh_from_db()
|
||||
|
||||
self.assertEqual(version.title, "Version 1")
|
||||
|
||||
def test_document_added_no_match_filename(self) -> None:
|
||||
trigger = WorkflowTrigger.objects.create(
|
||||
type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED,
|
||||
@@ -3444,10 +3412,7 @@ class TestWorkflows(
|
||||
)
|
||||
webhook_action = WorkflowActionWebhook.objects.create(
|
||||
use_params=False,
|
||||
body=(
|
||||
"Test message: {{doc_url}} with id {{doc_id}} "
|
||||
"and version {{version_label}}"
|
||||
),
|
||||
body="Test message: {{doc_url}} with id {{doc_id}}",
|
||||
url="http://paperless-ngx.com",
|
||||
include_document=False,
|
||||
)
|
||||
@@ -3471,7 +3436,6 @@ class TestWorkflows(
|
||||
title="sample test",
|
||||
correspondent=self.c,
|
||||
original_filename="sample.pdf",
|
||||
version_label="v3",
|
||||
)
|
||||
|
||||
run_workflows(WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED, doc)
|
||||
@@ -3480,7 +3444,7 @@ class TestWorkflows(
|
||||
url="http://paperless-ngx.com",
|
||||
data=(
|
||||
f"Test message: http://localhost:8000/paperless/documents/{doc.id}/"
|
||||
f" with id {doc.id} and version {doc.version_label}"
|
||||
f" with id {doc.id}"
|
||||
),
|
||||
headers={},
|
||||
files=None,
|
||||
|
||||
@@ -6,7 +6,6 @@ from pathlib import Path
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.models import User
|
||||
from django.utils import timezone
|
||||
from django.utils.functional import SimpleLazyObject
|
||||
|
||||
from documents.data_models import ConsumableDocument
|
||||
from documents.data_models import DocumentMetadataOverrides
|
||||
@@ -25,16 +24,6 @@ from documents.workflows.webhooks import send_webhook
|
||||
logger = logging.getLogger("paperless.workflows.actions")
|
||||
|
||||
|
||||
def _get_consumable_version_index(document: ConsumableDocument) -> int:
|
||||
if document.root_document_id is None:
|
||||
return 0
|
||||
|
||||
# The document is not yet saved, so use the next index in the version chain.
|
||||
return (
|
||||
Document.objects.filter(root_document_id=document.root_document_id).count() + 1
|
||||
)
|
||||
|
||||
|
||||
def build_workflow_action_context(
|
||||
document: Document | ConsumableDocument,
|
||||
overrides: DocumentMetadataOverrides | None,
|
||||
@@ -45,11 +34,6 @@ def build_workflow_action_context(
|
||||
use_overrides = overrides is not None
|
||||
|
||||
if not use_overrides:
|
||||
version_index = (
|
||||
document.version_index
|
||||
if isinstance(document, Document)
|
||||
else _get_consumable_version_index(document)
|
||||
)
|
||||
return {
|
||||
"title": document.title,
|
||||
"doc_url": f"{settings.PAPERLESS_URL}{settings.BASE_URL}documents/{document.pk}/",
|
||||
@@ -65,8 +49,6 @@ def build_workflow_action_context(
|
||||
"added": timezone.localtime(document.added),
|
||||
"created": document.created,
|
||||
"id": document.pk,
|
||||
"version_label": document.version_label,
|
||||
"version_index": version_index,
|
||||
}
|
||||
|
||||
correspondent_obj = (
|
||||
@@ -86,11 +68,6 @@ def build_workflow_action_context(
|
||||
)
|
||||
|
||||
filename = document.original_file if document.original_file else ""
|
||||
version_index = (
|
||||
SimpleLazyObject(lambda: _get_consumable_version_index(document))
|
||||
if isinstance(document, ConsumableDocument)
|
||||
else SimpleLazyObject(lambda: document.version_index)
|
||||
)
|
||||
return {
|
||||
"title": overrides.title
|
||||
if overrides and overrides.title
|
||||
@@ -104,8 +81,6 @@ def build_workflow_action_context(
|
||||
"added": timezone.localtime(timezone.now()),
|
||||
"created": overrides.created if overrides else None,
|
||||
"id": "",
|
||||
"version_label": overrides.version_label if overrides else None,
|
||||
"version_index": version_index,
|
||||
}
|
||||
|
||||
|
||||
@@ -141,8 +116,6 @@ def execute_email_action(
|
||||
context["title"],
|
||||
context["doc_url"],
|
||||
context["id"],
|
||||
context["version_label"],
|
||||
context["version_index"],
|
||||
)
|
||||
if action.email.subject
|
||||
else ""
|
||||
@@ -160,8 +133,6 @@ def execute_email_action(
|
||||
context["title"],
|
||||
context["doc_url"],
|
||||
context["id"],
|
||||
context["version_label"],
|
||||
context["version_index"],
|
||||
)
|
||||
if action.email.body
|
||||
else ""
|
||||
@@ -241,8 +212,6 @@ def execute_webhook_action(
|
||||
context["title"],
|
||||
context["doc_url"],
|
||||
context["id"],
|
||||
context["version_label"],
|
||||
context["version_index"],
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(
|
||||
@@ -262,8 +231,6 @@ def execute_webhook_action(
|
||||
context["title"],
|
||||
context["doc_url"],
|
||||
context["id"],
|
||||
context["version_label"],
|
||||
context["version_index"],
|
||||
)
|
||||
headers = {}
|
||||
if action.webhook.headers:
|
||||
|
||||
@@ -58,8 +58,6 @@ def apply_assignment_to_document(
|
||||
"", # dont pass the title to avoid recursion
|
||||
"", # no urls in titles
|
||||
document.pk,
|
||||
document.version_label,
|
||||
document.version_index,
|
||||
)
|
||||
except Exception: # pragma: no cover
|
||||
logger.exception(
|
||||
|
||||
Reference in New Issue
Block a user