Пример #1
0
def display_readonly(field, adminform):
    values =[]
    value = field.field.value()

    if value==None:
        value = adminform.form.initial.get(field.field.name)

    if hasattr(value, "append"):
        values =value
    else:
        values.append(value)
    real_value=""
    if value ==None:
        if isinstance(field.field.field.widget, RelatedFieldWidgetWrapper):
            real_value=field.field.field.empty_label
            if real_value!="dead channel":
                real_value=""
    elif isinstance(field.field.field.widget, RelatedFieldWidgetWrapper):
        real_value = _display_readonly_related_field(field, adminform)
    elif hasattr( field.field.field.widget, "choices"):
        for choice in field.field.field.widget.choices:
            for value in values:
                if value == choice[0]:
                    real_value += u'%s<br/>' % choice[1]
    elif isinstance(field.field.field.widget, AdminFileWidget):
        if value!=None and value!="":
            real_value=display_file(value)
    elif isinstance(field.field.field, forms.BooleanField):
        real_value = "Yes" if value else "No"
    else:
        real_value = value

    return {'value': mark_safe(real_value)}
Пример #2
0
def feed_items_for_result(cl, result, form):
    first = True
    pk = cl.lookup_opts.pk.attname
    for field_name in cl.list_display:
        row_class = ''
        try:
            f = cl.lookup_opts.get_field(field_name)
        except models.FieldDoesNotExist:
            # For non-field list_display values, the value is either a method,
            # property or returned via a callable.
            try:
                if callable(field_name):
                    attr = field_name
                    value = attr(result)
                elif hasattr(cl.model_admin, field_name) and \
                   not field_name == '__str__' and not field_name == '__unicode__':
                    attr = getattr(cl.model_admin, field_name)
                    value = attr(result)
                else:
                    attr = getattr(result, field_name)
                    if callable(attr):
                        value = attr()
                    else:
                        value = attr
                allow_tags = getattr(attr, 'allow_tags', False)
                boolean = getattr(attr, 'boolean', False)
                if boolean:
                    allow_tags = True
                    result_repr = _boolean_icon(value)
                else:
                    result_repr = smart_unicode(value)
            except (AttributeError, ObjectDoesNotExist):
                result_repr = EMPTY_CHANGELIST_VALUE
            else:
                # Strip HTML tags in the resulting text, except if the
                # function has an "allow_tags" attribute set to True.
                if not allow_tags:
                    result_repr = escape(result_repr)
                else:
                    result_repr = mark_safe(result_repr)
        else:
            field_val = getattr(result, f.attname)

            if isinstance(f.rel, models.ManyToOneRel):
                if field_val is not None:
                    result_repr = escape(getattr(result, f.name))
                else:
                    result_repr = EMPTY_CHANGELIST_VALUE
            # Dates and times are special: They're formatted in a certain way.
            elif isinstance(f, models.DateField) or isinstance(
                    f, models.TimeField):
                if field_val:
                    if isinstance(f, models.DateTimeField):
                        result_repr = capfirst(
                            formats.date_format(field_val, 'DATETIME_FORMAT'))
                    elif isinstance(f, models.TimeField):
                        result_repr = capfirst(formats.time_format(field_val))
                    else:
                        result_repr = capfirst(formats.date_format(field_val))
                else:
                    result_repr = EMPTY_CHANGELIST_VALUE
                row_class = ' class="nowrap"'
            # Booleans are special: We use images.
            elif isinstance(f, models.BooleanField) or isinstance(
                    f, models.NullBooleanField):
                result_repr = _boolean_icon(field_val)
            # DecimalFields are special: Zero-pad the decimals.
            elif isinstance(f, models.DecimalField):
                if field_val is not None:
                    result_repr = ('%%.%sf' % f.decimal_places) % field_val
                else:
                    result_repr = EMPTY_CHANGELIST_VALUE
            # Fields with choices are special: Use the representation
            # of the choice.
            elif f.flatchoices:
                result_repr = dict(f.flatchoices).get(field_val,
                                                      EMPTY_CHANGELIST_VALUE)
            #file fields
            elif isinstance(f, models.FileField):
                result_repr = mark_safe(display_file(field_val))
            else:
                result_repr = escape(field_val)
        if force_unicode(result_repr) == '':
            result_repr = mark_safe('&nbsp;')

        if form and field_name in form.fields:
            bf = form[field_name]
            result_repr = mark_safe(
                force_unicode(bf.errors) + force_unicode(bf))
        else:
            result_repr = conditional_escape(result_repr)
        yield mark_safe(u'<td%s>%s</td>' % (row_class, result_repr))
    if form:
        yield mark_safe(force_unicode(form[cl.model._meta.pk.name]))
