mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-11-21 04:36:53 -06:00
Performance: make move files after select custom field change async (#11391)
This commit is contained in:
@@ -396,6 +396,7 @@ class CannotMoveFilesException(Exception):
|
|||||||
@receiver(models.signals.post_save, sender=CustomFieldInstance, weak=False)
|
@receiver(models.signals.post_save, sender=CustomFieldInstance, weak=False)
|
||||||
@receiver(models.signals.m2m_changed, sender=Document.tags.through, weak=False)
|
@receiver(models.signals.m2m_changed, sender=Document.tags.through, weak=False)
|
||||||
@receiver(models.signals.post_save, sender=Document, weak=False)
|
@receiver(models.signals.post_save, sender=Document, weak=False)
|
||||||
|
@shared_task
|
||||||
def update_filename_and_move_files(
|
def update_filename_and_move_files(
|
||||||
sender,
|
sender,
|
||||||
instance: Document | CustomFieldInstance,
|
instance: Document | CustomFieldInstance,
|
||||||
@@ -559,7 +560,7 @@ def check_paths_and_prune_custom_fields(sender, instance: CustomField, **kwargs)
|
|||||||
cf_instance.save(update_fields=["value_select"])
|
cf_instance.save(update_fields=["value_select"])
|
||||||
|
|
||||||
# Update the filename and move files if necessary
|
# Update the filename and move files if necessary
|
||||||
update_filename_and_move_files(sender, cf_instance)
|
update_filename_and_move_files.delay(sender, cf_instance)
|
||||||
|
|
||||||
|
|
||||||
@receiver(models.signals.post_delete, sender=CustomField)
|
@receiver(models.signals.post_delete, sender=CustomField)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ from unittest.mock import ANY
|
|||||||
|
|
||||||
from django.contrib.auth.models import Permission
|
from django.contrib.auth.models import Permission
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
from django.test import override_settings
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rest_framework.test import APITestCase
|
from rest_framework.test import APITestCase
|
||||||
|
|
||||||
@@ -211,6 +212,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase):
|
|||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@override_settings(CELERY_TASK_ALWAYS_EAGER=True)
|
||||||
def test_custom_field_select_options_pruned(self):
|
def test_custom_field_select_options_pruned(self):
|
||||||
"""
|
"""
|
||||||
GIVEN:
|
GIVEN:
|
||||||
|
|||||||
@@ -569,7 +569,7 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
|
|||||||
self.assertEqual(generate_filename(doc), Path("document_apple.pdf"))
|
self.assertEqual(generate_filename(doc), Path("document_apple.pdf"))
|
||||||
|
|
||||||
# handler should not have been called
|
# handler should not have been called
|
||||||
self.assertEqual(m.call_count, 0)
|
self.assertEqual(m.delay.call_count, 0)
|
||||||
cf.extra_data = {
|
cf.extra_data = {
|
||||||
"select_options": [
|
"select_options": [
|
||||||
{"label": "aubergine", "id": "abc123"},
|
{"label": "aubergine", "id": "abc123"},
|
||||||
@@ -579,8 +579,8 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
|
|||||||
}
|
}
|
||||||
cf.save()
|
cf.save()
|
||||||
self.assertEqual(generate_filename(doc), Path("document_aubergine.pdf"))
|
self.assertEqual(generate_filename(doc), Path("document_aubergine.pdf"))
|
||||||
# handler should have been called
|
# handler should have been called via delay
|
||||||
self.assertEqual(m.call_count, 1)
|
self.assertEqual(m.delay.call_count, 1)
|
||||||
|
|
||||||
|
|
||||||
class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
|
class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
|
||||||
|
|||||||
Reference in New Issue
Block a user