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(),
        },
    )
Esempio n. 2
0
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')