class Product(db.Model): __tablename__ = 'products' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80)) price = db.Column(db.Float(precision=2)) quantity = db.Column(db.Integer()) description = db.Column(db.String(200)) minutes_preparation = db.Column(db.Integer()) image_path = db.Column(db.String(80)) product_type_id = db.Column(db.Integer, db.ForeignKey('product_types.id')) product_type = db.relationship('ProductType') #orders = db.relationship('Order', lazy='dynamic') def __init__(self, product_type_id, name, price, quantity, description, minutes_preparation,image_path): self.name = name self.price = price self.quantity = quantity self.description = description self.minutes_preparation = minutes_preparation self.image_path=image_path self.product_type_id=product_type_id @classmethod def find_by_id(cls, _id): return cls.query.filter_by(id=_id).first() @classmethod def find_by_name(cls, name): return cls.query.filter_by(name=name).first() def save_to_db(self): db.session.add(self) db.session.commit() def delete_from_db(self): db.session.delete(self) db.session.commit() @classmethod def init_data(cls): cls(1, "Hamburger", 6, 10, "A 150Gr grilled meat hamburger. Comes with french fries and salad.", 15, "/images/hamburger.jpg").save_to_db() cls(1, "Chicken", 7, 10, "A 300Gr breaded chicken. comes with potatoes and salad", 15, "/images/chicken.jpg").save_to_db() cls(1, "Paella", 9, 10, "Perfect for the seafood lovers, it comes with oysters and mussels", 15, "/images/paella.jpg").save_to_db() cls(1, "Ribs", 12, 10, "300Gr Ribs. Comes with french fries.", 15, "/images/ribs.jpg").save_to_db() cls(1, "Salmon", 12, 10, "Chilean salmon. Comes with vegetables.", 15, "/images/salmon.jpg").save_to_db() cls(1, "Wrap", 7, 10, "Wrap with chicken and salad.", 15, "/images/wrap.jpg").save_to_db() cls(2, "Soda", 2, 7, "250cc soda. The soda comes with pieces of fruit.", 5, "/images/soda.jpg").save_to_db() cls(2, "Juice", 3, 7, "330cc juice. Made of tropical fruits.", 9, "/images/juice.jpg").save_to_db() cls(2, "Tee", 3, 7, "200cc Tee.", 12, "/images/tee.jpg").save_to_db() cls(2, "Beer", 2, 7, "500cc Beer.", 3, "/images/beer.jpg").save_to_db() cls(3, "Pancakes", 4, 7, "Baked pancakes with syrup or honey.", 12, "/images/pancakes.jpg").save_to_db() cls(3, "Macaroons", 3, 7, "Try our special macaroon recipe.", 3, "/images/macaroons.jpg").save_to_db() cls(3, "Forest fruit Cake", 3, 7, "This cake has a great variety of forest fruits, such as blackberries and raspberries.", 5, "/images/cake.jpg").save_to_db()
class ShoppingItemModel(db.Model): __tablename__ = 'shopping_item' id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.Unicode()) quantity = db.Column(db.Integer()) unit = db.Column(db.Enum(Unit), nullable=False, default=Unit.kg) done = db.Column(db.Boolean(), default=False) user_id = db.Column(None, db.ForeignKey('user.id')) shopping_list_id = db.Column(None, db.ForeignKey('shopping_list.id'))
class Registration(db.Model): id = db.Column(db.Integer(), primary_key=True) username = db.Column(db.Text(), unique=True) blob = db.Column(db.Text()) _priority = db.Column("priority", db.Integer()) _confirmed = db.Column("confirmed", db.Boolean()) uni_id = db.Column(db.Integer(), db.ForeignKey("uni.id")) uni = db.relationship( "Uni", backref=db.backref("Registrations", lazy="dynamic", cascade="all, delete-orphan"), ) @property def user(self): return User.get(self.username) @property def is_guaranteed(self): return any( map(self.user.is_in_group, current_app.config["ZAPF_GUARANTEED_GROUPS"])) @property def confirmed(self): return self._confirmed or self.is_guaranteed @confirmed.setter def confirmed(self, value): if not self.is_guaranteed: self._confirmed = value @property def priority(self): return self._priority if not self.is_guaranteed else -1 @priority.setter def priority(self, value): self._priority = value if not self.is_guaranteed else None @property def data(self): return json.loads(self.blob) @data.setter def data(self, value): self.blob = json.dumps(value) @property def is_zapf_attendee(self): return self.confirmed and self.priority < self.uni.slots
class Uni(db.Model): id = db.Column(db.Integer(), primary_key=True) token = db.Column(db.String(256), unique=True) name = db.Column(db.Text(), unique=True) slots = db.Column(db.Integer()) def __init__(self, name, token, slots=3): self.name = name self.token = token self.slots = slots def __repr__(self): return "<Uni: {}>".format(self.name)
class Mascot(db.Model): id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.Text(), unique=False) uni_id = db.Column(db.Integer(), db.ForeignKey('uni.id')) uni = db.relationship('Uni', backref=db.backref('Mascots', lazy='dynamic', cascade="all, delete-orphan")) def __init__(self, name, uni_id): self.name = name self.uni_id = uni_id def __repr__(self): return "<Mascot: {}>".format(self.name)
class Role(db.Model, RoleMixin): id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(255)) def __str__(self): return self.name
class UserModel(db.Model): __tablename__ = 'user' id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.Unicode()) email = db.Column(db.Unicode(), unique=True, index=True) password_hash = db.Column(db.Unicode())
class Request(db.Model): __tablename__ = 'requests' id = db.Column(db.Integer(), primary_key=True) headers = db.Column(db.Unicode()) body = db.Column(db.Unicode()) ip = db.Column(postgresql.INET())
class ShoppingListModel(db.Model): __tablename__ = 'shopping_list' id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.Unicode()) description = db.Column(db.Unicode()) user_id = db.Column(None, db.ForeignKey('user.id'))
class TodoModel(db.Model): __tablename__ = 'todo' id = db.Column(db.Integer(), primary_key=True) text = db.Column(db.Unicode()) completed = db.Column(db.Boolean(), default=False) user_id = db.Column(None, db.ForeignKey('user.id'))
class Circle(db.Model): __tablename__ = 'circles' name = db.Column(db.String(32)) type = db.Column(db.String(8)) # start_at_desc = db.Column(db.DateTime()) # start_at_desc # end_at_desc = db.Column(db.DateTime()) # end_at start_at = db.Column(db.String(32)) end_at = db.Column(db.String(32)) desc = db.Column(db.String(128)) check_rule = db.Column(db.String(256)) circle_master_id = db.Column(db.Integer()) avatar = db.Column(db.String(256)) # 头像地址 joined_number = db.Column(db.Integer()) # 加入人数 is_published = db.Column(db.Integer()) # 草稿状态为0,没有发布,发布状态为1, 已经发布 def update_joined_number(self): self.joined_number += 1
class CircleMemberTable(db.Model): __tablename__ = 'circles_members' circle_id = db.Column(db.Integer(), index=True) # 圈子id user_id = db.Column(db.Integer(), index=True) # 用户ID @classmethod def add(cls, circle, user): obj = cls() obj.user_id = user.id obj.circle_id = circle.id db.save(obj) return obj @classmethod def delete(cls, circle, user): # db.session.delete(circle) item = cls.query.filter(cls.circle_id == circle.id).filter( cls.user_id == user.id).first() if item: db.session.delete(item) db.session.commit() return circle
class UserInfo(db.Model): __tablename__ = 'userinfo' id = db.Column(db.Integer, primary_key = True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) user = relationship('User', backref=db.backref('user_info', lazy='dynamic')) spectrum = db.Column('spectrum', db.Integer()) user_story = db.Column('user_story', db.String()) goal = db.Column('goal', db.String()) def __init__(self, user, spectrum, user_story, goal): self.user = user self.spectrum = spectrum self.user_story = user_story self.goal = goal
class Property(db.Model, json.Serialisable): __tablename__ = 'property' id = db.Column(db.Integer(), primary_key=True) case_id = db.Column(db.Integer(), db.ForeignKey('case.id', ondelete="CASCADE"), nullable=False, unique=True) title_number = db.Column(db.String(), nullable=False) street = db.Column(db.String(), nullable=False) extended = db.Column(db.String(), nullable=True) locality = db.Column(db.String(), nullable=False) postcode = db.Column(db.String(), nullable=False) tenure = db.Column(db.String(), nullable=False) def __init__(self, case_id, title_number, street, tenure, locality, postcode, extended=None): self.case_id = case_id self.title_number = title_number self.street = street self.extended = extended self.locality = locality self.postcode = postcode self.tenure = tenure def json_format(self): jsondata = {} def append(name, parameter): value = parameter(self) if value is not None: jsondata[name] = value append('id', lambda obj: obj.id) append('case_id', lambda obj: obj.case_id) append('title_number', lambda obj: obj.title_number) append('street', lambda obj: obj.street) append('extended', lambda obj: obj.extended) append('locality', lambda obj: obj.locality) append('postcode', lambda obj: obj.postcode) append('tenure', lambda obj: obj.tenure) return jsondata def object_hook(dct): _id = dct.get('id') _case_id = dct.get('case_id') _title_number = dct.get('title_number') _street = dct.get('street') _extended = dct.get('extended', None) _locality = dct.get('locality') _postcode = dct.get('postcode') _tenure = dct.get('tenure') property_ = Property(_case_id, _title_number, _street, _tenure, _locality, _postcode, _extended) property_.id = _id return property_
class Clockin(db.Model): __tablename__ = 'clockin' circle_id = db.Column(db.Integer(), index=True) # 圈子id user_id = db.Column(db.Integer(), index=True) # 用户ID line = db.Column(db.String(256)) # 打卡配的台词 clockin_img = db.Column(db.String(256)) # 打卡地址
self.major_version, self.minor_version, ) def fullname(self): return '{0} {1}.{2}'.format( self.name, self.major_version, self.minor_version, ) # Define security models roles_users = db.Table( 'roles_users', db.Column('user_id', db.Integer(), db.ForeignKey('user.id')), db.Column('role_id', db.Integer(), db.ForeignKey('role.id')) ) class Role(db.Model, RoleMixin): id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(255)) def __str__(self): return self.name class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True)
class TestModel(db.Model): __tablename__ = 'test' attr1 = db.Column(db.String(32)) attr2 = db.Column(db.Integer()) attr3 = db.Column(db.DateTime()) # 必须DT都大写
class Images(db.Model): id = db.Column(db.Integer(), primary_key=True) path = db.Column(db.String(5000), unique=True, nullable=False) def __init__(self, path): self.path = path