def update(self, **kwargs): for k, v in kwargs.items(): if hasattr(self, k): setattr(self, k, v) elif hasattr(self.profile, k): if k == 'gold': v += getattr(self.profile, k) setattr(self.profile, k, v) if self.profile.gold >= Level['gold']['topic_creation']: self.role |= Permission.get_by_role('topic_creation').bit if self.profile.gold >= Level['gold']['vote']: self.role |= Permission.get_by_role('vote').bit try: db_session.add(self) db_session.commit() except (DataError, IntegrityError, ProgrammingError): db_session.rollback() raise
def has_permission(self, role): per = Permission.get_by_role(role) if not per: return None r = self.query.filter((self.role&per.bit)>0) return r.first()