summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2023-05-11 11:54:50 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2023-05-11 12:08:01 +0200
commit2a20394ce3d4f05b49affd9acf776ebc3971d63a (patch)
tree31c679e996921fdd70a0b7d0f6009fd2d20ae11b
parentaf36826678104f6a5cc1bffe66510ab32ad10160 (diff)
downloadIshtar-2a20394ce3d4f05b49affd9acf776ebc3971d63a.tar.bz2
Ishtar-2a20394ce3d4f05b49affd9acf776ebc3971d63a.zip
✨ Document - bulk update: add modification of tags (refs #5415)
-rw-r--r--changelog/en/changelog_2022-06-15.md1
-rw-r--r--changelog/fr/changelog_2023-01-25.md1
-rw-r--r--ishtar_common/forms_common.py3
-rw-r--r--ishtar_common/tests.py37
4 files changed, 42 insertions, 0 deletions
diff --git a/changelog/en/changelog_2022-06-15.md b/changelog/en/changelog_2022-06-15.md
index 687b9b942..a227c4e5d 100644
--- a/changelog/en/changelog_2022-06-15.md
+++ b/changelog/en/changelog_2022-06-15.md
@@ -3,6 +3,7 @@ v4.0.45 - 2023-
### Features/improvements ###
- Administration: improved display of subcategories (in color)
+- Document - bulk update: add modification of tags (refs #5415)
### Bug fixes ###
- Fix town search for warehouses and organizations
diff --git a/changelog/fr/changelog_2023-01-25.md b/changelog/fr/changelog_2023-01-25.md
index 3a87bab31..d99a8c062 100644
--- a/changelog/fr/changelog_2023-01-25.md
+++ b/changelog/fr/changelog_2023-01-25.md
@@ -3,6 +3,7 @@ v4.0.45 - 2023-
### Fonctionnalités/améliorations ###
- Administration : affichage des sous-catégories amélioré (en couleur)
+- Document - modification par lot: modification des étiquettes (refs #5415)
### Corrections de dysfonctionnements ###
- Correction de la recherche commune pour les lieux de conservation et les organisations
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index cc4cf31a8..ce7f81f34 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -2296,6 +2296,7 @@ class QADocumentFormMulti(QAForm):
associated_models = {
"qa_source_type": models.SourceType,
"qa_authors": models.Author,
+ "qa_tags": models.DocumentTag,
}
MULTI = True
@@ -2313,11 +2314,13 @@ class QADocumentFormMulti(QAForm):
qa_format_type = forms.ChoiceField(label=_("Format"), choices=[], required=False)
qa_support_type = forms.ChoiceField(label=_("Medium"), choices=[], required=False)
qa_scale = forms.CharField(label=_("Scale"), max_length=30, required=False)
+ qa_tags = forms.ChoiceField(label=_("Tags"), choices=[], required=False)
TYPES = [
FieldType("qa_source_type", models.SourceType),
FieldType("qa_format_type", models.Format),
FieldType("qa_support_type", models.SupportType),
+ FieldType("qa_tags", models.DocumentTag),
]
def _get_qa_authors(self, value):
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py
index 0ebf3f56d..3d69315b4 100644
--- a/ishtar_common/tests.py
+++ b/ishtar_common/tests.py
@@ -3757,6 +3757,43 @@ class PersonQATest(TestCase):
)
+class DocumentQATest(TestCase):
+ model = models.Document
+
+ def setUp(self):
+ self.username, self.password, self.user = create_superuser()
+ self.user.user_permissions.add(Permission.objects.get(codename="change_document"))
+ self.user.user_permissions.add(Permission.objects.get(codename="change_own_document"))
+ self.st1 = models.SourceType.objects.create(label="Report", code="REP")
+ self.doc_1 = models.Document.objects.create(source_type=self.st1, title="First document")
+ self.doc_2 = models.Document.objects.create(source_type=self.st1, title="Second document")
+ self.tag = models.DocumentTag.objects.create(label="ambiance", txt_idx="ambiance")
+
+ def test_bulk_update(self):
+ c = Client()
+ pks = "{}-{}".format(self.doc_1.pk, self.doc_2.pk)
+ response = c.get(reverse("document-qa-bulk-update", args=[pks]))
+ self.assertRedirects(response, "/")
+
+ c.login(username=self.username, password=self.password)
+ response = c.get(reverse("document-qa-bulk-update", args=[pks]))
+ self.assertEqual(response.status_code, 200)
+
+ response = c.post(
+ reverse("document-qa-bulk-update-confirm", args=[pks]),
+ {"qa_tags": self.tag.pk},
+ )
+ if response.status_code != 200:
+ self.assertRedirects(response, "/success/")
+
+ self.assertEqual(
+ models.Document.objects.get(pk=self.doc_1.pk).tags.first(), self.tag
+ )
+ self.assertEqual(
+ models.Document.objects.get(pk=self.doc_2.pk).tags.first(), self.tag
+ )
+
+
class StorageTest(TestCase):
def setUp(self) -> None:
self.st1 = models.SourceType.objects.create(label="Report", code="REP")