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()