Show
Ignore:
Timestamp:
11/23/10 09:54:11 (3 years ago)
Author:
jose.brandao
Message:

New fields for Fossils

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • sandbox/django-fossil/fossil/fields.py

    r686 r696  
    106106class FossilProxy(object): 
    107107    fossil = None 
     108    _object_fossil = None 
    108109 
    109110    def __init__(self, fossil=None): 
     
    117118    @property 
    118119    def object_fossil(self): 
    119         if not hasattr(self, '_object_fossil'): 
    120             self._object_fossil = self.fossil.get_object_fossil() 
     120        if self._object_fossil is None: 
     121            if isinstance(self.fossil, Fossil): 
     122                self._object_fossil = self.fossil.get_object_fossil() 
     123            else: 
     124                self._object_fossil = DictKeyAttribute(self.fossil) 
    121125 
    122126        return self._object_fossil 
    123127 
    124128    def __getattr__(self, name): 
    125         if name in ('object_fossil','_object_fossil','fossil','get_attr_from_dict'): 
    126             raise AttributeError 
    127  
    128         if isinstance(self.fossil, dict): 
    129             value = self.fossil[name] 
    130  
    131             if isinstance(value, dict): 
    132                 value = DictKeyAttribute(value) 
    133  
    134             return value 
    135         else: 
    136             return getattr(self.object_fossil.object, name) 
     129        if name in ('object_fossil','_object_fossil','fossil'): #,'get_attr_from_dict'): 
     130            raise AttributeError, name 
     131 
     132        try: 
     133            if isinstance(self.fossil, dict): 
     134                value = self.fossil[name] 
     135 
     136                if isinstance(value, dict): 
     137                    value = DictKeyAttribute(value) 
     138 
     139                return value 
     140            else: 
     141                return getattr(self.object_fossil.object, name) 
     142        except (AttributeError, KeyError): 
     143            raise AttributeError, name 
    137144 
    138145    def __repr__(self):