def make_account_me_serialier(api_namespace=DEFAULT_API_NAMESPACE): meta = get_meta_definition_by_model_name('User') meta_serializer_class = make_serializer_class(meta_model=meta, api_namespace=api_namespace, nested=False, safe=True) Meta = meta_serializer_class.Meta Meta.fields = [ field for field in Meta.fields if field not in ['admin', 'is_staff', 'is_superuser', 'is_active'] ] + ['level'] Meta.read_only_fields = Meta.read_only_fields + [ 'uid', 'public', 'creation_date', 'modification_date', '{}s'.format(DIVIDER_MODEL.lower()), ] return type( str('AccountMeSerializer'), (meta_serializer_class, ), { 'Meta': Meta, 'level': serializers.SerializerMethodField(), 'get_level': lambda self, obj: obj.get_level(), }, )
def get_fields_and_types_of_model(model): fields_and_types = defaultdict(lambda: 'Unknow type') meta_model = get_meta_definition_by_model_name(model.__name__) for field_name, field in meta_model.get_fields(): fields_and_types[field_name] = TYPE_EQ.get(field.f_type, 'Unknow type') return fields_and_types
def test_get_meta_definition_by_model_name(self): with self.assertRaises(AttributeError): get_meta_definition_by_model_name('UnkNowModelNameForErrorTest')