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)}
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(' ') 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]))
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(' ') 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]))