示例#1
0
def data_table_attr(context, attr, verbose_name=None, obj=None, caps=False):
    if obj is None:
        obj = context['object']
    value = obj
    for attr_part in attr.split('.'):
        if value is None:
            break
        value = getattr(value, attr_part)
        if callable(value):
            value = value()

    if not value:
        return {}

    # Renders value using language preferences (as in a template).
    sub_context = copy(context)
    sub_context['value'] = value
    value = Template('{{ value }}').render(sub_context)

    if verbose_name is None:
        try:
            verbose_name = obj._meta.get_field(attr.split('.')[0]).verbose_name
        except FieldDoesNotExist:
            verbose_name = getattr(obj, attr).short_description

    if caps:
        value = capfirst(value.strip())
    return {
        'verbose_name': verbose_name,
        'value': value,
    }
示例#2
0
def famous_event(context, n=10):
    """
    Affiche l’un des ``n`` événements les plus documentés.

    Or les événements les plus documentés sont généralement
    les plus remarquable.
    """

    request = context['request']

    out = h3(ugettext('Événement à la une'))

    data = Source.objects \
        .filter(evenements__isnull=False).values('evenements') \
        .annotate(n_sources=Count('pk')).order_by('-n_sources') \
        .values_list('evenements', 'n_sources')

    n = min(data.count(), n)
    if n == 0:
        return ''

    while True:
        pk, n_sources = data[randrange(n)]
        try:
            e = valid_events(request).get(pk=pk)
        except Evenement.DoesNotExist:
            continue
        else:
            break

    out += h4(capfirst(e.debut.moment_str()))
    out += h4(e.debut.lieu_str(tags=False))
    out += p(ugettext('On donnait %s') % event_oeuvres(e))
    out += read_more(e)
    return out
示例#3
0
def data_table_list_header(context):
    count = context['pages'].total_count()
    has_count = context['has_count']
    has_count_if_one = context['has_count_if_one']
    verbose_name = context['verbose_name']
    verbose_name_plural = context['verbose_name_plural']
    out = ''
    if has_count and (count != 1 or has_count_if_one):
        out = '%s ' % count
    out += force_text(verbose_name if count == 1 else verbose_name_plural)
    return capfirst(out)
示例#4
0
    def clean(self):
        data = super(OeuvreForm, self).clean()

        # Ensures title look like "Le Tartuffe, ou l’Imposteur.".
        data['prefixe_titre'] = capfirst(data.get('prefixe_titre', ''))
        data['titre'] = capfirst(data.get('titre', ''))
        data['prefixe_titre_secondaire'] = data.get('prefixe_titre_secondaire',
                                                    '').lower()
        data['titre_secondaire'] = capfirst(data.get('titre_secondaire', ''))

        type_extrait = data.get('type_extrait')
        type_extrait_affiche = (type_extrait and type_extrait
                                not in Oeuvre.TYPES_EXTRAIT_CACHES)

        if type_extrait_affiche:
            for fieldname in ('genre', 'tempo'):
                if data.get(fieldname):
                    msg = _('« %s » ne peut être saisi avec ce type '
                            'd’extrait.') % self.get_field_verbose(fieldname)
                    self.add_error(fieldname, msg)
                    self.add_error('type_extrait', msg)
        elif not (data.get('titre') or data.get('genre') or data.get('tempo')):
            msg = _('Un titre, un genre ou un tempo '
                    'doit au moins être précisé.')
            self.add_error('titre', msg)
            self.add_error('genre', msg)
            self.add_error('tempo', msg)

        if data.get('creation_type') is None and any(
                data.get(k)
                for k in ('creation_date', 'creation_date_approx',
                          'creation_heure', 'creation_heure_approx',
                          'creation_lieu', 'creation_lieu_approx')):
            self.add_error(
                'creation_type',
                _('« Type de création » doit être rempli '
                  'lorsqu’on remplit la création.'))

        return data
示例#5
0
文件: forms.py 项目: dezede/dezede
    def clean(self):
        data = super(OeuvreForm, self).clean()

        # Ensures title look like "Le Tartuffe, ou l’Imposteur.".
        data['prefixe_titre'] = capfirst(data.get('prefixe_titre', ''))
        data['titre'] = capfirst(data.get('titre', ''))
        data['prefixe_titre_secondaire'] = data.get(
            'prefixe_titre_secondaire', '').lower()
        data['titre_secondaire'] = capfirst(data.get('titre_secondaire', ''))

        type_extrait = data.get('type_extrait')
        type_extrait_affiche = (
            type_extrait and type_extrait not in Oeuvre.TYPES_EXTRAIT_CACHES)

        if type_extrait_affiche:
            for fieldname in ('genre', 'tempo'):
                if data.get(fieldname):
                    msg = _('« %s » ne peut être saisi avec ce type '
                            'd’extrait.') % self.get_field_verbose(fieldname)
                    self.add_error(fieldname, msg)
                    self.add_error('type_extrait', msg)
        elif not (data.get('titre') or data.get('genre') or data.get('tempo')):
            msg = _('Un titre, un genre ou un tempo '
                    'doit au moins être précisé.')
            self.add_error('titre', msg)
            self.add_error('genre', msg)
            self.add_error('tempo', msg)

        if data.get('creation_type') is None and any(
            data.get(k) for k in (
                    'creation_date', 'creation_date_approx',
                    'creation_heure', 'creation_heure_approx',
                    'creation_lieu', 'creation_lieu_approx')):
            self.add_error('creation_type',
                           _('« Type de création » doit être rempli '
                             'lorsqu’on remplit la création.'))

        return data
示例#6
0
 def get_field_verbose(self, fieldname):
     return capfirst(
         self._meta.model._meta.get_field(fieldname).verbose_name)
示例#7
0
文件: forms.py 项目: dezede/dezede
 def get_field_verbose(self, fieldname):
     return capfirst(
         self._meta.model._meta.get_field(fieldname).verbose_name)