Example #1
0
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()
Example #2
0
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
Example #3
0
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()
Example #4
0
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()
Example #5
0
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)
Example #6
0
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()
Example #8
0
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)
Example #9
0
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]