class Position(db.Model): id = db.Column(db.Integer, primary_key=True) serial_number = db.Column(db.Integer, index=True) order_id = db.Column(db.Integer, db.ForeignKey('order.id'), index=True) room = db.Column(db.String(32)) doormodel_id = db.Column(db.Integer, db.ForeignKey('door_models.id')) base_decor_id = db.Column(db.Integer, db.ForeignKey('decor.id')) second_decor_id = db.Column(db.Integer, db.ForeignKey('decor.id')) base_decor = db.relationship('Decor', foreign_keys=[base_decor_id]) second_decor = db.relationship('Decor', foreign_keys=[second_decor_id]) alum_butt_id = db.Column(db.Integer, db.ForeignKey('aluminum_butts.id')) frame_id = db.Column(db.Integer, db.ForeignKey('frame_type.id')) doors_height = db.Column(db.Integer) doors_width = db.Column(db.Integer) casing_id = db.Column(db.Integer, db.ForeignKey('casings.id')) expander_id = db.Column(db.Integer, db.ForeignKey('expanders.id')) lock_purpose_id = db.Column(db.Integer, db.ForeignKey('lock_purpose.id')) lock_kind_id = db.Column(db.Integer, db.ForeignKey('lock_type.id')) lock_color_id = db.Column(db.Integer, db.ForeignKey('lock_color.id')) hinge_side_id = db.Column(db.Integer, db.ForeignKey('hinge_sides.id')) hinge_kind_id = db.Column(db.Integer, db.ForeignKey('hinge_types.id')) hinge_color_id = db.Column(db.Integer, db.ForeignKey('hinge_colors.id')) doors_seal_id = db.Column(db.Integer, db.ForeignKey('door_seals.id'))
class Order(db.Model): id = db.Column(db.Integer, primary_key=True) positions = db.relationship('Position', backref='order') order_number = db.Column(db.Integer, unique=True, index=True) timestamp = db.Column(db.DateTime, default=datetime.utcnow) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) customer_manager = db.Column(db.String(64)) customer_city = db.Column(db.String(64)) sketch_is_ready = db.Column(db.Boolean) ord_rem = db.relationship('OrderRemark', backref='remark', uselist=False) def __repr__(self): return 'Заказ № {}'.format(self.order_number)
class FrameType(db.Model): id = db.Column(db.Integer, primary_key=True) frame_name = db.Column(db.String(16)) frames = db.relationship('Position', backref='frame_type') def __repr__(self): return self.frame_name
class Word(db.Model): id = db.Column(db.Integer, primary_key=True) text = db.Column(db.String(30), unique=True, nullable=False) sentences = db.relationship('Sentence', backref='keyword', lazy='dynamic') def __repr__(self): return '{}'.format(self.text)
class User(UserMixin, db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), index=True, unique=True) email = db.Column(db.String(120), index=True, unique=True) password_hash = db.Column(db.String(128)) posts = db.relationship('Post', backref='author', lazy='dynamic') about_me = db.Column(db.String(140)) last_seen = db.Column(db.DateTime, default=datetime.utcnow) followed = db.relationship('User', secondary=followers, primaryjoin=(followers.c.follower_id == id), secondaryjoin=(followers.c.followed_id == id), backref=db.backref('followers', lazy='dynamic'), lazy='dynamic') def __repr__(self): return '<User {}>'.format(self.username) def set_password(self, password): self.password_hash = generate_password_hash(password) def check_password(self, password): return check_password_hash(self.password_hash, password) def avatar(self, size): digest = md5(self.email.lower().encode('utf-8')).hexdigest() return 'https://www.gravatar.com/avatar/{}?d=identicon&s={}'.format( digest, size) def follow(self, user): if not self.is_following(user): self.followed.append(user) def unfollow(self, user): if self.is_following(user): self.followed.remove(user) def is_following(self, user): return self.followed.filter( followers.c.followed_id == user.id).count() > 0 def followed_posts(self): followed = Post.query.join( followers, (followers.c.followed_id == Post.user_id)).filter( followers.c.follower_id == self.id) own = Post.query.filter_by(user_id=self.id) return followed.union(own).order_by(Post.timestamp.desc())
class Expander(db.Model): __tablename__ = 'expanders' id = db.Column(db.Integer, primary_key=True) expander_width = db.Column(db.String(16)) expanders = db.relationship('Position', backref='expander') def __repr__(self): return self.expander_width
class Casing(db.Model): __tablename__ = 'casings' id = db.Column(db.Integer, primary_key=True) casing_count = db.Column(db.String(16)) casings = db.relationship('Position', backref='casings_count') def __repr__(self): return self.casing_count
class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), index=True, unique=True) email = db.Column(db.String(120), index=True, unique=True) password_hash = db.Column(db.String(128)) posts = db.relationship('Post', backref='author', lazy='dynamic') def __repr__(self): return '<User {}>'.format(self.username)
class LocksPurpose(db.Model): """docstring for LocksPurpose""" __tablename__ = 'lock_purpose' id = db.Column(db.Integer, primary_key=True) purpose_name = db.Column(db.String(16)) purposes = db.relationship('Position', backref='lock_purpose') def __repr__(self): return self.purpose_name
class HingesSide(db.Model): """docstring for HingesSide""" __tablename__ = 'hinge_sides' id = db.Column(db.Integer, primary_key=True) side = db.Column(db.String(8)) sides = db.relationship('Position', backref='hinge_side') def __repr__(self): return self.side
class HingesType(db.Model): """docstring for HingesType""" __tablename__ = 'hinge_types' id = db.Column(db.Integer, primary_key=True) kind = db.Column(db.String(140)) kinds = db.relationship('Position', backref='hinge_kind') def __repr__(self): return self.kind
class AluminumButt(db.Model): """docstring for AluminumButt""" __tablename__ = 'aluminum_butts' id = db.Column(db.Integer, primary_key=True) butt_description = db.Column(db.String(64)) butts = db.relationship('Position', backref='alum_butt') def __repr__(self): return self.butt_description
class DoorsSeal(db.Model): """docstring for DoorsSeal""" __tablename__ = 'door_seals' id = db.Column(db.Integer, primary_key=True) seal = db.Column(db.String(16)) seals = db.relationship('Position', backref='door_seal') def __repr__(self): return self.seal
class HingesColor(db.Model): """docstring for HingesColor""" __tablename__ = 'hinge_colors' id = db.Column(db.Integer, primary_key=True) color = db.Column(db.String(32)) colors = db.relationship('Position', backref='hinge_color') def __repr__(self): return self.color
class CW_vendor_code(db.Model): __tablename__ = 'cw_vendor_codes' id = db.Column(db.Integer, primary_key=True) cw_vendor_code_index = db.Column(db.Integer, index=True, unique=True) vendor_code_name = db.Column(db.String(32)) doors_height = db.Column(db.Integer) doors_width = db.Column(db.Integer) hinge_side = db.Column(db.String(8)) cw_positions = db.relationship('CW_position', backref='cw_vendor_code')
class User(UserMixin, db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), index=True, unique=True) email = db.Column(db.String(120), index=True, unique=True) password_hash = db.Column(db.String(128)) about_me = db.Column(db.String(140)) # last_seen = db.Column(db.DateTime, default=datetime.utcnow) posts = db.relationship('Post', backref='author', lazy='dynamic') orders = db.relationship('Order', backref='creator', lazy='dynamic') cw_orders = db.relationship('CW_order', backref='cw_creator', lazy='dynamic') def __repr__(self): return self.username def set_password(self, password): self.password_hash = generate_password_hash(password) def check_password(self, password): return check_password_hash(self.password_hash, password)
class CW_order(db.Model): __tablename__ = 'cw_orders' id = db.Column(db.Integer, primary_key=True) order_number = db.Column(db.String(16)) customer_manager = db.Column(db.String(32)) customer_city = db.Column(db.String(32)) timestamp = db.Column(db.DateTime, default=datetime.utcnow) sketch_is_ready = db.Column(db.Boolean) stickers_is_ready = db.Column(db.Boolean) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) cw_positions = db.relationship('CW_position', backref='cw_order')
class DoorModel(db.Model): __tablename__ = 'door_models' id = db.Column(db.Integer, primary_key=True) modelname = db.Column(db.String(64), index=True, unique=True) primer = db.Column(db.Boolean, default=False, nullable=False) paint = db.Column(db.Boolean, default=False, nullable=False) veneer = db.Column(db.Boolean, default=False, nullable=False) laminate = db.Column(db.Boolean, default=False, nullable=False) cased_glass = db.Column(db.Boolean, default=False, nullable=False) glass_cleare = db.Column(db.Boolean, default=False, nullable=False) glass_plus = db.Column(db.Boolean, default=False, nullable=False) positions = db.relationship('Position', backref='doormodel') def __repr__(self): return self.modelname