Changeset 686
- Timestamp:
- 11/17/10 14:26:42 (3 years ago)
- Location:
- sandbox
- Files:
-
- 22 added
- 2 modified
-
django-fossil/fossil/fields.py (modified) (3 diffs)
-
django-fossil/fossil/models.py (modified) (1 diff)
-
opentrials-recipe (added)
-
opentrials-recipe/.gitignore (added)
-
opentrials-recipe/CHANGES.txt (added)
-
opentrials-recipe/README.txt (added)
-
opentrials-recipe/bootstrap.py (added)
-
opentrials-recipe/buildout.cfg (added)
-
opentrials-recipe/setup.py (added)
-
opentrials-recipe/src (added)
-
opentrials-recipe/src/opentrialsrecipe (added)
-
opentrials-recipe/src/opentrialsrecipe/__init__.py (added)
-
opentrials-recipe/src/opentrialsrecipe/fcgi.py (added)
-
opentrials-recipe/src/opentrialsrecipe/manage.py (added)
-
opentrials-recipe/src/opentrialsrecipe/recipe.py (added)
-
opentrials-recipe/src/opentrialsrecipe/test.py (added)
-
opentrials-recipe/src/opentrialsrecipe/testing (added)
-
opentrials-recipe/src/opentrialsrecipe/testing/django (added)
-
opentrials-recipe/src/opentrialsrecipe/testing/django/__init__.py (added)
-
opentrials-recipe/src/opentrialsrecipe/testing/django/core (added)
-
opentrials-recipe/src/opentrialsrecipe/testing/django/core/__init__.py (added)
-
opentrials-recipe/src/opentrialsrecipe/testing/django/core/management.py (added)
-
opentrials-recipe/src/opentrialsrecipe/tests.py (added)
-
opentrials-recipe/src/opentrialsrecipe/wsgi.py (added)
Legend:
- Unmodified
- Added
- Removed
-
sandbox/django-fossil/fossil/fields.py
r685 r686 89 89 self.rel.field_name = cls._meta.pk.name 90 90 91 class DictKeyAttribute(dict): 92 """ 93 Dictionary that allows you access dict key values as attributes 94 """ 95 def __getattr__(self, name): 96 try: 97 value = self[name] 98 except KeyError: 99 raise AttributeError 100 101 if isinstance(value, dict): 102 value = DictKeyAttribute(value) 103 104 return value 105 91 106 class FossilProxy(object): 92 107 fossil = None … … 108 123 109 124 def __getattr__(self, name): 110 if name in ('object_fossil','_object_fossil','fossil' ):125 if name in ('object_fossil','_object_fossil','fossil','get_attr_from_dict'): 111 126 raise AttributeError 112 127 113 128 if isinstance(self.fossil, dict): 114 def get_attr_from_dict(dic, path): 115 """ 116 Recursive function to get a path like key1.date.year from a dict like: 117 118 {'key1': {'date': {'year': 2010}}} 119 """ 120 nodes = filter(bool, map(lambda s: s.strip(), path.split('.'))) # Ignores blank spaces 121 current = nodes[0] 122 value = dic[current] 123 124 if len(nodes) == 1: 125 return value 126 else: 127 return get_attr_from_dict(value, '.'.join(nodes[1:])) 128 129 return get_attr_from_dict(self.fossil, name) 129 value = self.fossil[name] 130 131 if isinstance(value, dict): 132 value = DictKeyAttribute(value) 133 134 return value 130 135 else: 131 136 return getattr(self.object_fossil.object, name) … … 144 149 145 150 def __unicode__(self): 146 return unicode(self.fossil) 151 if isinstance(self.fossil, Fossil): 152 return unicode(self.fossil) 153 else: 154 return self.fossil['__unicode__'] 147 155 148 156 def __str__(self): 149 return str(self.fossil) 157 if isinstance(self.fossil, Fossil): 158 return str(self.fossil) 159 else: 160 return self.fossil['__unicode__'] 150 161 151 162 class FossilSingleObjectDescriptor(ReverseSingleRelatedObjectDescriptor): -
sandbox/django-fossil/fossil/models.py
r659 r686 59 59 60 60 try: 61 return self.content_type.model_class .objects.deserialize_for_fossil(data)61 return self.content_type.model_class().objects.deserialize_for_fossil(data) 62 62 except AttributeError: 63 63 return list(deserialize('json', data))[0]
