def test_custom_fields(self): self.assertEqual(views.get_readable_field_data_type(CustomField()), 'A custom field type') self.assertEqual( views.get_readable_field_data_type(DescriptionLackingField()), _('Field of type: %(field_type)s') % {'field_type': 'DescriptionLackingField'})
def test_custom_fields(self): self.assertEqual(views.get_readable_field_data_type(CustomField()), "A custom field type") self.assertEqual( views.get_readable_field_data_type(DescriptionLackingField()), "Field of type: DescriptionLackingField", )
def test_custom_fields(self): self.assertEqual( views.get_readable_field_data_type(fields.CustomField()), u'A custom field type') self.assertEqual( views.get_readable_field_data_type( fields.DescriptionLackingField()), u'Field of type: DescriptionLackingField')
def test_custom_fields(self): self.assertEqual( views.get_readable_field_data_type(fields.CustomField()), u'A custom field type' ) self.assertEqual( views.get_readable_field_data_type(fields.DescriptionLackingField()), u'Field of type: DescriptionLackingField' )
def test_custom_fields(self): self.assertEqual( views.get_readable_field_data_type(fields.CustomField()), 'A custom field type' ) self.assertEqual( views.get_readable_field_data_type(fields.DescriptionLackingField()), _('Field of type: %(field_type)s') % { 'field_type': 'DescriptionLackingField' } )
def test_builtin_fields(self): self.assertEqual( views.get_readable_field_data_type(builtin_fields.BooleanField()), _('Boolean (Either True or False)') )
def test_builtin_fields(self): self.assertEqual( views.get_readable_field_data_type(fields.BooleanField()), 'Boolean (Either True or False)' )
def test_field_name(self): with self.assertRaises(AttributeError): views.get_readable_field_data_type("NotAField")
def test_field_name(self): with self.assertRaises(AttributeError): views.get_readable_field_data_type("NotAField")
def get_fields(model): opts = model._meta # Gather fields/field descriptions. fields = [] for field in opts.fields: # ForeignKey is a special case since the field will actually be a # descriptor that returns the other object if isinstance(field, models.ForeignKey): data_type = field.rel.to.__name__ app_label = field.rel.to._meta.app_label verbose = parse_model_rst((_("the related `%(app_label)s.%(data_type)s` object") % {'app_label': app_label, 'data_type': data_type}), 'xraymodel', _('model:') + data_type) else: data_type = get_readable_field_data_type(field) verbose = field.verbose_name help_text = field.help_text if help_text and '`' in help_text: try: help_text = parse_model_rst(help_text, 'xraymodel', _('model:') + opts.model_name) except: pass fields.append({ 'name': field.name, 'group_name': 'self', 'data_type': data_type, 'verbose': verbose, 'help_text': help_text, }) # Gather many-to-many fields. for field in opts.many_to_many: data_type = field.rel.to.__name__ app_label = field.rel.to._meta.app_label verbose = _("related `%(app_label)s.%(object_name)s` objects") % { 'app_label': app_label, 'object_name': data_type} fields.append({ 'name': "%s.all" % field.name, 'group_name': 'm2m', "data_type": 'List', 'verbose': parse_model_rst(_("all %s") % verbose, 'xraymodel', _('model:') + opts.model_name), }) fields.append({ 'name': "%s.count" % field.name, 'group_name': 'm2m', 'data_type': 'Integer', 'verbose': parse_model_rst(_("number of %s") % verbose, 'xraymodel', _('model:') + opts.model_name), }) # Gather related objects # (v1.4) rels = opts.get_all_related_objects() + opts.get_all_related_many_to_many_objects() rels = opts.related_objects for rel in rels: # (v1.4)_rel_mod_meta = rel.opts _rel_mod_meta = rel.related_model._meta verbose = _("related `%(app_label)s.%(object_name)s` objects") % { 'app_label': _rel_mod_meta.app_label, 'object_name': _rel_mod_meta.object_name } accessor = rel.get_accessor_name() fields.append({ 'name': "%s.all" % accessor, 'group_name': 'related', 'data_type': 'List', 'verbose': parse_model_rst( _("all %s") % verbose, 'xraymodel', _('model:') + opts.model_name ), }) fields.append({ 'name': "%s.count" % accessor, 'group_name': 'related', 'data_type': 'Integer', 'verbose': parse_model_rst(_("number of %s") % verbose, 'xraymodel', _('model:') + opts.model_name), }) return fields
from __future__ import unicode_literals
def test_multiline_custom_field_truncation(self): self.assertEqual( views.get_readable_field_data_type(fields.ManyLineDocstringField()), u'Many-line custom field' )
def get_fields(model): opts = model._meta # Gather fields/field descriptions. fields = [] for field in opts.fields: # ForeignKey is a special case since the field will actually be a # descriptor that returns the other object if isinstance(field, models.ForeignKey): data_type = field.rel.to.__name__ app_label = field.rel.to._meta.app_label verbose = parse_model_rst( (_("the related `%(app_label)s.%(data_type)s` object") % { 'app_label': app_label, 'data_type': data_type }), 'xraymodel', _('model:') + data_type) else: data_type = get_readable_field_data_type(field) verbose = field.verbose_name help_text = field.help_text if help_text and '`' in help_text: try: help_text = parse_model_rst( help_text, 'xraymodel', _('model:') + opts.model_name) except: pass fields.append({ 'name': field.name, 'group_name': 'self', 'data_type': data_type, 'verbose': verbose, 'help_text': help_text, }) # Gather many-to-many fields. for field in opts.many_to_many: data_type = field.rel.to.__name__ app_label = field.rel.to._meta.app_label verbose = _( "related `%(app_label)s.%(object_name)s` objects") % { 'app_label': app_label, 'object_name': data_type } fields.append({ 'name': "%s.all" % field.name, 'group_name': 'm2m', "data_type": 'List', 'verbose': parse_model_rst( _("all %s") % verbose, 'xraymodel', _('model:') + opts.model_name), }) fields.append({ 'name': "%s.count" % field.name, 'group_name': 'm2m', 'data_type': 'Integer', 'verbose': parse_model_rst( _("number of %s") % verbose, 'xraymodel', _('model:') + opts.model_name), }) # Gather related objects # (v1.4) rels = opts.get_all_related_objects() + opts.get_all_related_many_to_many_objects() rels = opts.related_objects for rel in rels: # (v1.4)_rel_mod_meta = rel.opts _rel_mod_meta = rel.related_model._meta verbose = _( "related `%(app_label)s.%(object_name)s` objects") % { 'app_label': _rel_mod_meta.app_label, 'object_name': _rel_mod_meta.object_name } accessor = rel.get_accessor_name() fields.append({ 'name': "%s.all" % accessor, 'group_name': 'related', 'data_type': 'List', 'verbose': parse_model_rst( _("all %s") % verbose, 'xraymodel', _('model:') + opts.model_name), }) fields.append({ 'name': "%s.count" % accessor, 'group_name': 'related', 'data_type': 'Integer', 'verbose': parse_model_rst( _("number of %s") % verbose, 'xraymodel', _('model:') + opts.model_name), }) return fields
def test_custom_fields(self): self.assertEqual(views.get_readable_field_data_type(CustomField()), "A custom field type") self.assertEqual( views.get_readable_field_data_type(DescriptionLackingField()), "Field of type: DescriptionLackingField" )