예제 #1
0
파일: forms.py 프로젝트: pombredanne/dezede
    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
예제 #2
0
파일: forms.py 프로젝트: pombredanne/dezede
    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
예제 #3
0
 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.'))
예제 #4
0
파일: forms.py 프로젝트: pombredanne/dezede
 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
예제 #5
0
 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.'))
예제 #6
0
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,
    }
예제 #7
0
파일: admin.py 프로젝트: pombredanne/dezede
    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,
                }),
            )
예제 #8
0
파일: forms.py 프로젝트: pombredanne/dezede
    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
예제 #9
0
파일: views.py 프로젝트: pombredanne/dezede
 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
예제 #10
0
def no(txt):
    """
    >>> print(no('13'))
    n°\u00A013
    """
    return _('n° %s') % txt
예제 #11
0
파일: admin.py 프로젝트: pombredanne/dezede
 def lookups(self, request, model_admin):
     return (
         ('1', _('Oui')),
         ('0', _('Non')),
     )
예제 #12
0
파일: admin.py 프로젝트: pombredanne/dezede
                                     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
#

예제 #13
0
    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
예제 #14
0
 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)'))
예제 #15
0
 def clean(self):
     if self.parent == self:
         raise ValidationError(_('Le lieu a une parenté avec lui-même.'))