summaryrefslogtreecommitdiff
path: root/ishtar_common/forms_common.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2026-03-24 17:20:43 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2026-03-25 15:10:38 +0100
commit357b31ed1526b0627e1fae90ae261a46ee28e322 (patch)
tree8a976135beffab07f1a1b0d3106c96a85b8f916c /ishtar_common/forms_common.py
parentbd00a0b3db9b795907d709d163f7e8217f7c7671 (diff)
downloadIshtar-357b31ed1526b0627e1fae90ae261a46ee28e322.tar.bz2
Ishtar-357b31ed1526b0627e1fae90ae261a46ee28e322.zip
✨ qualified biographical note/site actors - autocomplete forms and actor form
Diffstat (limited to 'ishtar_common/forms_common.py')
-rw-r--r--ishtar_common/forms_common.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index c782bc03d..d0b1183be 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -1522,6 +1522,68 @@ class BiographicalNoteEditForm(BiographicalNoteForm, IshtarForm):
self.fields[k].initial = value
+class QualifiedBiographicalNoteForm(ManageOldType, NewItemForm):
+ form_label = _("Actor")
+ form_admin_name = _("Actor - 010 - General")
+ form_slug = "qualifiedbiographicalnote-general"
+ extra_form_modals = ["biographical_note"]
+ associated_models = {
+ "biographical_note": models.BiographicalNote,
+ "qualification_type": models.QualifiedBiographicalNoteType
+ }
+ biographical_note = forms.IntegerField(
+ label=_("Biographical note"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy("autocomplete-biographicalnote"),
+ associated_model=models.BiographicalNote,
+ new=True,
+ ),
+ validators=[models.valid_id(models.BiographicalNote)],
+ required=True,
+ )
+ qualification_type = forms.ChoiceField(label=_("Qualification type"), choices=[],
+ required=True)
+ TYPES = [
+ FieldType("qualification_type", models.QualifiedBiographicalNoteType),
+ ]
+
+ def save(self, user, item=None):
+ dct = self.cleaned_data
+ dct["history_modifier"] = user
+ for key in self.associated_models.keys():
+ if key in dct:
+ if not dct[key]:
+ dct.pop(key)
+ else:
+ model = self.associated_models[key]
+ try:
+ dct[key] = model.objects.get(pk=dct[key])
+ except model.DoesNotExist:
+ dct.pop(key)
+ # get data
+ data = {}
+ for k in list(dct.keys()):
+ if k.startswith("data__"):
+ v = dct.pop(k)
+ keys = k.split("__")[1:]
+ dct = generate_dict_from_list(keys, v)
+ data = update_data(data, dct)
+
+ if not item:
+ item = models.QualifiedBiographicalNote.objects.create(**dct)
+ else:
+ for k in dct:
+ setattr(item, k, dct[k])
+ item.save()
+
+ # set data
+ if item.data or data:
+ data = update_data(item.data, data)
+ item.data = data
+ item.save()
+ return item
+
+
class AccountForm(IshtarForm):
form_label = _("Account")
associated_models = {"pk": models.Person}