The field object is used to determine certain automatic mapping operations (ie Lists of Odin resources to other Odin resources). :return: Dictionary """ raise NotImplementedError() class ResourceFieldResolver(FieldResolverBase): """Field resolver for Odin resource objects.""" def get_field_dict(self): """Return a dictionary of fields along with their names.""" return getmeta(self.obj).field_map registration.register_field_resolver(ResourceFieldResolver, Resource) class MappingMeta(type): """ Meta-class for all Mappings """ def __new__(mcs, name, bases, attrs): super_new = super(MappingMeta, mcs).__new__ # attrs will never be empty for classes declared in the standard way # (ie. with the `class` keyword). This is quite robust. if name == 'NewBase' and attrs == {}: return super_new(mcs, name, bases, attrs) parents = [
from odin.codecs import msgpack_codec except ImportError: msgpack_codec = None # Register support for Django Models and Validators class ModelFieldResolver(FieldResolverBase): """ Field resolver for Django Models """ def get_field_dict(self): meta = self.obj._meta return {f.attname: f for f in meta.fields} registration.register_field_resolver(ModelFieldResolver, models.Model) # Register a the Django ValidationError exception with Odin. def django_validation_error_handler(exception, field, errors): if hasattr(exception, 'code') and exception.code in field.error_messages: message = field.error_messages[exception.code] if exception.params: message = message % exception.params errors.append(message) else: errors.extend(exception.messages) registration.register_validation_error_handler(ValidationError, django_validation_error_handler)