class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String) password = db.Column(db.String) email = db.Column(db.String) def __init__(self, name, password, email, id=None): self.id = id self.name = name self.password = password self.email = email def __repr__(self): return str('name: ' + str(self.name) + ', password: '******', email: ' + str(self.email)) @property def json(self): return { 'id': self.id, 'name': self.name, 'password': self.password, 'email': self.email, }
class Password(db.Model): __tablename__ = 'password' id = db.Column(db.Integer, primary_key=True, autoincrement=True) account = db.Column(db.String) username = db.Column(db.String) password = db.Column(db.String) idUser = db.Column(db.Integer, ForeignKey('user.id')) def __init__(self, account, username, password, idUser, id=None): self.id = id self.account = account self.username = username self.password = password self.idUser = idUser def __repr__(self): return str('account: ' + str(self.account) + ', username: '******', password: '******', idUser: '******'id': self.id, 'account': self.account, 'username': self.username, 'password': self.password, 'idUser': self.idUser, }
class Client_Resources(db.Model): __tablename__ = 'client_resources' resource_id = db.Column(db.Integer, primary_key=True) content_id = db.Column(db.Integer, db.ForeignKey('headers.header_id'), nullable=True) gallery_id = db.Column(db.Integer, db.ForeignKey('gallery_info.gallery_id'), nullable=True) linked_content = db.relationship('Header', passive_deletes=True, foreign_keys=[content_id], lazy=True, uselist=False) linked_gallery = db.relationship('Gallery_Info', passive_deletes=True, foreign_keys=[gallery_id], lazy=True, uselist=False) # cascade="all, delete" on gallery_info conflicts with update func def __init__(self): pass
class Galleries(db.Model): __tablename__ = 'galleries' index_id = db.Column(db.Integer, primary_key=True) info_id = db.Column(db.Integer, db.ForeignKey('gallery_info.gallery_id', ondelete="CASCADE"), nullable=False) image_id = db.Column(db.Integer, db.ForeignKey('images.image_id', ondelete="CASCADE"), nullable=True) gallery_image = db.relationship('Image', backref=db.backref('galleries', passive_deletes=True), foreign_keys=[image_id], lazy=True, uselist=False) gallery_info = db.relationship('Gallery_Info', passive_deletes=True, lazy=True, uselist=False) # cascade="all, delete" on gallery_info conflicts with update func def __init__(self): pass
class Header(db.Model): __tablename__ = 'headers' header_id = db.Column(db.Integer, primary_key=True) header_text = db.Column(db.Text, nullable=False) image_id = db.Column(db.Integer, db.ForeignKey('images.image_id', ondelete="SET NULL"), nullable=True) paragraph_id = db.Column(db.Integer, db.ForeignKey('paragraphs.paragraph_id'), nullable=False) h_image = db.relationship('Image', backref=db.backref('headers', passive_deletes=True), foreign_keys=[image_id], lazy=True, uselist=False) h_paragraph = db.relationship('Paragraph', backref='header', foreign_keys=[paragraph_id], lazy=True, cascade="all, delete", uselist=False) def __init__(self, header_text): self.header_text = header_text def __repr__(self): return f'<Header {self.header_id}, {self.header_text}><Paragraph {self.h_paragraph.paragraph_id}, {self.h_paragraph.paragraph_text}><Image {self.h_image.image_id}, {self.h_image.image_name}, {self.h_image.image_link}>'
class Header(db.Model): __tablename__ = 'header' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255)) project_id = db.Column(db.Integer, db.ForeignKey('project.id'), index=True) font_id = db.Column(db.Integer, db.ForeignKey('font.id')) size = db.Column(db.Integer())
class User(Base): __tablename__ = 'users' name = db.Column(db.Text) email = db.Column(db.Text) twitter_handle = db.Column(db.Text, unique=True) photo = db.Column(db.Text) def __init__(self, name, email, twitter_handle, photo): self.name = name self.email = email self.twitter_handle = twitter_handle self.photo = photo @property def serialize(self): return to_json(self, self.__class__) @staticmethod def get_or_create(payload): print('\n\nI AM HERE\n\n') resp = db.session.query(User).filter( User.twitter_handle == payload['twitter_handle']).first() print "NAME:" + resp.name if resp: return resp user = User(payload['name'], payload['email'], payload['twitter_handle'], payload['photo']) db.session.add(user) db.session.commit() return user
class Paragraph(db.Model): __tablename__ = 'paragraphs' paragraph_id = db.Column(db.Integer, primary_key=True) paragraph_text = db.Column(db.Text, nullable=False) def __init__(self, paragraph_text): self.paragraph_text = paragraph_text
class Image(db.Model): __tablename__ = 'images' image_id = db.Column(db.Integer, primary_key=True) image_link = db.Column(db.Text, nullable=False) image_name = db.Column(db.String(50), nullable=False) def __init__(self, image_link, image_name): self.image_link = image_link self.image_name = image_name
class BaseImage(db.Model): __abstract__ = True id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(64), unique=True) title = db.Column(db.String(120), unique=False) preview = db.Column(db.String(64), unique=True) active = db.Column(db.BOOLEAN, default=True, nullable=False) def __repr__(self): return '<Image %r>' % self.name
class Role(db.Model): __tablename__ = 'roles' role_id = db.Column(db.Integer, primary_key=True) role_name = db.Column(db.String(128), unique=True, nullable=False) permissions = db.Column(db.ARRAY(db.String(128)), nullable=False) def __init__(self, role_name, permissions): self.role_name = role_name self.permissions = permissions
class Project(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(250), unique=True) button = db.Column(db.String(36), unique=True) background_images = db.relationship('BackgroundImage', backref='project', lazy='dynamic') fonts = db.relationship('Font', backref='project') headers = db.relationship('Header', backref='project') banners = db.relationship('Banner', backref='project')
class Setting(db.Model): __tablename__ = 'settings' setting_id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(128), unique=True, nullable=False) password = db.Column(db.String(128), unique=True, nullable=False) active = db.Column(db.Boolean(), default=False, nullable=False) def __init__(self, username, password): self.username = username self.password = password
class User(db.Model): class Gender(enum.Enum): male = 0 female = 1 class UserRole(enum.Enum): user = 0 designer = 1 admin = 2 class SocialNetwork(enum.Enum): google = 0 facebook = 1 __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True) social_id = db.Column(db.String(255)) social_type = db.Column(Enum(SocialNetwork), nullable=False) first_name = db.Column(db.String(255)) last_name = db.Column(db.String(255)) gender = db.Column(Enum(Gender)) email = db.Column(db.String(255), unique=True) role = db.Column(Enum(UserRole), nullable=False) created_at = db.Column(db.DateTime, nullable=False, default=datetime.datetime.utcnow) active = db.Column(db.BOOLEAN, default=True, nullable=False) banners = db.relationship('Banner', backref='user') __table_args__ = (Index('ix_user_id_social_type', "social_type", "id"), ) def is_authenticated(self): return True def is_active(self): return self.active def is_anonymous(self): return False def is_user(self): return self.role == User.UserRole.user def is_designer(self): return self.role == User.UserRole.designer def is_admin(self): return self.role == User.UserRole.admin def get_id(self): return unicode(self.id) def __repr__(self): return '<User %r>' % self.first_name
class Font(db.Model): __tablename__ = 'font' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255)) filename = db.Column(db.String(255)) project_id = db.Column(db.Integer, db.ForeignKey('project.id')) headers = db.relationship('Header', backref='font', cascade="delete") __table_args__ = (UniqueConstraint('project_id', 'name', name='project_font'), ) def url(self): return url_for('uploaded_file', filename=self.filename)
class ImageHistory(db.Model): __tablename__ = 'image_history' id = db.Column(db.Integer, primary_key=True) review_image = db.Column(db.Integer, db.ForeignKey('banner.id'), nullable=False) json_hist = db.Column(JSON, nullable=False) created = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False) def __str__(self): return 'History for image {0} created at {1}'.format( self.review_image, self.created)
class Base(db.Model): __abstract__ = True id = db.Column(db.BigInteger, primary_key=True) created_at = db.Column(db.DateTime) updated_at = db.Column(db.DateTime) def save(self): self.updated_at = datetime.datetime.utcnow() db.session.add(self) def delete(self): db.session.remove(self) def __repr__(self): return '<%s %d>' % (self.__class__.__name__, self.id)
class Gallery_Info(db.Model): __tablename__ = 'gallery_info' gallery_id = db.Column(db.Integer, primary_key=True) gallery_name = db.Column(db.String(128), unique=True, nullable=False) description = db.Column(db.Text(), nullable=True) last_updated = db.Column(db.DateTime(False), nullable=True) last_updated_by = db.Column(db.String(128), nullable=True) # galleries_rel = db.relationship('Galleries', backref=db.backref( # "Galleries"), ondelete="cascade") def __init__(self, gallery_name, description, last_updated, last_updated_by): self.gallery_name = gallery_name self.description = description self.last_updated = last_updated self.last_updated_by = last_updated_by
class Trail(db.Model): __tablename__ = 'trails' id = db.Column(db.Integer, primary_key=True) created = db.Column(db.DateTime, default=datetime.utcnow) title = db.Column(db.String(256)) description = db.Column(db.String(1024)) path = db.Column(JSON) trail_head_address = db.Column(db.String(256)) length = db.Column(db.Float(precision=6, asdecimal=False))
class UserModel(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80)) password = db.Column(db.String(80)) def __init__(self, username, password): self.username = username self.password = password def save_to_db(self): db.session.add(self) db.session.commit() @classmethod def find_by_username(cls, username): return cls.query.filter_by(username=username).first() @classmethod def find_by_id(cls, _id): return cls.query.filter_by(id=_id).first()
class Admin(db.Model): __tablename__ = 'admins' user_id = db.Column(db.Integer, primary_key=True) first_name = db.Column(db.String(128), unique=False, nullable=False) last_name = db.Column(db.String(128), unique=False, nullable=False) email = db.Column(db.String(128), unique=True, nullable=False) username = db.Column(db.String(128), unique=True, nullable=False) password = db.Column(db.Text, nullable=False) role = db.Column(db.String(128), unique=False, nullable=False) recovery_link = db.Column(db.Text, unique=False, nullable=True) active = db.Column(db.Boolean(), default=False, nullable=False) last_logged_in = db.Column(db.DateTime(False), nullable=True) def __init__(self, first_name, last_name, email, username, password, role, recovery_link, last_logged_in): self.first_name = first_name self.last_name = last_name self.email = email self.username = username self.password = password self.recovery_link = recovery_link self.role = role self.last_logged_in = last_logged_in
class Blacklist(db.Model): __tablename__ = 'blacklist' id = db.Column(db.Integer, primary_key=True) quickbooks_id = db.Column(db.Integer, nullable=False) name = db.Column(db.String(128), nullable=False) email = db.Column(db.String(128), nullable=False) phone = db.Column(db.String(128), nullable=False) start_date = db.Column(db.DateTime(), nullable=False) end_date = db.Column(db.DateTime(), nullable=True) reason = db.Column(db.String(128), nullable=False) def __init__(self, quickbooks_id, name, email, phone, start_date, end_date, reason): self.quickbooks_id = quickbooks_id self.name = name self.email = email self.phone = phone self.start_date = start_date self.end_date = end_date self.reason = reason
class BannerReview(db.Model): class Status(enum.Enum): accepted = 0 not_accepted = 1 id = db.Column(db.Integer, primary_key=True) banner_id = db.Column(db.Integer, db.ForeignKey('banner.id')) comment = db.Column(db.Text, nullable=True) reviewed = db.Column(db.Boolean, default=False) status = db.Column(Enum(Status)) created_at = db.Column(db.DateTime, default=datetime.datetime.utcnow) designer_comment = db.Column(db.Text, nullable=True) changed_at = db.Column(db.DateTime, nullable=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) designer_id = db.Column(db.Integer, db.ForeignKey('user.id')) designer_imagename = db.Column(db.String(64), unique=True) designer_previewname = db.Column(db.String(64), unique=True) active = db.Column(db.BOOLEAN, default=True, nullable=False) comment_clouds = db.Column(JSON, nullable=True) user = db.relationship("User", foreign_keys=[user_id]) designer = db.relationship("User", foreign_keys=[designer_id])
class BackgroundImage(BaseImage): project_id = db.Column(db.Integer, db.ForeignKey('project.id')) height = db.Column(db.Integer) width = db.Column(db.Integer)
class Image(BaseImage): user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=True) description = db.Column(db.Text, nullable=True)
class Banner(BaseImage): user_id = db.Column(db.Integer, db.ForeignKey('user.id')) project_id = db.Column(db.Integer, db.ForeignKey('project.id')) review = db.relationship('BannerReview', backref='banner', uselist=False) history = db.relationship('ImageHistory', backref="parent")