summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/static/js/ishtar.js14
-rw-r--r--ishtar_common/templates/ishtar/forms/qa_base.html (renamed from ishtar_common/templates/ishtar/qa_form.html)23
-rw-r--r--ishtar_common/templates/ishtar/forms/qa_form.html33
-rw-r--r--ishtar_common/views.py50
4 files changed, 99 insertions, 21 deletions
diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js
index 2750efcc2..9eae1b04d 100644
--- a/ishtar_common/static/js/ishtar.js
+++ b/ishtar_common/static/js/ishtar.js
@@ -833,3 +833,17 @@ var ajax_post = function(url, data, target, callback){
});
};
+
+var qa_action_register = function(url) {
+ $('#qa-action').on('submit', function(event){
+ event.preventDefault();
+ $('#modal-dynamic-form').modal("hide");
+ short_wait();
+ ajax_post(
+ url, $(this).serialize(), "#modal-dynamic-form",
+ function(){
+ $('#modal-dynamic-form').modal("show");
+ }
+ );
+ });
+};
diff --git a/ishtar_common/templates/ishtar/qa_form.html b/ishtar_common/templates/ishtar/forms/qa_base.html
index fe373ed57..ee4c242b7 100644
--- a/ishtar_common/templates/ishtar/qa_form.html
+++ b/ishtar_common/templates/ishtar/forms/qa_base.html
@@ -1,6 +1,7 @@
{% load i18n inline_formset table_form %}
-<div class="modal-dialog modal-lg modal-dialog-centered">
+<div
+ class="modal-dialog {% if modal_size == 'large' %}modal-lg {% elif modal_size == 'small'%}modal-sm {% endif%}modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h2>{{page_name|safe}}</h2>
@@ -12,6 +13,8 @@
id="qa-action">{% csrf_token %}
<div class="modal-body body-scroll">
<div class='form'>
+ {% block main_form %}
+
{% for error in form.non_field_errors %}
<p>{{ error }}</p>
{% endfor %}
@@ -40,9 +43,12 @@
{% endfor %}
</table>
{% endif %}
+
+ {% endblock %}
</div>
</div>
<div class="modal-footer">
+ {% block footer %}
<button type="submit" id="submit_form" name='validate'
value="validate" class="btn btn-success">
{% if confirm %}
@@ -55,21 +61,16 @@
aria-label="Close" class="btn btn-secondary">
{% trans "Cancel" %}
</button>
+ {% endblock %}
</div>
</form>
</div>
</div>
<script type="text/javascript">
- $('#qa-action').on('submit', function(event){
- event.preventDefault();
- $('#modal-dynamic-form').modal("hide");
- short_wait();
- ajax_post(
- "{{url}}", $(this).serialize(), "#modal-dynamic-form",
- function(){
- $('#modal-dynamic-form').modal("show");
- }
- );
+ {% block js %}
+ {% endblock %}
+ $(document).ready(function(){
+ qa_action_register("{{url}}");
});
</script>
diff --git a/ishtar_common/templates/ishtar/forms/qa_form.html b/ishtar_common/templates/ishtar/forms/qa_form.html
new file mode 100644
index 000000000..c843dbd2d
--- /dev/null
+++ b/ishtar_common/templates/ishtar/forms/qa_form.html
@@ -0,0 +1,33 @@
+{% extends "ishtar/forms/qa_base.html" %}
+{% load i18n inline_formset table_form %}
+
+{% block main_form %}
+ {% for error in form.non_field_errors %}
+ <p>{{ error }}</p>
+ {% endfor %}
+ {% bs_form form %}
+
+ {% if confirm %}
+ <input type="hidden" name="confirm" value="1"/>
+ <h4>{% trans "Modified items" %}</h4>
+ <ul>{% for item in items %}
+ <li>{{item}}</li>{% endfor %}
+ </ul>
+ <h4>{% trans "Modification" %}</h4>
+ <table>
+ {% for field in form %}
+ {% if field.value %}
+ <tr>
+ <th>{{field.label}}{% trans ":" %}&nbsp;</th>
+ <td>{% if field.field.rendered_value %}
+ {{ field.field.rendered_value }}
+ {% else %}
+ {{ field.value }}
+ {% endif %}
+ </td>
+ </tr>
+ {% endif %}
+ {% endfor %}
+ </table>
+ {% endif %}
+{% endblock %}
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index aed24093f..9946a9dee 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -1797,11 +1797,16 @@ class AlertList(JSONResponseMixin, LoginRequiredMixin,
return {'alerts': alerts}
-class QAItemEditForm(IshtarMixin, LoginRequiredMixin, FormView):
- template_name = 'ishtar/qa_form.html'
+class QAItemForm(IshtarMixin, LoginRequiredMixin, FormView):
+ template_name = 'ishtar/forms/qa_form.html'
model = None
form_class = None
- form_class_multi = None
+ page_name = u""
+ success_url = "/success/"
+ modal_size = None # large, small or None (medium)
+
+ def get_quick_action(self):
+ raise NotImplementedError()
def dispatch(self, request, *args, **kwargs):
assert self.model
@@ -1811,16 +1816,44 @@ class QAItemEditForm(IshtarMixin, LoginRequiredMixin, FormView):
raise Http404()
# check availability
- if not self.model.QA_EDIT.is_available(
+ quick_action = self.get_quick_action()
+ if not quick_action.is_available(
user=request.user, session=request.session):
for item in self.items:
- if not self.model.QA_EDIT.is_available(
+ if not quick_action.is_available(
user=request.user, session=request.session, obj=item):
raise Http404()
- self.confirm = kwargs.get('confirm', False) and True
self.url = request.get_full_path()
- return super(QAItemEditForm, self).dispatch(request, *args, **kwargs)
+ return super(QAItemForm, self).dispatch(request, *args, **kwargs)
+
+ def get_form_kwargs(self):
+ kwargs = super(QAItemForm, self).get_form_kwargs()
+ kwargs['items'] = self.items
+ return kwargs
+
+ def get_context_data(self, **kwargs):
+ data = super(QAItemForm, self).get_context_data(**kwargs)
+ data['url'] = self.url
+ data['items'] = self.items
+ data['modal_size'] = self.modal_size
+ data['page_name'] = u"{} &ndash; {}".format(
+ self.model._meta.verbose_name, self.page_name)
+ return data
+
+
+class QAItemEditForm(QAItemForm):
+ form_class_multi = None
+ modal_size = "large"
+
+ def get_quick_action(self):
+ return self.model.QA_EDIT
+
+ def dispatch(self, request, *args, **kwargs):
+ self.confirm = kwargs.get('confirm', False) and True
+ returned = super(QAItemEditForm, self).dispatch(request, *args,
+ **kwargs)
+ return returned
def get_form_class(self):
if len(self.items) > 1 and self.form_class_multi:
@@ -1829,7 +1862,6 @@ class QAItemEditForm(IshtarMixin, LoginRequiredMixin, FormView):
def get_form_kwargs(self):
kwargs = super(QAItemEditForm, self).get_form_kwargs()
- kwargs['items'] = self.items
kwargs['confirm'] = self.confirm
return kwargs
@@ -1837,12 +1869,10 @@ class QAItemEditForm(IshtarMixin, LoginRequiredMixin, FormView):
data = super(QAItemEditForm, self).get_context_data(**kwargs)
data['page_name'] = u"{} &ndash; {}".format(
self.model._meta.verbose_name, self.model.QA_EDIT.text)
- data['url'] = self.url
if self.confirm:
if 'confirm' not in self.url:
data['url'] = self.url.split('?')[0] + "confirm/"
data['confirm'] = True
- data['items'] = self.items
return data
def form_valid(self, form):