From d0760b4da854e1dadb4ff130468a4c6d185b1abc Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 28 Nov 2024 17:58:55 +0100 Subject: ✨ exhibition: forms/sheets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ishtar_common/forms.py | 31 ++++++++++++++-- ishtar_common/templates/ishtar/forms/qa_form.html | 9 +++++ ishtar_common/templates/ishtar/manage_basket.html | 4 +-- .../templates/ishtar/wizard/default_wizard.html | 12 ++----- ishtar_common/templates/ishtar/wizard/search.html | 2 ++ ishtar_common/urls_converters.py | 14 ++++++++ ishtar_common/utils.py | 7 ++++ ishtar_common/views.py | 9 ++++- ishtar_common/views_item.py | 42 +++++++++++++--------- ishtar_common/widgets.py | 2 +- ishtar_common/wizards.py | 4 +-- 11 files changed, 101 insertions(+), 35 deletions(-) (limited to 'ishtar_common') diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py index ca9f37623..6531ad6bb 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -627,15 +627,28 @@ class FormSetWithDeleteSwitches(FormSet): delete_widget = widgets.DeleteSwitchWidget -class FieldType(object): - def __init__(self, key, model, is_multiple=False, extra_args=None): +class FieldType: + """ + Define field choices, help for SELECT field from a model. + :key: fields key for the form + :model: associated model + :is_multiple: True if multi select + :extra_args: extra args for 'get_types' call + :empty_first: first entry is empty. True by default. Always False when multiple + """ + + def __init__(self, key, model, is_multiple=False, extra_args=None, + empty_first=True): self.key = key self.model = model self.is_multiple = is_multiple self.extra_args = extra_args + if self.is_multiple: + empty_first = False + self.empty_first = empty_first def get_choices(self, initial=None): - args = {"empty_first": not self.is_multiple, "initial": initial} + args = {"empty_first": self.empty_first, "initial": initial} if self.extra_args: args.update(self.extra_args) return self.model.get_types(**args) @@ -779,6 +792,18 @@ class IshtarForm(BSForm, forms.Form): self.fields[field.key].choices = field.get_choices() self.fields[field.key].help_text = field.get_help() + def _clean_model_field(self, key, model): + """ + Clean autocomplete field returning integer associated to a model. + """ + value = self.cleaned_data.get(key, None) + if not value: + return + try: + return model.objects.get(pk=int(value)) + except (model.DoesNotExist, ValueError): + return + def get_headers(self): if self._headers: return self._headers diff --git a/ishtar_common/templates/ishtar/forms/qa_form.html b/ishtar_common/templates/ishtar/forms/qa_form.html index c843dbd2d..178910215 100644 --- a/ishtar_common/templates/ishtar/forms/qa_form.html +++ b/ishtar_common/templates/ishtar/forms/qa_form.html @@ -2,6 +2,15 @@ {% load i18n inline_formset table_form %} {% block main_form %} + {% for message in messages %} + + {% endfor %} {% for error in form.non_field_errors %}

{{ error }}

{% endfor %} diff --git a/ishtar_common/templates/ishtar/manage_basket.html b/ishtar_common/templates/ishtar/manage_basket.html index 5f3bf2c8f..61def50f6 100644 --- a/ishtar_common/templates/ishtar/manage_basket.html +++ b/ishtar_common/templates/ishtar/manage_basket.html @@ -69,9 +69,9 @@ jQuery(document).ready(function(){
{% trans "Close" %} + class='button'>{% trans "Back" %}
{% include 'ishtar/blocks/footer.html' %} diff --git a/ishtar_common/templates/ishtar/wizard/default_wizard.html b/ishtar_common/templates/ishtar/wizard/default_wizard.html index 0d3863af9..b9364d012 100644 --- a/ishtar_common/templates/ishtar/wizard/default_wizard.html +++ b/ishtar_common/templates/ishtar/wizard/default_wizard.html @@ -6,16 +6,8 @@ {% block content %} {% block wizard_head %}

{{wizard_label}}

-{% if no_context_cr %} -
- -
-{% endif %} - +{% block wizard_top_button %} +{% endblock %} {% include "ishtar/blocks/wizard_breadcrumb.html" %} {% endblock %} diff --git a/ishtar_common/templates/ishtar/wizard/search.html b/ishtar_common/templates/ishtar/wizard/search.html index 9047c47fc..19a6540dd 100644 --- a/ishtar_common/templates/ishtar/wizard/search.html +++ b/ishtar_common/templates/ishtar/wizard/search.html @@ -5,6 +5,8 @@ {% endblock %} {% block content %}

{{wizard_label}}

+{% block wizard_top_button %} +{% endblock %} {% if default_search_vector or open_url %}