diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-09-05 13:56:09 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-10-24 12:06:08 +0200 |
commit | 575a7fd93e52b750e323cde669e5a4c329ead978 (patch) | |
tree | ec9c9767e29588622d0e70c58fcf3bbd2b8e98de /ishtar_common | |
parent | 7998a1f6d3096b8a6a2d8bdb80d3034a68bc544d (diff) | |
download | Ishtar-575a7fd93e52b750e323cde669e5a4c329ead978.tar.bz2 Ishtar-575a7fd93e52b750e323cde669e5a4c329ead978.zip |
Fix display of QA form. Improve layout of criteria search.
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/static/js/ishtar.js | 6 | ||||
-rw-r--r-- | ishtar_common/templates/blocks/bs_form_snippet.html | 19 | ||||
-rw-r--r-- | ishtar_common/templates/ishtar/qa_form.html | 9 | ||||
-rw-r--r-- | ishtar_common/views.py | 50 |
4 files changed, 64 insertions, 20 deletions
diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js index 119229e8d..483da495c 100644 --- a/ishtar_common/static/js/ishtar.js +++ b/ishtar_common/static/js/ishtar.js @@ -682,9 +682,9 @@ function update_search_field(){ $('#wizard-form input').each(function(){$(this).val("")}); $("#id_search_vector").val(query); if (query){ - add_message(query, 'info', "#advanced-search-info", true, false); + add_message(query, 'secondary', "#advanced-search-info", true, false); } else { - add_message("-", 'info', "#advanced-search-info", true, false); + add_message("-", 'secondary', "#advanced-search-info", true, false); } enable_save(); } @@ -776,7 +776,7 @@ var dt_generate_qa_url = function (table, url){ var dt_qa_open = function (url){ long_wait(); $('#modal-dynamic-form').load(url, function(){ - $('#modal-dynamic-form').modal("show"); close_wait(); + $('#modal-dynamic-form').modal("show"); }); } diff --git a/ishtar_common/templates/blocks/bs_form_snippet.html b/ishtar_common/templates/blocks/bs_form_snippet.html index 95b8ac086..f122b33f2 100644 --- a/ishtar_common/templates/blocks/bs_form_snippet.html +++ b/ishtar_common/templates/blocks/bs_form_snippet.html @@ -48,22 +48,9 @@ <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> + <div class="form-group col-12" id="advanced-search-info"></div> </div> - <div class="modal-body form-row"> - <div class="form-group col-12" id="advanced-search-info"> - </div> - <div class="form-group col-12"> - <p class="text-center"> - <button type="button" - class="btn btn-primary advanced-search-valid"> - {% trans "Add" %}</button> - <button type="button" - class="btn btn-secondary advanced-search-clear"> - {% trans 'Clear' %}</button> - <button type="button" class="btn btn-secondary" - data-dismiss="modal">{% trans 'Close' %}</button> - </p> - </div> + <div class="modal-body body-scroll"> <hr> {% endif %} {% if field.name in form.HEADERS %} @@ -91,6 +78,8 @@ {% if search and forloop.counter0 >= 1 %} </div> + </div> + <div class="modal-footer"> <div class="form-group col-12"> <p class="text-center"> <button type="button" diff --git a/ishtar_common/templates/ishtar/qa_form.html b/ishtar_common/templates/ishtar/qa_form.html index 95f8887a8..2df3775ea 100644 --- a/ishtar_common/templates/ishtar/qa_form.html +++ b/ishtar_common/templates/ishtar/qa_form.html @@ -3,16 +3,21 @@ <div class="modal-dialog modal-lg modal-dialog-centered"> <div class="modal-content" id='progress-content'> <div class="modal-header"> - <h2>{{page_name}}</h2> + <h2>{{page_name|safe}}</h2> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"> + <span aria-hidden="true">×</span> + </button> </div> <form enctype="multipart/form-data" action="." method="post">{% csrf_token %} - <div class="modal-body"> + <div class="modal-body body-scroll"> <div class='form'> {% for error in form.non_field_errors %} <p>{{ error }}</p> {% endfor %} {% bs_form form %} </div> + </div> + <div class="modal-footer"> <button type="submit" id="submit_form" name='validate' value="validate" class="btn btn-success"> {% trans "Modify" %} diff --git a/ishtar_common/views.py b/ishtar_common/views.py index eed175753..8b22048f2 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1795,3 +1795,53 @@ class AlertList(JSONResponseMixin, LoginRequiredMixin, 'number': nb} ) return {'alerts': alerts} + + +class QAItemEditForm(IshtarMixin, LoginRequiredMixin, FormView): + template_name = 'ishtar/qa_form.html' + model = None + form_class = None + form_class_multi = None + + def dispatch(self, request, *args, **kwargs): + assert self.model + pks = [int(pk) for pk in kwargs.get('pks').split('-')] + self.items = list(self.model.objects.filter(pk__in=pks)) + if not self.items: + raise Http404() + + # check availability + if not self.model.QA_EDIT.is_available( + user=request.user, session=request.session): + for item in self.items: + if not self.model.QA_EDIT.is_available( + user=request.user, session=request.session, obj=item): + raise Http404() + + return super(QAItemEditForm, self).dispatch(request, *args, **kwargs) + + def get_form_class(self): + if len(self.items) > 1: + return self.form_class_multi + return self.form_class + + def get_form_kwargs(self): + kwargs = super(QAItemEditForm, self).get_form_kwargs() + kwargs['items'] = self.items + return kwargs + + def get_context_data(self, **kwargs): + data = super(QAItemEditForm, self).get_context_data(**kwargs) + data['page_name'] = u"{} – {}".format( + self.model._meta.verbose_name, self.model.QA_EDIT.text) + return data + + + + def get_success_url(self, basket): + return reverse('select_itemsinbasket', + kwargs={'pk': basket}) + + def form_valid(self, form): + return HttpResponseRedirect(self.get_success_url( + form.cleaned_data['basket'])) |