summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
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
commit575a7fd93e52b750e323cde669e5a4c329ead978 (patch)
treeec9c9767e29588622d0e70c58fcf3bbd2b8e98de /ishtar_common
parent7998a1f6d3096b8a6a2d8bdb80d3034a68bc544d (diff)
downloadIshtar-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.js6
-rw-r--r--ishtar_common/templates/blocks/bs_form_snippet.html19
-rw-r--r--ishtar_common/templates/ishtar/qa_form.html9
-rw-r--r--ishtar_common/views.py50
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">&times;</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">&times;</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"{} &ndash; {}".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']))