diff options
Diffstat (limited to 'ishtar_common')
| -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 | 
