diff options
| -rw-r--r-- | archaeological_finds/forms_treatments.py | 36 | 
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>  ' +        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), | 
