class IosHexLocation(db.Model): __tablename__ = 'ios_hex_locations' id = db.Column(db.String(), primary_key=True) user_object_id = db.Column( db.String(), db.ForeignKey('user_objects.id', ondelete="CASCADE")) hex_object_id = db.Column( db.String(), db.ForeignKey('hex_objects.id', ondelete="CASCADE")) location = db.Column(db.String(), index=True) hex_object = db.relationship('HexObject', foreign_keys="IosHexLocation.hex_object_id") user_object = db.relationship('UserObject', foreign_keys="IosHexLocation.user_object_id") def __init__(self, user_object_id, hex_object_id, location): self.id = uuid.uuid4().urn[ 9:] # make a uuid, convert to urn/string, uuid starts after 9th char self.user_object_id = user_object_id self.hex_object_id = hex_object_id self.location = location def __repr__(self): return ('{{hex_object_id: "{}",' + 'location: "{}"}}').format( self.hex_object_id, self.location)
class HexObject(db.Model): __tablename__ = 'hex_objects' id = db.Column(db.String(), primary_key=True) name = db.Column(db.String(), index=True) image_path = db.Column(db.String(), index=True) is_private = db.Column(db.Boolean) owner_id = db.Column(db.String(), db.ForeignKey('user_objects.id'), index=True) user_object_id = db.Column(db.String(), db.ForeignKey('user_objects.id'), index=True) owner = db.relationship('UserObject', foreign_keys="HexObject.owner_id") user_object = db.relationship('UserObject', foreign_keys="HexObject.user_object_id") def __init__(self, name, owner_id, user_id, image_path, is_private): self.id = uuid.uuid4().urn[ 9:] # make a uuid, convert to urn/string, uuid starts after 9th char self.name = name self.owner_id = owner_id self.user_object_id = user_id self.is_private = is_private self.image_path = image_path def __repr__(self): return ('{{id: {}, ' + 'name: "{}", ' + 'owner_id: "{}", ' + 'user_id: "{}", ' + 'image_path: "{}"}}').format( self.id, self.name, self.owner_id, self.user_object_id, self.image_path)
class UserObject(db.Model): __tablename__ = 'user_objects' id = db.Column(db.String(), primary_key=True) username = db.Column(db.String(32), index=True) email = db.Column(db.String(128), index=True) password_hash = db.Column(db.String(128)) is_active = True is_authenticated = True is_anonymous = False def __init__(self, username): self.id = uuid.uuid4().urn[ 9:] # make a uuid, convert to urn/string, uuid starts after 9th char self.username = username def __repr__(self): return ('{{id: "{}"}}').format(self.id, self.username) def hash_password(self, password): self.password_hash = pwd_context.encrypt(password) def verify_password(self, password): return pwd_context.verify(password, self.password_hash) def generate_auth_token(self, expiration=3600): s = Serializer(app.config['SECRET_KEY'], expires_in=expiration) return s.dumps({'id': self.id}) @staticmethod def verify_auth_token(token): s = Serializer(app.config['SECRET_KEY']) try: data = s.loads(token) except (BadSignature, SignatureExpired) as e: return None user = UserObject.query.get(data['id']) return user def get_id(self): return self.id
class PasswordReset(db.Model): __tablename__ = 'password_resets' id = db.Column(db.String(), primary_key=True) code = db.Column(db.String(), index=True) expiry_date = db.Column(db.String()) user_object_id = db.Column( db.String(), db.ForeignKey('user_objects.id', ondelete="CASCADE")) user_object = db.relationship('UserObject', foreign_keys="PasswordReset.user_object_id") def __init__(self, code, user_object_id, expiry_date): self.id = uuid.uuid4().urn[9:] self.code = code self.user_object_id = user_object_id self.expiry_date = expiry_date def __repr__(self): return ('{{id: "{}"' + 'code: "{}",' + 'user_object_id: "{}",' + 'expiry_date: "{}"}}').format(self.id, self.code, self.user_object_id, self.expiry_date)
class SendObject(db.Model): __tablename__ = 'send_objects' id = db.Column(db.String(), primary_key=True) sender_id = db.Column(db.String(), index=True) recipient_id = db.Column(db.String(), index=True) hex_object_id = db.Column(db.String(), db.ForeignKey('hex_objects.id', ondelete="CASCADE")) hex_object = db.relationship('HexObject', foreign_keys="SendObject.hex_object_id") def __init__(self, sender_id, recipient_id, hex_object_id): self.id = uuid.uuid4().urn[9:] self.sender_id = sender_id self.recipient_id = recipient_id self.hex_object_id = hex_object_id def __repr__(self): return ('{{sender_id: "{}",' + 'recipient_id: "{}",' + 'hex_object_id: "{}"}}').format( self.sender_id, self.recipient_id, self.hex_object_id )
class LinkObject(db.Model): __tablename__ = 'link_objects' id = db.Column(db.String(), primary_key=True) url = db.Column(db.String(), index=True) description = db.Column(db.String(), index=True) web_page_title = db.Column(db.String(), index=True) hex_object_id = db.Column( db.String(), db.ForeignKey('hex_objects.id', ondelete="CASCADE")) hex_object = db.relationship('HexObject', foreign_keys="LinkObject.hex_object_id") def __init__(self, url, description, hex_object_id): self.id = uuid.uuid4().urn[ 9:] # make a uuid, convert to urn/string, uuid starts after 9th char self.url = url self.description = description self.hex_object_id = hex_object_id def __repr__(self): return ('{{id: "{}",' + 'url: "{}",' + 'description: "{}",' + 'hex_object_id: "{}"}}').format(self.id, self.url, self.description, self.hex_object_id)