class Token(orm.Document): _db = 'lablog' _collection = 'tokens' _indexes = [ orm.Index('access_token', key=('access_token', 1), unique=True), orm.Index('refresh_token', key=('refresh_token', 1), unique=True), orm.Index('client', key=('client', 1)), orm.Index('user', key=('user', 1)), orm.Index('user_agent', key=('user_agent', 1)), ] access_token = field.Char() refresh_token = field.Char() client = field.DocumentId(type=Client) scopes = orm.List(type=unicode) expires = field.Date() user = field.DocumentId(type=Admin) user_agent = field.Char() _type = field.Char() @property def token_type(self): return self._type def delete(self): self.remove()
class Trigger(orm.Document): _db = "lablog" _collection = "triggers" _indexes = [ orm.Index('name', key=('name', 1), unique=True), orm.Index('key', key=('key', 1)), ] name = field.Char() key = field.Char() last_run = field.Date() _me = field.DynamicDocument() def save(self, *args, **kwargs): if not self._id: self._me = {} self.last_run = datetime.utcnow() - timedelta(minutes=60) super(Trigger, self).save(*args, **kwargs) self._me = self return super(Trigger, self).save(*args, **kwargs) def _run(self, message): interface = message['tags']['interface'] try: ret = self._me.run(message) except TriggerEnabled as e: ti = TriggerInstance.find_one({ 'interface': interface, 'trigger.id': self._id }) if not ti: ti = TriggerInstance() ti.enabled = True ti.interface = interface ti.level = e.level ti.key = self._me.key ti.trigger = self._me ti.save() self.last_run = datetime.utcnow() self.save() except TriggerDisabled as e: ti = TriggerInstance.find_one({ 'interface': interface, 'trigger.id': self._id }) if not ti: return ti.enabled = False ti.save() return
class Human(orm.Document): _db = "test" _collection = "humans" _indexes = [ orm.Index("name", key=[("name", orm.Index.DESCENDING)]), orm.Index("human_id", key=[("human_id", orm.Index.ASCENDING)]), orm.Index("geo_location", key=[("jobs.locations.geo", orm.Index.GEO2D)]) ] human_id = field.AutoIncrement(collection="human") name = field.Char(required=True, min=2, max=25) age = field.Integer(min=0, max=3000) height = field.Float(min=1, max=100000) weight = field.Float(min=1) jobs = orm.List(type=Job, length=3) genitalia = field.Char()
class TriggerInstance(orm.Document): _db = "lablog" _collection = "trigger_instance" _indexes = [ orm.Index('interface', key=('interface', 1), unique=True), orm.Index('trigger', key=('trigger.id', 1)), orm.Index('enabled', key=('enabled', 1)), orm.Index('key', key=('key', 1)), ] enabled = field.Boolean(default=True) interface = field.Char() level = field.Integer() key = field.Char()
class Admin(orm.Document): _db = "lablog" _collection = "client_admins" _indexes = [ orm.Index('email', key=('email', 1), unique=True), ] name = field.Char() email = field.Char() password = field.Char() last_login = field.Date() clients = orm.List(type=ClientRef) social_accounts = orm.List(type=SocialAccount) facebook_pages = orm.List(type=FacebookPage) in_office = field.Boolean(default=False) @staticmethod def passwords_match(pwd, cpwd): return pwd == cpwd def save(self): if self.password: if not password.identify(self.password): self.password = password.encrypt_password(self.password) return super(Admin, self).save() def verify_pwd(self, pwd): return password.check_password(pwd, self.password) def social_account(self, account_type=None): for sa in self.social_accounts: if sa.type == account_type: return sa sa = SocialAccount() sa.type = account_type return sa def get_punchcard(self, influx): try: res = influx.query( "SELECT value from \"lablog\".\"realtime\".\"presence\" where user_id='{}' AND time > now() - 2d" .format(self._id)) r = [p for p in res.get_points()] r.reverse() return r except: return [] def is_authenticated(self): if self._id: return True return False def is_active(self): return True def is_anonymous(self): return False def get_id(self): self.logger.info(unicode(self._id)) return unicode(self._id)
class Client(orm.Document): _db = "entropealabs" _collection = "clients" _indexes = [ orm.Index('name', key=('name', 1), unique=True), ] name = field.Char() description = field.Char() social = SocialAccounts(type=SocialAccount)
class Client(orm.Document): _db = "flaskaws" _collection = "clients" _indexes = [ orm.Index('name', key=('name', 1), unique=True), ] name = field.Char() description = field.Char() facebook_page = FacebookPage()
class Admin(orm.Document): _db = "entropealabs" _collection = "client_admins" _indexes = [ orm.Index('email', key=('email', 1), unique=True), ] name = field.Char() email = field.Char() password = field.Char() last_login = field.Date() client = field.DocumentId(type=Client) social = SocialAccounts(type=SocialAccount) facebook_pages = orm.List(type=FacebookPage) def social_account(self, account_type=None): for sa in self.social_accounts: if sa.type == account_type: return sa sa = SocialAccount() sa.type = account_type return sa @staticmethod def passwords_match(pwd, cpwd): if pwd == cpwd: return True return False def save(self): if not password.identify(self.password): self.password = password.encrypt_password(self.password) return super(Admin, self).save() def verify_pwd(self, pwd): self.logger.info(password.encrypt_password(pwd)) self.logger.info(self.password) return password.check_password(pwd, self.password) def is_authenticated(self): if self._id: return True return False def is_active(self): return True def is_anonymous(self): return False def get_id(self): self.logger.info(unicode(self._id)) return unicode(self._id)
class Client(orm.Document): _db = "lablog" _collection = "clients" _indexes = [ orm.Index('name', key=('name', 1), unique=True), ] name = field.Char() description = field.Char() facebook_page = FacebookPage() secret = field.Char() redirect_uris = orm.List(type=unicode) default_scopes = orm.List(type=unicode) _type = field.Char() @property def client_type(self): return self._type @property def default_redirect_uri(self): self.logger.info(self.redirect_uris) return self.redirect_uris[0]