Mercurial > kallithea
comparison rhodecode/model/db.py @ 1947:a1b8bd86c488
fixes missing email attribute. Bug introduced after applying setters and getter for sqlalchemy
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Tue, 24 Jan 2012 20:01:09 +0200 |
parents | 9e53425ca824 |
children | 82a88013a3fd |
comparison
equal
deleted
inserted
replaced
1943:bab80d1436fb | 1947:a1b8bd86c488 |
---|---|
52 | 52 |
53 #============================================================================== | 53 #============================================================================== |
54 # BASE CLASSES | 54 # BASE CLASSES |
55 #============================================================================== | 55 #============================================================================== |
56 | 56 |
57 | |
57 class ModelSerializer(json.JSONEncoder): | 58 class ModelSerializer(json.JSONEncoder): |
58 """ | 59 """ |
59 Simple Serializer for JSON, | 60 Simple Serializer for JSON, |
60 | 61 |
61 usage:: | 62 usage:: |
82 if hasattr(obj, '__json__'): | 83 if hasattr(obj, '__json__'): |
83 return obj.__json__() | 84 return obj.__json__() |
84 else: | 85 else: |
85 return json.JSONEncoder.default(self, obj) | 86 return json.JSONEncoder.default(self, obj) |
86 | 87 |
88 | |
87 class BaseModel(object): | 89 class BaseModel(object): |
88 """Base Model for all classess | 90 """Base Model for all classess |
89 | 91 |
90 """ | 92 """ |
91 | 93 |
99 to this model data """ | 101 to this model data """ |
100 | 102 |
101 d = {} | 103 d = {} |
102 for k in self._get_keys(): | 104 for k in self._get_keys(): |
103 d[k] = getattr(self, k) | 105 d[k] = getattr(self, k) |
106 | |
107 # also use __json__() if present to get additional fields | |
108 for k, val in getattr(self, '__json__', lambda: {})().iteritems(): | |
109 d[k] = val | |
104 return d | 110 return d |
105 | 111 |
106 def get_appstruct(self): | 112 def get_appstruct(self): |
107 """return list with keys and values tupples corresponding | 113 """return list with keys and values tupples corresponding |
108 to this model data """ | 114 to this model data """ |
312 try: | 318 try: |
313 return "<%s('id:%s:%s')>" % (self.__class__.__name__, | 319 return "<%s('id:%s:%s')>" % (self.__class__.__name__, |
314 self.user_id, self.username) | 320 self.user_id, self.username) |
315 except: | 321 except: |
316 return self.__class__.__name__ | 322 return self.__class__.__name__ |
323 | |
324 def __json__(self): | |
325 return {'email': self.email} | |
317 | 326 |
318 @classmethod | 327 @classmethod |
319 def get_by_username(cls, username, case_insensitive=False): | 328 def get_by_username(cls, username, case_insensitive=False): |
320 if case_insensitive: | 329 if case_insensitive: |
321 return Session.query(cls).filter(cls.username.ilike(username)).scalar() | 330 return Session.query(cls).filter(cls.username.ilike(username)).scalar() |