Пример #3
0
def feed_items_for_result(cl, result, form):
    first = True
    pk = cl.lookup_opts.pk.attname
    for field_name in cl.list_display:
        row_class = ''
        try:
            f = cl.lookup_opts.get_field(field_name)
        except models.FieldDoesNotExist:
            # For non-field list_display values, the value is either a method,
            # property or returned via a callable.
            try:
                if callable(field_name):
                    attr = field_name
                    value = attr(result)
                elif hasattr(cl.model_admin, field_name) and \
                   not field_name == '__str__' and not field_name == '__unicode__':
                    attr = getattr(cl.model_admin, field_name)
                    value = attr(result)
                else:
                    attr = getattr(result, field_name)
                    if callable(attr):
                        value = attr()
                    else:
                        value = attr
                allow_tags = getattr(attr, 'allow_tags', False)
                boolean = getattr(attr, 'boolean', False)
                if boolean:
                    allow_tags = True
                    result_repr = _boolean_icon(value)
                else:
                    result_repr = smart_unicode(value)
            except (AttributeError, ObjectDoesNotExist):
                result_repr = EMPTY_CHANGELIST_VALUE
            else:
                # Strip HTML tags in the resulting text, except if the
                # function has an "allow_tags" attribute set to True.
                if not allow_tags:
                    result_repr = escape(result_repr)
                else:
                    result_repr = mark_safe(result_repr)
        else:
            field_val = getattr(result, f.attname)

            if isinstance(f.rel, models.ManyToOneRel):
                if field_val is not None:
                    result_repr = escape(getattr(result, f.name))
                else:
                    result_repr = EMPTY_CHANGELIST_VALUE
            # Dates and times are special: They're formatted in a certain way.
            elif isinstance(f, models.DateField) or isinstance(f, models.TimeField):
                if field_val:
                    if isinstance(f, models.DateTimeField):
                        result_repr = capfirst(formats.date_format(field_val, 'DATETIME_FORMAT'))
                    elif isinstance(f, models.TimeField):
                        result_repr = capfirst(formats.time_format(field_val))
                    else:
                        result_repr = capfirst(formats.date_format(field_val))
                else:
                    result_repr = EMPTY_CHANGELIST_VALUE
                row_class = ' class="nowrap"'
            # Booleans are special: We use images.
            elif isinstance(f, models.BooleanField) or isinstance(f, models.NullBooleanField):
                result_repr = _boolean_icon(field_val)
            # DecimalFields are special: Zero-pad the decimals.
            elif isinstance(f, models.DecimalField):
                if field_val is not None:
                    result_repr = ('%%.%sf' % f.decimal_places) % field_val
                else:
                    result_repr = EMPTY_CHANGELIST_VALUE
            # Fields with choices are special: Use the representation
            # of the choice.
            elif f.flatchoices:
                result_repr = dict(f.flatchoices).get(field_val, EMPTY_CHANGELIST_VALUE)
            #file fields
            elif isinstance(f, models.FileField):
                result_repr = mark_safe(display_file(field_val))
            else:
                result_repr = escape(field_val)
        if force_unicode(result_repr) == '':
            result_repr = mark_safe('&nbsp;')

        if form and field_name in form.fields:
            bf = form[field_name]
            result_repr = mark_safe(force_unicode(bf.errors) + force_unicode(bf))
        else:
            result_repr = conditional_escape(result_repr)
        yield mark_safe(u'<td%s>%s</td>' % (row_class, result_repr))
    if form:
        yield mark_safe(force_unicode(form[cl.model._meta.pk.name]))