fixerrors

This commit is contained in:
Wilson Júnior 2011-07-19 07:36:35 -03:00
parent bbd3a6961e
commit cb324595ef

View File

@ -382,6 +382,7 @@ class DocumentMetaclass(type):
doc_fields[attr_name] = attr_value doc_fields[attr_name] = attr_value
attrs['_fields'] = doc_fields attrs['_fields'] = doc_fields
attrs['_db_field_map'] = dict([(k, v.db_field) for k, v in doc_fields.items()]) attrs['_db_field_map'] = dict([(k, v.db_field) for k, v in doc_fields.items()])
attrs['_reverse_db_field_map'] = dict([(v.db_field, k) for k, v in doc_fields.items()])
new_class = super_new(cls, name, bases, attrs) new_class = super_new(cls, name, bases, attrs)
for field in new_class._fields.values(): for field in new_class._fields.values():
@ -763,15 +764,20 @@ class BaseDocument(object):
else: # Perform a full lookup for lists / embedded lookups else: # Perform a full lookup for lists / embedded lookups
d = self d = self
parts = path.split('.') parts = path.split('.')
field_name = parts.pop() db_field_name = parts.pop()
for p in parts: for p in parts:
if p.isdigit(): if p.isdigit():
d = d[int(p)] d = d[int(p)]
elif hasattr(d, '__getattribute__'): elif hasattr(d, '__getattribute__'):
d = getattr(d, p) real_path = d._reverse_db_field_map.get(p, p)
d = getattr(d, real_path)
else: else:
d = d.get(p) d = d.get(p)
if hasattr(d, '_fields'): if hasattr(d, '_fields'):
field_name = d._reverse_db_field_map.get(db_field_name,
db_field_name)
default = d._fields[field_name].default default = d._fields[field_name].default
if default is not None: if default is not None: