diff options
Diffstat (limited to 'ishtar_common/forms_common.py')
| -rw-r--r-- | ishtar_common/forms_common.py | 62 |
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} |
