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 | 93486b4c08af232d95fde4cff372ddaf8c290925 (patch) | |
| tree | ec9c9767e29588622d0e70c58fcf3bbd2b8e98de | |
| parent | 85fd89f8960a766615ac16cf445b958d2122032a (diff) | |
| download | Ishtar-93486b4c08af232d95fde4cff372ddaf8c290925.tar.bz2 Ishtar-93486b4c08af232d95fde4cff372ddaf8c290925.zip | |
Fix display of QA form. Improve layout of criteria search.
| -rw-r--r-- | archaeological_finds/views.py | 44 | ||||
| -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 | ||||
| -rw-r--r-- | scss/custom.scss | 18 | 
6 files changed, 83 insertions, 63 deletions
| diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index 034e1994f..ca575a889 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -35,7 +35,7 @@ from forms import *  from ishtar_common.forms import FinalForm  from ishtar_common.models import IshtarUser, get_current_profile  from ishtar_common.views import get_autocomplete_generic, IshtarMixin, \ -    LoginRequiredMixin +    LoginRequiredMixin, QAItemEditForm  from ishtar_common.views_item import display_item, get_item, show_item, \      revert_item, get_autocomplete_item  from wizards import * @@ -596,49 +596,7 @@ def reset_wizards(request):          wizard_class.session_reset(request, url_name) -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 - -  class QAFindForm(QAItemEditForm):      model = models.Find      form_class = QAFindFormSingle      form_class_multi = QAFindFormMulti - -    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'])) 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'])) diff --git a/scss/custom.scss b/scss/custom.scss index e265b61e7..076522366 100644 --- a/scss/custom.scss +++ b/scss/custom.scss @@ -97,6 +97,24 @@ pre {      font-weight: bold;  } +#modal-advanced-search .modal-header{ +    flex-wrap: wrap; +    padding-bottom: 0; +} + +#modal-advanced-search .modal-header .alert-secondary{ +    background-color: $white; +} + +.modal-header, .modal-footer{ +    background-color: $gray-200; +} + +.modal-body.body-scroll{ +    max-height: calc(100vh - 200px); +    overflow-y: auto; +} +  .modal-dialog.full {    width: 98%;    height: 98%; | 
