+ @classmethod
+ def query(cls, **kwargs):
+ objects = []
+ from app import db
+ if kwargs:
+ if hasattr(cls, '__tablename__'):
+ table = cls.__tablename__
+ else:
+ table = cls.__name__
+ o = db.query(table, **kwargs)
+ if table.lower() == 'user':
+ for user in o:
+ objects.append(cls(user[1], user[2], user[3], user[4], user[0]))
+ elif table.lower() == 'portfolio':
+ for portfolio in o:
+ user = db.query('user', id = portfolio[2])[0]
+ objects.append(cls(portfolio[1], user, portfolio[3], portfolio[4], portfolio[0]))
+ else:
+ raise QueryException("{0}: Missing at least one query parameter".format(cls))
+ return objects
+
+ def commit(self):
+ self.notify(self)
+ self.__oldValues = {}
+
+ def rollback(self):
+ for k, v in self.__oldValues.items():
+ setattr(self, k, v)
+ self.__oldValues = {}
+