class Screenshot( db.Model ):
    id = db.Column(db.Integer, primary_key = True)
    user = db.Column( db.Integer, db.ForeignKey('user.id'), index=True )
    time = db.Column( db.BigInteger, index=True )
    upload_args = db.Column( db.Unicode(2048) )

    def serialize( self ):
        serial = dict( (x,getattr(self,x) ) for x in ('id','time','upload_args') )
        serial['user'] = User.query.get( self.user ).email
        return serial

    def render_serialize( self ):
        serial = dict( (x,getattr(self,x) ) for x in ('id','time','user') )
        serial['key'] = self.get_key()
        return serial

    def get_upload_args( self ):
        global conn
        form_args = conn.build_post_form_args(
                app.config['PIC_BUCKET'], 
                max_content_length = app.config['MAX_PIC_SIZE'],
                key = self.get_key() )
        self.upload_args = json.dumps( form_args )
        db.session.add( self )
        db.session.commit()
        return form_args

    def get_key( self ):
        return "%d/%d.png" % ( self.user, self.id )
class SessionView(db.Model):
    id = db.Column('id', db.Integer, primary_key=True)
    session_id = db.Column('session',
                           db.Integer,
                           db.ForeignKey('session.id'),
                           index=True)
    shamer_id = db.Column('shamer',
                          db.Integer,
                          db.ForeignKey('shamer.id'),
                          index=True)
    secret = db.Column('secret', db.Unicode(64), unique=True, index=True)

    session = db.relationship(Session, backref='session_views')
    shamer = db.relationship(Shamer, backref='shamer')
Beispiel #3
0
class Shamer(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user = db.Column(db.Integer, db.ForeignKey('user.id'), index=True)
    email = db.Column(db.Unicode(512))
    confirmed = db.Column(db.Boolean, default=False)
    start_notifications = db.Column(db.Boolean, default=True)
    end_notifications = db.Column(db.Boolean, default=True)
    db.UniqueConstraint('user', 'email')
Beispiel #4
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.Unicode(255), unique=True, index=True)
    password = db.Column(db.Unicode(255))
    throttle_counter = db.Column(db.SmallInteger)
    last_throttle_check = db.Column(db.Integer, default=int_time)
    last_login_at = db.Column(db.DateTime)
    current_login_at = db.Column(db.DateTime)
    last_login_ip = db.Column(db.Unicode(30))
    current_login_ip = db.Column(db.Unicode(30))
    login_count = db.Column(db.Integer)
    active = db.Column(db.Boolean())
    confirmed_at = db.Column(db.DateTime())
    screenshots = db.relationship('Screenshot',
                                  backref='owner',
                                  lazy='dynamic')
    sessions = db.relationship('Session', backref='owner', lazy='dynamic')
    shamers = db.relationship('Shamer', backref='shamee', lazy='dynamic')

    def __init__(self, password, **kwargs):
        self.password = pbkdf2_sha512.encrypt(password)
        db.Model.__init__(self, **kwargs)

    def set_password(self, pw):
        self.password = pbkdf2_sha512.encrypt(pw)

    def check_pw(self, pw):
        return pbkdf2_sha512.verify(pw, self.password)

    def get_auth_token(self):
        """tokens are generated from encrypted password"""
        return pbkdf2_sha512.encrypt(self.password)

    def check_auth_token(self, token):
        """check that password was used to generate token"""
        return pbkdf2_sha512.verify(self.password, token)
Beispiel #5
0
class Session( db.Model ):
    id = db.Column(db.Integer, primary_key = True)
    user = db.Column( db.Integer, db.ForeignKey('user.id'), index=True )
    start = db.Column( db.BigInteger, index=True )
    end = db.Column( db.BigInteger, index=True )
    rendered = db.Column( db.Boolean, default=False )
    secret = db.Column( db.Unicode(64) )
    key = db.Column( db.Unicode( 64 ) )
    bucket = db.Column( db.Unicode(64) )
    width = db.Column( db.Integer , default=800)
    height = db.Column( db.Integer , default=450)
    description = db.Column( db.Unicode(4096) )

    def serialize( self ):
        serial = dict( (x,getattr(self,x) ) for x in ('id','start','end', 'height', 'width') )
        serial['user'] = User.query.get( self.user ).email
        return serial