diff options
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 |
commit | 2a20394ce3d4f05b49affd9acf776ebc3971d63a (patch) | |
tree | 31c679e996921fdd70a0b7d0f6009fd2d20ae11b | |
parent | af36826678104f6a5cc1bffe66510ab32ad10160 (diff) | |
download | Ishtar-2a20394ce3d4f05b49affd9acf776ebc3971d63a.tar.bz2 Ishtar-2a20394ce3d4f05b49affd9acf776ebc3971d63a.zip |
✨ Document - bulk update: add modification of tags (refs #5415)
-rw-r--r-- | changelog/en/changelog_2022-06-15.md | 1 | ||||
-rw-r--r-- | changelog/fr/changelog_2023-01-25.md | 1 | ||||
-rw-r--r-- | ishtar_common/forms_common.py | 3 | ||||
-rw-r--r-- | ishtar_common/tests.py | 37 |
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") |