diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-03-25 17:17:34 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-03-25 17:17:34 +0100 |
commit | 60843f670447b8359c633e05f0ebff3018db17bf (patch) | |
tree | 16072dbb77ab9e8d7278b9fc3d5fc1b77136f852 | |
parent | ff94189c385699852ba71a4f54f2b41352058b30 (diff) | |
download | Ishtar-60843f670447b8359c633e05f0ebff3018db17bf.tar.bz2 Ishtar-60843f670447b8359c633e05f0ebff3018db17bf.zip |
✨ Biographical notes edit form
-rw-r--r-- | ishtar_common/forms_common.py | 12 | ||||
-rw-r--r-- | ishtar_common/models.py | 36 | ||||
-rw-r--r-- | ishtar_common/templates/ishtar/forms/success.html | 2 | ||||
-rw-r--r-- | ishtar_common/templates/ishtar/sheet_biographicalnote.html | 2 | ||||
-rw-r--r-- | ishtar_common/urls.py | 7 | ||||
-rw-r--r-- | ishtar_common/views.py | 16 |
6 files changed, 72 insertions, 3 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index e6e62288e..6e0c23188 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -1466,6 +1466,18 @@ class BiographicalNoteForm(ManageOldType, NewItemForm): return item +class BiographicalNoteEditForm(BiographicalNoteForm, IshtarForm): + def __init__(self, *args, **kwargs): + self.items = kwargs.pop("items") if "items" in kwargs else None + initial = {} + if self.items: + self.item = self.items[0] + for k in self.base_fields: + initial[k] = getattr(self.item, k) + kwargs["initial"] = initial + super().__init__(*args, **kwargs) + + class AccountForm(IshtarForm): form_label = _("Account") associated_models = {"pk": models.Person} diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 4d9225a3a..110ac9a50 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -3194,7 +3194,7 @@ class Person(Address, Merge, OwnPerms, ValueGetter, MainItem): fle.save() # force update of raw_general_contractor def get_extra_actions(self, request): - actions = super(Person, self).get_extra_actions(request) + actions = super().get_extra_actions(request) # for admin only if not request.user.is_staff: @@ -3270,9 +3270,22 @@ class BiographicalNote(BaseHistorizedItem, ValueGetter, MainItem): related_name="biographical_notes" ) + QA_EDIT = QuickAction( + url="biographicalnote-qa-edit", + icon_class="fa fa-pencil", + text=_("Edit biographical note"), + rights=["change_biographicalnote", "change_own_biographicalnote"], + ) + class Meta: verbose_name = _("Biographical note") verbose_name_plural = _("Biographical notes") + permissions = ( + ("view_own_biographicalnote", "Can view own Biographical note"), + ("add_own_biographicalnote", "Can add own Biographical note"), + ("change_own_biographicalnote", "Can change own Biographical note"), + ("delete_own_biographicalnote", "Can delete own Biographical note"), + ) ADMIN_SECTION = _("Directory") @property @@ -3300,6 +3313,27 @@ class BiographicalNote(BaseHistorizedItem, ValueGetter, MainItem): def set_slug(self): self.slug = create_slug(self.__class__, self.denomination, max_length=250, pk=self.pk) + def get_extra_actions(self, request): + """ + For sheet template + """ + # url, base_text, icon, extra_text, extra css class, is a quick action, + actions = super().get_extra_actions(request) + can_edit = self.can_do(request, "change_biographicalnote") + if not can_edit: + return actions + actions += [ + ( + reverse("biographicalnote-qa-edit", args=[self.pk]), + _("Edit"), + "fa fa-pencil", + "", + "", + True, + ), + ] + return actions + def save(self, *args, **kwargs): if not self.slug: self.set_slug() diff --git a/ishtar_common/templates/ishtar/forms/success.html b/ishtar_common/templates/ishtar/forms/success.html index 9a86e893e..e18efd605 100644 --- a/ishtar_common/templates/ishtar/forms/success.html +++ b/ishtar_common/templates/ishtar/forms/success.html @@ -24,7 +24,7 @@ $(document).ready(function(){ </button> </div> <div class="modal-body form-row"> - {% trans "Changes made successfully." %} + {% trans "Changes made successfully. It may be necessary to refresh the sheet." %} </div> </div> </div> diff --git a/ishtar_common/templates/ishtar/sheet_biographicalnote.html b/ishtar_common/templates/ishtar/sheet_biographicalnote.html index 64a6b4d9c..47104066b 100644 --- a/ishtar_common/templates/ishtar/sheet_biographicalnote.html +++ b/ishtar_common/templates/ishtar/sheet_biographicalnote.html @@ -4,7 +4,7 @@ {% block head_title %}<strong>{% trans "Biographical note"%}</strong> - {{item}}{% endblock %} {% block toolbar %} -{% window_nav item window_id 'show-person' 'person_modify' %} +{% window_nav item window_id 'show-biographicalnote' %} {% endblock %} {% block content %} diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py index 955563875..b7a43f82a 100644 --- a/ishtar_common/urls.py +++ b/ishtar_common/urls.py @@ -415,6 +415,13 @@ urlpatterns += [ name="new-biographicalnote", ), url( + r"^biographicalnote-qa-edit/(?P<pks>[0-9-]+)?/$", + check_rights(["change_biographicalnote", "change_own_biographicalnote"])( + views.QABiographicalNoteForm.as_view() + ), + name="biographicalnote-qa-edit", + ), + url( r"department-by-state/(?P<state_id>.+)?$", views.department_by_state, name="department-by-state", diff --git a/ishtar_common/views.py b/ishtar_common/views.py index ea5a3c4d2..6a25fd904 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -3092,6 +3092,22 @@ class QAPersonForm(QAItemEditForm): return HttpResponseRedirect(reverse("success")) +class QABiographicalNoteForm(QAItemForm): + model = models.BiographicalNote + form_class = forms.BiographicalNoteEditForm + page_name = _("Modify") + + def get_quick_action(self): + return self.model.QA_EDIT + + def form_valid(self, form): + return self.form_save(form) + + def form_save(self, form): + form.save(self.request.user, self.items[0]) + return HttpResponseRedirect(reverse("success")) + + class QADocumentForm(QAItemEditForm): model = models.Document form_class = forms.QADocumentFormMulti |