summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-16 16:38:29 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-16 16:38:29 +0200
commit0124b3fbcc45374a4b40ab988305a6ce1ac1a6f4 (patch)
treec0606a4bf7e067265305be96de3b86fda6444336
parentd29d61413717bbb03ed5ddd82194290109c4847f (diff)
downloadIshtar-0124b3fbcc45374a4b40ab988305a6ce1ac1a6f4.tar.bz2
Ishtar-0124b3fbcc45374a4b40ab988305a6ce1ac1a6f4.zip
Treatment: warning when a treatment state is not reversible
-rw-r--r--archaeological_finds/forms_treatments.py36
1 files changed, 35 insertions, 1 deletions
diff --git a/archaeological_finds/forms_treatments.py b/archaeological_finds/forms_treatments.py
index c9dcdea86..4f906f1b9 100644
--- a/archaeological_finds/forms_treatments.py
+++ b/archaeological_finds/forms_treatments.py
@@ -83,6 +83,39 @@ class TreatmentFormSelection(forms.Form):
validators=[valid_id(models.Treatment)])
+class TreatmentStateSelect(forms.Select):
+ def render(self, name, value, attrs=None, renderer=None):
+ rendered = super(TreatmentStateSelect, self).render(name, value, attrs,
+ renderer)
+ executed_id = [
+ str(t.pk) for t in models.TreatmentState.objects.filter(
+ executed=True).all()]
+ if not executed_id:
+ return rendered
+ message = '<i class="fa fa-exclamation-triangle" ' \
+ 'aria-hidden="true"></i> &nbsp;'
+ message += str(_("Once validated, this state is not reversible."))
+ rendered += """
+ <div id="%(name)s-msg"class="alert alert-warning d-none">%(message)s</div>
+ <script type='text/javascript'>
+ var %(id)s_exec_list = ['%(exec_list)s'];
+ var %(id)s_check = function(){
+ var current_val = $("#id_%(name)s").val();
+ if (%(id)s_exec_list.indexOf(current_val) != -1){
+ $("#%(name)s-msg").removeClass("d-none");
+ } else {
+ $("#%(name)s-msg").addClass("d-none");
+ }
+ };
+
+ $("#id_%(name)s").change(%(id)s_check);
+ %(id)s_check();
+ </script>""" % {"name": name, "id": name.replace("-", "_"),
+ "exec_list": "','".join(executed_id),
+ "message": message}
+ return rendered
+
+
class BaseTreatmentForm(CustomForm, ManageOldType):
UPSTREAM_IS_MANY = False
DOWNSTREAM_IS_MANY = False
@@ -104,7 +137,8 @@ class BaseTreatmentForm(CustomForm, ManageOldType):
treatment_type = widgets.Select2MultipleField(
label=_(u"Treatment type"), choices=[],
widget=widgets.CheckboxSelectMultiple)
- treatment_state = forms.ChoiceField(label=_(u"State"), choices=[])
+ treatment_state = forms.ChoiceField(label=_(u"State"), choices=[],
+ widget=TreatmentStateSelect)
year = forms.IntegerField(label=_("Year"),
initial=lambda: datetime.datetime.now().year,
validators=[validators.MinValueValidator(1000),