summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit60843f670447b8359c633e05f0ebff3018db17bf (patch)
tree16072dbb77ab9e8d7278b9fc3d5fc1b77136f852
parentff94189c385699852ba71a4f54f2b41352058b30 (diff)
downloadIshtar-60843f670447b8359c633e05f0ebff3018db17bf.tar.bz2
Ishtar-60843f670447b8359c633e05f0ebff3018db17bf.zip
✨ Biographical notes edit form
-rw-r--r--ishtar_common/forms_common.py12
-rw-r--r--ishtar_common/models.py36
-rw-r--r--ishtar_common/templates/ishtar/forms/success.html2
-rw-r--r--ishtar_common/templates/ishtar/sheet_biographicalnote.html2
-rw-r--r--ishtar_common/urls.py7
-rw-r--r--ishtar_common/views.py16
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