# HG changeset patch # User durandn # Date 1474035580 -7200 # Node ID 456d13962c0daad2cd0945f766d66250e3343b45 # Parent 5dcc09a350a6a8a0f9cc83ce14fa2a9653749acb Reworked mandatory fields to submit an annotation (only one of title, description or tags is required) #19 diff -r 5dcc09a350a6 -r 456d13962c0d src/iconolab/forms/annotations.py --- a/src/iconolab/forms/annotations.py Fri Sep 16 16:19:01 2016 +0200 +++ b/src/iconolab/forms/annotations.py Fri Sep 16 16:19:40 2016 +0200 @@ -1,6 +1,8 @@ from django import forms from iconolab.models import AnnotationRevision -import json +import json, logging + +logger = logging.getLogger(__name__) class MultipleTagsField(forms.TypedMultipleChoiceField): pass @@ -16,6 +18,17 @@ 'fragment': forms.HiddenInput(), 'tags': forms.HiddenInput() } + + def __init__(self, *args, **kwargs): + super(AnnotationRevisionForm, self).__init__(*args, **kwargs) + for key in self.fields: + if key != "comment": + self.fields[key].required = False + + def clean(self, *args, **kwargs): + cleaned_data = super(AnnotationRevisionForm, self).clean(*args, **kwargs) + if not (cleaned_data.get("title", "") or cleaned_data.get("description", "") or json.loads(cleaned_data.get("tags", "[]"))): + raise forms.ValidationError("Au moins un de ces champs doit être renseigné: description, titre ou mot-clé", code="missing_fields") def tags_json(self): if self.instance: diff -r 5dcc09a350a6 -r 456d13962c0d src/iconolab/templates/iconolab/change_annotation.html --- a/src/iconolab/templates/iconolab/change_annotation.html Fri Sep 16 16:19:01 2016 +0200 +++ b/src/iconolab/templates/iconolab/change_annotation.html Fri Sep 16 16:19:40 2016 +0200 @@ -90,7 +90,15 @@
- {% if form.errors %} + {% if form.non_field_errors %} + + {% endif %} + + {% if form.errors %}