def clean(self): data = super(ElementDeDistributionForm, self).clean() error_msgs = defaultdict(list) if not (data[b'individus'] or data[b'ensembles']): msg = _('Vous devez remplir au moins un individu ou un ensemble.') error_msgs[b'individus'].append(msg) error_msgs[b'ensembles'].append(msg) if data.get(b'pupitre') and data[b'profession']: msg = _('Vous ne pouvez remplir à la fois ' '« Pupitre » et « Profession ».') error_msgs[b'pupitre'].append(msg) error_msgs[b'profession'].append(msg) if data.get(b'pupitre', '') != '' \ and data[b'profession'] \ and data[b'profession'].parties.exists(): msg = _('Au moins un rôle ou instrument est lié à cette ' 'profession. Remplissez donc « Pupitre » à la place.') error_msgs[b'profession'].append(msg) for k, v in error_msgs.items(): self._errors[k] = self.error_class(v) del data[k] return data
def clean(self): data = super(ElementDeProgrammeForm, self).clean() if not (data[b'autre'] or data[b'oeuvre'] or data[b'distribution']): raise ValidationError(_('Vous devez remplir au moins « Œuvre », ' '« Autre » ou « Distribution ».')) if data[b'autre'] and data[b'oeuvre']: raise ValidationError(_('Vous ne pouvez remplir à la fois ' '« Œuvre » et « Autre ».')) return data
def clean(self): try: parent, enfant = self.parent, self.enfant except Individu.DoesNotExist: return if parent and enfant and parent == enfant: raise ValidationError(_('Un individu ne peut avoir une ' 'parenté avec lui-même.'))
def clean_designation(self): # Anticipe si la désignation donnera un résultat nul. data = self.cleaned_data designation = data[b'designation'] if designation == 'P' and not data[b'pseudonyme'] \ or designation == 'B' and not data[b'nom_naissance'] \ or designation == 'F' and not data[b'prenoms']: raise ValidationError(_('Il manque des données pour pouvoir ' 'choisir cette désignation.')) return designation
def clean(self): try: naissance = getattr(self.ancrage_naissance, 'date') deces = getattr(self.ancrage_deces, 'date') except AttributeError: pass else: if naissance and deces and deces < naissance: raise ValidationError(_('Le décès ne peut précéder ' 'la naissance.'))
def ex(txt, pre='', post=''): """ >>> print(ex('30/01/1989')) Exemple : « 30/01/1989 ». """ return _('Exemple : %(pre)s« %(txt)s »%(post)s.') % { 'pre': pre, 'txt': txt, 'post': post, }
def pre_get_form(self, request, obj=None, **kwargs): if not self.fields and not self.fieldsets: # Cas où le formulaire est fait automatiquement et inclut donc # les champs qu'on voudrait ajouter ci-dessous. return added_fields = self._get_added_fields( request, 'additional_fields', excluded=self.exclude or ()) if added_fields: self.added_fieldsets = ( (_('Champs d’administration'), { 'classes': ('grp-collapse grp-closed',), 'fields': added_fields, }), )
def __init__(self, *args, **kwargs): queryset = kwargs.pop('queryset') self.helper = FormHelper() self.helper.form_method = 'GET' self.helper.form_class = 'well well-small' self.helper.layout = Layout( Field('q', 'dates', HTML('<hr/>'), 'lieu', 'oeuvre', 'individu', css_class='span12'), HTML('<hr/>'), Submit('', _('Filtrer'), css_class='btn-primary btn-block'), ) super(EvenementListForm, self).__init__(*args, **kwargs) for field in self.fields.values(): field.widget.attrs[b'placeholder'] = (field.label or '') + '...' field.label = '' self.fields['dates'].widget.queryset = queryset
def get_context_data(self, **kwargs): context = super(HierarchicUserDetail, self).get_context_data(**kwargs) if self.object.legal_person: context['verboses'] = { 'disciple': _('membre'), 'disciples': _('membres'), } else: context['verboses'] = { 'disciple': _('disciple'), 'disciples': _('disciples'), } if getattr(self.object.mentor, 'legal_person', False): context['verboses']['mentor'] = _('appartenance') else: context['verboses']['mentor'] = _('mentor') return context
def no(txt): """ >>> print(no('13')) n°\u00A013 """ return _('n° %s') % txt
def lookups(self, request, model_admin): return ( ('1', _('Oui')), ('0', _('Non')), )
self).has_delete_permission(request, obj) return self.check_user_ownership(request, obj, has_class_permission) def queryset(self, request): user = request.user qs = super(CustomBaseModel, self).queryset(request) if not user.is_superuser and IS_POPUP_VAR not in request.REQUEST: qs = qs.filter( owner__in=user.get_descendants(include_self=True)) return qs # Common fieldsets COMMON_FIELDSET_LABEL = _('Champs courants') ADVANCED_FIELDSET_LABEL = _('Champs courants') PERIODE_D_ACTIVITE_FIELDSET = (_('Période d’activité'), { 'fields': (('debut', 'debut_precision'), ('fin', 'fin_precision')) }) FILES_FIELDSET = (_('Fichiers'), { 'classes': ('grp-collapse grp-closed',), 'fields': ('illustrations', 'documents',), }) # # Filters #
b'CommonTreeManager', b'Document', b'Illustration', b'Etat', b'OrderedDefaultDict', b'TypeDeParente', b'TypeDeCaracteristique', ) class OrderedDefaultDict(OrderedDict): def __missing__(self, k): self[k] = l = [] return l # # Définitions globales du fichier # LOWER_MSG = _('En minuscules.') PLURAL_MSG = _('À remplir si le pluriel n’est pas un simple ' 'ajout de « s ». Exemple : « animal » devient « animaux » ' 'et non « animals ».') DATE_MSG = _('Exemple : « 6/6/1944 » pour le 6 juin 1944.') def calc_pluriel(obj, attr_base='nom', attr_suffix='_pluriel'): """ Renvoie le nom au pluriel d'obj, si possible. Sinon renvoie smart_text(obj). """ try: pluriel = getattr(obj, attr_base + attr_suffix) if pluriel: return pluriel
def clean(self): if not (self.date or self.date_approx or self.lieu or self.lieu_approx): raise ValidationError(_('Il faut au moins une date ou un lieu ' '(ils peuvent n’être qu’approximatifs)'))
def clean(self): if self.parent == self: raise ValidationError(_('Le lieu a une parenté avec lui-même.'))