class Energy(db.Model): __tablename__ = "energy" id = db.Column(db.Integer, primary_key=True) energy = db.Column(db.Float(64)) measurement_time = db.Column(db.DateTime(), default=sql.func.now()) created = db.Column( db.DateTime(), default=sql.func.now() # use db to set timestamp ) updated = db.Column(db.DateTime(), default=sql.func.now(), onupdate=sql.func.now()) asset_id = Column(Integer, ForeignKey('asset.id'))
class ItemModel(db.Model): __tablename__ = 'item' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(25)) price = db.Column(db.Float(precision=2)) description = db.Column(db.String(150)) def __init__(self, name, price, description): self.name = name self.price = price self.description = description def __repr__(self): return f'{self.__class__.__name__}'
class Items(db.Model): __tablename__ = "items" """ Represents items field id: Primary key type id: Integer """ id = db.Column(db.Integer, primary_key=True) itemTitle = db.Column(db.String(220), nullable=False) categoryId = db.Column( db.ForeignKey('category.id'), nullable=False) itemDescription = db.Column(db.Text, nullable=True) itemPrice = db.Column(db.Float(precision=2), nullable=False) status = db.Column(db.Boolean, default=True) createdAt = db.Column(db.DateTime,default=datetime.datetime.utcnow()) updatedAt = db.Column(db.DateTime, onupdate=datetime.datetime.utcnow())
class ReaderGrade(db.Model): '''读者等级表''' __tablename__ = "reader_grade" #表名 id = db.Column(db.Integer, primary_key=True, autoincrement=True) #id 主键自增 grand_name = db.Column(db.String(50), nullable=True) # 级别名字 quan_tity = db.Column(db.Integer, nullable=True) # 可借数量2本 max_maney = db.Column(db.Float(), nullable=True) # 最大金额/押金 date_amount = db.Column(db.Integer, nullable=True) # 还书期限 # ''' 作者1--N书 Author:books = db.relationship('Book', backref='author') Book:author_id = db.Column(db.Integer,db.ForeignKey('authors.id')) #或者是, Author.id ''' # 读者返回来引用 级别 readers = db.relationship('Reader', backref='grade') #指定读者对象,引用级别的别名! def __str__(self): return self.grand_name
class DesignationModel(db.Model): id = db.Column(db.Integer, primary_key=True) designation = db.Column(db.String(12), nullable=False) basic = db.Column(db.Float(precision=2), nullable=False) def __init__(self, designation, basic): self.designation = designation self.basic = basic @classmethod def find_by_designation(cls, designation): return DesignationModel.query.filter_by( designation=designation).first() def json(self): return {"Designation": self.designation, "Basic": self.basic} def save_to_db(self): db.session.add(self) db.session.commit()
class CommissionModel(db.Model): __tablename__ = "commission" commission_id = db.Column(db.Integer, primary_key=True) order_id = db.Column(db.Integer, db.ForeignKey('orders.order_id')) amount = db.Column(db.Float(precision='3,2'), nullable=False) vendor_id = db.Column(db.Integer, db.ForeignKey('auth.id')) total_amt = db.Column(db.Integer) date = db.Column(db.String(50), nullable=False, default=datetime.utcnow) vendor = db.relationship("AuthModel", foreign_keys=[vendor_id]) def __init__(self, amount): self.amount = amount def json(self): return { "Commission_id": self.commission_id, "Order_id": self.order_id, "Total_Amount": self.total_amt, "Commission_Amount": self.amount, "Vendor_id": self.vendor_id, "Vendor": self.vendor.username, "Date": self.date } 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 find_by_comid(cls, id): return CommissionModel.query.filter_by(commission_id=id).first() @classmethod def find_by_orderid(cls, id): return CommissionModel.query.filter_by(order_id=id).first()
class Mainorder(GenericModel): id = db.Column('order_id', db.Integer(), primary_key=True) cid = db.Column('cust_id', db.ForeignKey("customer.cust_id"),nullable=False,unique=False) hid = db.Column('hotel_id', db.ForeignKey("hotel.hotel_id"),nullable=False,unique=False) billamount = db.Column('total_bill', db.Float())
class Room(db.Model): __tablename__ = 'rooms' id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) title = db.Column(db.String(50), nullable=False) description = db.Column(db.Text(), nullable=True) address = db.Column(db.String(50), nullable=True) number = db.Column(db.String(7), nullable=True) region = db.Column(db.String(50), nullable=True) cep = db.Column(db.String(15), nullable=True) lat = db.Column(db.Float(), nullable=True) long = db.Column(db.Float(), nullable=True) building = db.Column(db.String(5), nullable=False) type = db.Column(db.String(5), nullable=False) bathroom = db.Column(db.String(5), nullable=False) minRent = db.Column(db.Integer(), nullable=True, default=1) price = db.Column(db.Integer(), nullable=False, default=0) gender = db.Column(db.String(2), nullable=True) main_image = db.Column(db.String(100), nullable=True, default='default') imageServer = db.Column(db.String(15), nullable=True) city_id = db.Column(db.Integer, db.ForeignKey('cities.id'), nullable=False) active = db.Column('is_active', db.Boolean(), nullable=False, server_default='1') views = db.Column(db.Integer(), nullable=True, default=0) views7days = db.Column(db.Integer(), nullable=True, default=0) furniture = db.Column(db.Boolean(), nullable=False, server_default='0') include_bills = db.Column(db.Boolean(), nullable=False, server_default='0') smoking = db.Column(db.Boolean(), nullable=False, server_default='0') pet = db.Column(db.Boolean(), nullable=False, server_default='0') visits = db.Column(db.Boolean(), nullable=False, server_default='0') aircond = db.Column(db.Boolean(), nullable=False, server_default='0') internet = db.Column(db.Boolean(), nullable=False, server_default='0') parking = db.Column(db.Boolean(), nullable=False, server_default='0') elevator = db.Column(db.Boolean(), nullable=False, server_default='0') last_modified = db.Column(db.DateTime(), nullable=False, default=datetime.now()) created = db.Column(db.DateTime(), nullable=False, default=datetime.now()) def getCity(self): city = db.session.query(City).filter(City.id == self.city_id).one() return city.desc def get_bool_attr(self, attr): value = self.__getattribute__(attr) if value: return 'Sim' else: return 'Não'.decode('utf-8') def get_gender_attr(self): if self.gender == 'F': return 'Mulher' if self.gender == 'M': return 'Homem' if self.gender == 'B': return 'Homem/Mulher' def get_building_attr(self): if self.building == 'apto': return 'Apartamento' if self.building == 'house': return 'Casa' if self.building == 'hostel': return 'Pensionato' if self.building == 'hotel': return 'Hotel' def get_room_attr(self): if self.type == 'single': return 'Individual' if self.type == 'singlec': return 'Solteiro Coletivo' if self.type == 'couple': return 'Casal' def get_bathroom_attr(self): if self.bathroom == 'single': return 'Individual' if self.bathroom == 'public': return 'Coletivo' if self.bathroom == 'half': return 'Compartilhado para dois quartos'
class Timezones(db.Model): id = db.Column(db.Integer, primary_key=True) time_zone = db.Column(db.String(40), db.ForeignKey('info.timezone')) offset = db.Column(db.Float())
class Exercise(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100)) duration = db.Column(db.Float) calories_burned = db.Column(db.Integer) pace = db.Column(db.Float(), nullable=True) miles = db.Column(db.Float(), nullable=True) sets = db.Column(db.Float(), nullable=True) reps = db.Column(db.Float(), nullable=True) category = db.Column(db.String(45)) description = db.Column(db.Text(), nullable=True) created_at = db.Column(db.DateTime, server_default=func.now()) updated_at = db.Column(db.DateTime, server_default=func.now(), onupdate=func.now()) workout_id = db.Column(db.Integer, db.ForeignKey('workout.id', ondelete='cascade'), nullable=False) workout = db.relationship('Workout', foreign_keys=[workout_id]) # class methods @classmethod def create_exercise(cls, user_data): duration = calcMinutes(user_data['hour'], user_data['minutes']) if user_data['category'] == 'running' or user_data['category'] == 'walking' or user_data['category'] == 'cycling': pace = float(duration) / float(user_data['miles']) exercise = Exercise(name=user_data['exercise_name'], duration=duration, calories_burned=float(user_data['calories_burned']), workout_id=user_data['workout_id'], category=user_data['category'], miles=float(user_data['miles']), pace=pace) db.session.add(exercise) db.session.commit() return exercise if user_data['category'] == 'weight_lifting': exercise = Exercise(name=user_data['exercise_name'], duration=duration, calories_burned=float(user_data['calories_burned']), workout_id=user_data['workout_id'], category=user_data['category'], sets=float(user_data['sets']), reps=float(user_data['reps'])) db.session.add(exercise) db.session.commit() return exercise if user_data['category'] == 'other': exercise = Exercise(name=user_data['exercise_name'], duration=duration, calories_burned=float(user_data['calories_burned']), workout_id=user_data['workout_id'], category=user_data['category'], description=user_data['desc']) db.session.add(exercise) db.session.commit() return exercise @classmethod def valid_ex_update(cls, user_data): is_valid = True if user_data['calories_burned'] == '': is_valid = False flash("Please Enter Est. Calories Burned", "ex2_error") if len(user_data['exercise_name']) < 2 or user_data['exercise_name'] == '': is_valid = False flash("Please Enter an Exercise Name", "ex2_error") if profanity.contains_profanity(user_data['exercise_name']) == True: is_valid = False flash("Please Enter an Appropriate Exercise Name", "ex2_error"); if (user_data['hours'] == '' or float(user_data['hours']) < 1) and (user_data['minutes'] == '' or float(user_data['minutes']) < 1): is_valid = False flash("Please Enter Duration", "ex2_error") return is_valid @classmethod def valid_ex(cls, user_data): is_valid = True if len(user_data['exercise_name']) < 2 or user_data['exercise_name'] == '': is_valid = False flash("Please Enter an Exercise Name", "ex_error") if profanity.contains_profanity(user_data['exercise_name']) == True: is_valid = False flash("Please Enter an Appropriate Exercise Name", "ex_error"); if user_data['hour'] == '': is_valid = False flash("Please Enter Amount of Hours", "ex_error") if user_data['minutes'] == '': is_valid = False flash("Please Enter Amount of Minutes", "ex_error") if user_data['calories_burned'] == '': is_valid = False flash("Please Enter Est. Calories Burned", "ex_error") if user_data['category'] == 'running' or user_data['category'] == 'walking' or user_data['category'] == 'cycling': if user_data['miles'] == '' or user_data['miles'] == 0: is_valid = False flash("Please Enter Amount of Miles", "ex_error") if user_data['category'] == 'weight_lifting': if user_data['reps'] == '': is_valid = False flash("Please Enter Amount of Repetitions", "ex_error") if user_data['sets'] == '': is_valid = False flash("Please Enter Amount of Sets", "ex_error") if user_data['category'] == 'other': if user_data['desc'] == '' or profanity.contains_profanity(user_data['desc']) == True: is_valid = False flash("Please Enter Valid Description", "ex_error") return is_valid
class Pool(db.Model): __tablename__ = "pool" pool_id = db.Column(db.Integer, primary_key=True) pool_hash = db.Column(db.String(100), nullable=False, unique=True) pool_pair = db.Column(db.String(10), nullable=False) pool_timeframe = db.Column(db.String(10), nullable=False) pool_locked_price = db.Column(db.Float(precision=2, asdecimal=True), nullable=False) pool_close_price = db.Column(db.Float(precision=2, asdecimal=True), nullable=False) pool_amount_buy = db.Column(db.Float(precision=5, asdecimal=True), nullable=False) pool_amount_sell = db.Column(db.Float(precision=5, asdecimal=True), nullable=False) pool_multiplier_buy = db.Column(db.Float(precision=2, asdecimal=True), nullable=False) pool_multiplier_sell = db.Column(db.Float(precision=2, asdecimal=True), nullable=False) pool_fee_type = db.Column(db.Integer, nullable=False) pool_fee_amount = db.Column(db.Float(precision=2, asdecimal=True), nullable=False) pool_status = db.Column( db.Integer, nullable=False ) # 0 = not started 1 = open 2 = confirming 3 = closed 4 = under review pool_tcreate = db.Column(db.DateTime(timezone=True), default=func.now()) pool_tmodified = db.Column(db.DateTime(timezone=True), default=func.now(), onupdate=func.now()) pool_start = db.Column(db.DateTime(timezone=True), default=None, nullable=True) pool_topen = db.Column(db.DateTime(timezone=True), default=None, nullable=True) pool_tlock = db.Column(db.DateTime(timezone=True), default=None, nullable=True) pool_texpire = db.Column(db.DateTime(timezone=True), default=None, nullable=True) pool_tclose = db.Column(db.DateTime(timezone=True), default=None, nullable=True) pool_treview = db.Column(db.DateTime(timezone=True), default=None, nullable=True) transactions = db.relationship( "Transaction", backref="pool", primaryjoin="Transaction.pool_id == Pool.pool_id", order_by="desc(Transaction.transaction_tmodified)", ) # Pool state POOL_STATE_NOT_STARTED = 0 # No betting allowed yet POOL_STATE_OPEN = 1 # Open for betting POOL_STATE_LOCKED = 2 # No more betting, pool has begun POOL_STATE_EXPIRED = 3 # Time expired, no payouts yet POOL_STATE_CLOSED = 4 # Payouts complete POOL_STATE_UNDER_REVIEW = 5 # Oops, there's a problem # Pool Fees POOL_FEE_NONE = 0 POOL_FEE_FIXED = 1 POOL_FEE_PERCENT = 2
class Spot(db.Model): __tablename__ = 'Spots' __searchable__ = ['name', 'describe'] id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255), nullable=False) zone = db.Column(db.String(20), nullable=False) describe = db.Column(db.String(5000)) tel = db.Column(db.String(255)) website = db.Column(db.String(500)) keyword = db.Column(db.String(255)) address = db.Column(db.String(500)) pic1 = db.Column(db.String(500)) pic2 = db.Column(db.String(500)) pic3 = db.Column(db.String(500)) px = db.Column(db.Float(precision=18)) py = db.Column(db.Float(precision=18)) rec_table = db.Column(db.String(50000)) rec_factors = db.Column(db.String(2000)) del_pic1 = db.Column(db.String(100)) del_pic2 = db.Column(db.String(100)) del_pic3 = db.Column(db.String(100)) owner = db.Column(db.Integer, db.ForeignKey("Users.id")) def __init__(self, name, zone, describe, tel, website, keyword, address, pic1, pic2, pic3, px, py, del_pic1=None, del_pic2=None, del_pic3=None, owner=None): self.name = name self.zone = zone self.describe = describe self.tel = tel self.website = website self.keyword = keyword self.address = address self.pic1 = pic1 self.pic2 = pic2 self.pic3 = pic3 self.px = px self.py = py self.del_pic1 = del_pic1 self.del_pic2 = del_pic2 self.del_pic3 = del_pic3 self.owner = owner def to_dict(self, lang='en'): return dict( spot_id=self.id, name=self.name if lang == 'zh' else trans(self.name), zone=self.zone, describe=self.describe if lang == 'zh' else trans(self.describe), tel=self.tel, website=self.website, keyword=self.keyword, address=self.address if lang == 'zh' else trans(self.address), pic=[p for p in [self.pic1, self.pic2, self.pic3] if p], px=self.px, py=self.py, like_num=self.count_like_num(), owner=self.owner, ) def count_like_num(self): return FavoriteSpot.query.filter_by(spot_id=self.id).count()
class Dish(DaoOperations, OutputMixin, db.Model): RELATIONSHIPS_TO_DICT = True DISH_REQUIRED_PARAMS = [ 'description', 'price', 'category', 'name', 'type', 'establishment_id', 'category_id' ] did = db.Column(db.Integer, primary_key=True) description = db.Column(db.String(100), nullable=False) price = db.Column(db.Float(precision=2), nullable=False) rating = db.Column(db.Integer, default=0) image_url = db.Column(db.String(550), default='') category_id = db.Column(db.Integer, db.ForeignKey('category.cid'), nullable=False) category = db.relationship('Category', backref='dishes', lazy=True) # int? | Category table name = db.Column(db.String(50), nullable=False) type = db.Column(db.String(20), nullable=False) # menu_id = db.Column(db.Integer, db.ForeignKey('menu.mid'), nullable=False) # menu = db.relationship('Menu', backref='dishes', lazy=True) establishment_id = db.Column(db.Integer, db.ForeignKey('establishment.eid'), nullable=False) establishment = db.relationship('Establishment', backref='dishes', lazy=True) # upVotes = db.relationship('UpVote', backref=db.backref('dish', lazy='subquery'), lazy=True) # reviews = db.relationship('Review', backref=db.backref('dish', lazy='subquery'), lazy=True) def __init__(self, **kwargs): super(Dish, self).__init__(**kwargs) self.description = kwargs['description'] self.price = kwargs['price'] self.image_url = kwargs.get('image_url', None) self.rating = kwargs.get('rating', None) self.name = kwargs['name'] self.type = kwargs['type'] self.establishment_id = kwargs['establishment_id'] self.category_id = kwargs['category_id'] @staticmethod def get_all_dishes(): return Dish.query.all() @staticmethod def get_dish_by_id(dish_id): return Dish.query.filter_by(did=dish_id).first() # new queries @staticmethod def get_all_dish_by_type(dish_type): return Dish.query.filter_by(type=dish_type) @staticmethod def get_all_dish_by_category(dish_category): return Dish.query.filter_by(category=dish_category) @staticmethod def get_all_dishes_by_establishment(eid): return Dish.query.filter_by(establishment_id=eid) @staticmethod def get_top_dishes_by_establishment(eid, n=3): return Dish.query.filter_by(establishment_id=eid).\ order_by(Dish.rating.desc()).limit(n) @staticmethod def get_top_dishes(n=100): return Dish.query.order_by(Dish.rating.desc()).limit(n) @staticmethod def get_random_dishes(n=10): return Dish.query.order_by(func.random()).limit(n)