class ApiMsg(db.Model): __tablename__ = 'api_msg' id = db.Column(db.Integer(), primary_key=True, comment='主键,自增') num = db.Column(db.Integer(), nullable=True, comment='接口序号') name = db.Column(db.String(128), nullable=True, comment='接口名称') desc = db.Column(db.String(256), nullable=True, comment='接口描述') variable_type = db.Column(db.String(32), nullable=True, comment='参数类型选择') status_url = db.Column(db.String(32), nullable=True, comment='基础url,序号对应项目的环境') up_func = db.Column(db.String(128), comment='接口执行前的函数') down_func = db.Column(db.String(128), comment='接口执行后的函数') method = db.Column(db.String(32), nullable=True, comment='请求方式') variable = db.Column(db.Text(), comment='form-data形式的参数') json_variable = db.Column(db.Text(), comment='json形式的参数') param = db.Column(db.Text(), comment='url上面所带的参数') url = db.Column(db.String(256), nullable=True, comment='接口地址') skip = db.Column(db.String(256), comment='跳过判断') extract = db.Column(db.String(2048), comment='提取信息') validate = db.Column(db.String(2048), comment='断言信息') header = db.Column(db.String(2048), comment='头部信息') module_id = db.Column(db.Integer, db.ForeignKey('module.id'), comment='所属的接口模块id') project_id = db.Column(db.Integer, nullable=True, comment='所属的项目id') created_time = db.Column(db.DateTime, index=True, default=datetime.now) update_time = db.Column(db.DateTime, index=True, default=datetime.now, onupdate=datetime.now)
class CaseData(db.Model): __tablename__ = 'case_data' id = db.Column(db.Integer(), primary_key=True, comment='主键,自增') num = db.Column(db.Integer(), nullable=True, comment='步骤序号,执行顺序按序号来') status = db.Column(db.String(16), comment='状态,true表示执行,false表示不执行') name = db.Column(db.String(128), comment='步骤名称') up_func = db.Column(db.String(256), comment='步骤执行前的函数') down_func = db.Column(db.String(256), comment='步骤执行后的函数') skip = db.Column(db.String(64), comment='跳过判断函数') time = db.Column(db.Integer(), default=1, comment='执行次数') param = db.Column(db.Text(), default=u'[]') status_param = db.Column(db.String(64), default=u'[true, true]') variable = db.Column(db.Text()) json_variable = db.Column(db.Text()) status_variables = db.Column(db.String(64)) extract = db.Column(db.String(2048)) status_extract = db.Column(db.String(64)) validate = db.Column(db.String(2048)) status_validate = db.Column(db.String(64)) header = db.Column(db.String(2048)) status_header = db.Column(db.String(64)) case_id = db.Column(db.Integer, db.ForeignKey('case.id')) api_msg_id = db.Column(db.Integer, db.ForeignKey('api_msg.id')) created_time = db.Column(db.DateTime, index=True, default=datetime.now) update_time = db.Column(db.DateTime, index=True, default=datetime.now, onupdate=datetime.now)
class User(UserMixin, db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(64)) username = db.Column(db.String(64)) # 设置外键 role_id = db.Column(db.Integer, db.ForeignKey('roles.id')) password = db.Column(db.String(64)) confirmed = db.Column(db.Boolean, default=False) location = db.Column(db.Text()) about_me = db.Column(db.Text()) def __init__(self, **kwargs): super(User, self).__init__(**kwargs) if self.role is None: # 将kangming的权限设置为管理员 if self.username == 'kangming': self.role = Role.query.filter_by(name='Administrator').first() # 如果未指定role,则为默认权限,即User if self.role is None: self.role = Role.query.filter_by(default=True).first() def generate_confirmation_token(self, expiration=300): s = Serializer(current_app.config['SECRET_KEY'], expiration) return s.dumps({'confirm': self.id}).decode('utf-8') def confirm(self, token): s = Serializer(current_app.config['SECRET_KEY']) data = s.loads(token.encode('utf-8')) if data.get('confirm') != self.id: return False self.confirmed = True db.session.add(self) # 添加手动commit,是否有必要? db.session.commit() return True # 确认密码是否正确 def verify_password(self, password): if self.password == password: return True else: return False # 检查是否有指定权限 def can(self, perm): return self.role is not None and self.role.has_permission(perm) # 检查是否有管理员权限 def is_administrator(self): return self.can(Perm.A)
class RecordIncomeExpenditure(db.Model): __tablename__ = 'record_income_expenditure' id = db.Column(db.Integer, primary_key=True, autoincrement=True) ctime = db.Column(db.DateTime, nullable=False, default=datetime.now(), comment='创建时间') utime = db.Column(db.DateTime, nullable=False, default=datetime.now(), onupdate=datetime.now, comment='更新时间') creator_id = db.Column(db.Integer, nullable=False, comment='创建者用户Id') # 用户id creator = db.Column(db.String(64), nullable=False, comment='创建者') # 用户名 record_content = db.Column(db.Text(2000), nullable=False, comment='内容(创建者添加)') # 内容 remark = db.Column(db.Text(2000), nullable=False, default='', comment='备注(审核者添加)') # 备注 entry_account_status = db.Column(db.Integer, nullable=False, default=0, comment='入账状态(0-未入账,1-已入账,2-记录作废)') entry_account_time = db.Column(db.DateTime, nullable=False, default=datetime.now(), comment='入账时间') reviewer_id = db.Column(db.Integer, nullable=False, default=0, comment='审核人Id') reviewer = db.Column(db.String(64), nullable=False, default='', comment='审核人') def to_dict(self): columns = self.__table__.columns.keys() result = {} for key in columns: if key in ['ctime', 'utime', 'entry_account_time']: value = getattr(self, key).strftime("%Y-%m-%d %H:%M:%S") else: value = getattr(self, key) result[key] = value return result
class Library(db.Model): __tablename__ = "library" id = db.Column(db.Integer, primary_key=True) Libaray_Reference = db.Column(db.String(255), nullable=False, unique=True) Version_id = db.Column(db.String(255), nullable=True) Title = db.Column(db.String(255), nullable=False) Segment = db.Column(db.String(255), nullable=False) Section = db.Column(db.String(255), nullable=False) Area = db.Column(db.String(255), nullable=False) Risk = db.Column(db.String(255), nullable=False) Review_Categorisation = db.Column(db.String(255), nullable=False) Control_Step = db.Column(db.Boolean, default = True) Audit_Objective = db.Column(db.String(255), nullable=False) Document_Sort_No = db.Column(db.String(255), nullable=False) Master_Data = db.Column(db.String(255), nullable=False) Guidance = db.Column(db.Text(), nullable=True) status = db.Column(db.Boolean, default = True) Template = db.Column(db.Boolean, default = True) Comments = db.Column(db.String(255), nullable=True) updatedby = db.Column(db.Integer, db.ForeignKey('users.id'), nullable = True) createdby = db.Column(db.Integer, db.ForeignKey('users.id'), nullable = False) created_at = db.Column(db.DateTime, default = datetime.datetime.utcnow()) updated_at = db.Column(db.DateTime) templates = db.relationship("Templates", backref=db.backref('templates'), uselist=True) user_updated = db.relationship("Users", backref=db.backref('user_updated'), foreign_keys="[Library.updatedby]", uselist=True) user_created = db.relationship("Users", backref=db.backref('user_created'), foreign_keys="[Library.createdby]",uselist=True)
class EventMessage(db.Model): __tablename__ = "event_messages" id = db.Column(db.Integer, primary_key=True) text = db.Column(db.Text()) event_id = db.Column(db.Integer, db.ForeignKey('events.id'), nullable=False) event = db.relationship('Event', foreign_keys=[event_id], backref=backref("event_messages", cascade="all,delete")) poster_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) poster = db.relationship('User', foreign_keys=[poster_id]) created_at = db.Column(db.DateTime, server_default=func.now()) updated_at = db.Column(db.DateTime, server_default=func.now(), onupdate=func.now()) @classmethod def validate_message(cls, data): is_valid = True if len(data['text']) < 1: flash('Text cannot be empty', 'error') is_valid = False return is_valid @classmethod def add_message(cls, data): new_msg = EventMessage(**data) db.session.add(new_msg) db.session.commit() return new_msg
class User(db.Model): __tablename__ = 'sys_user' id = db.Column(db.Integer, primary_key=True, autoincrement=True) ctime = db.Column(db.DateTime, default=datetime.now(), comment='创建时间') utime = db.Column(db.DateTime, default=datetime.now(), onupdate=datetime.now(), comment='修改时间') name = db.Column(db.String(64), index=True, comment='姓名') password = db.Column(db.String(128), comment='密码') phone = db.Column(db.String(30), comment='电话号码') profess = db.Column(db.String(64)) grade = db.Column(db.String(64), comment='性别') email = db.Column(db.String(120), index=True, comment='邮箱') group = db.Column(db.String(64)) power = db.Column(db.Text(2000)) def to_dict(self): columns = self.__table__.columns.keys() result = {} for key in columns: if key == 'pub_date': value = getattr(self, key).strftime("%Y-%m-%d %H:%M:%S") else: value = getattr(self, key) result[key] = value return result # 密码加密 def hash_password(self, password): self.password = custom_app_context.encrypt(password) # 密码解析 def verify_password(self, password): return custom_app_context.verify(password, self.password) # 获取token,有效时间10min def generate_auth_token(self, expiration=600): s = Serializer(current_app.config['SECRET_KEY'], expires_in=expiration) return s.dumps({'id': self.id}) # 密码加密 @staticmethod def hash_password_method(password): return custom_app_context.encrypt(password) # 解析token,确认登录的用户身份 @staticmethod def verify_auth_token(token): s = Serializer(current_app.config['SECRET_KEY']) try: data = s.loads(token) except SignatureExpired: return None # valid token, but expired except BadSignature: return None # invalid token user = User.query.get(data['id']) return user
class ProjectModel(db.Model): __tablename__ = 'project' uuid = db.Column(db.Text(length=36), default=lambda: str(UUID_URI64()), primary_key=True) name = db.Column(db.String(60), unique=True) description = db.Column(db.Text) created_by_id = db.Column(db.Integer, db.ForeignKey('user.id')) created_by = db.relationship('UserModel', foreign_keys="ProjectModel.created_by_id") project_color_identity = db.Column(db.String(20), unique=True) created_at = db.Column(DateTime, default=datetime.datetime.now) collaborators = db.relationship('ShareProjectModel', cascade="all,delete", backref='project') tasks = db.relationship('TaskModel', cascade="all,delete", backref='project') def __init__(self, name, description, created_by_id, project_color_identity): self.name = name self.description = description self.created_by_id = created_by_id self.project_color_identity = project_color_identity def json(self): return { "UUID": self.uuid, "Project_Name": self.name, "Project_Description": self.description, "Created_by": self.created_by.name, "Created_at": str(self.created_at).split('.')[0], "Project_color_identity": self.project_color_identity, "Collaborators": [user.json() for user in self.collaborators], "Tasks": [task.json() for task in self.tasks] } 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_name(cls, name): return ProjectModel.query.filter_by(name=name).first() @classmethod def find_by_id(cls, id): return ProjectModel.query.filter_by(uuid=id).first()
class Dish(db.Model): __tablename__ = 'dish' id = db.Column(db.Integer, primary_key=True) restaurant_id = db.Column(db.Integer, db.ForeignKey('restaurant.id'), nullable=True) ingredients = db.relationship('Ingredient', secondary=ingredient_table, backref='dishes') description = db.Column(db.Text())
class Song(db.Model): __tablename__ = "songs" song_id = db.Column(db.Integer, primary_key=True) song = db.Column(db.String(32)) year = db.Column(db.Integer) artist = db.Column(db.String(128)) genre = db.Column(db.String(32)) lyrics = db.Column(db.Text()) # text timestamp = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
class Recipe(db.Model): id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(100), nullable=False) description = db.Column(db.Text, nullable=False) ingredients = db.Column(db.Text(), nullable=False) instructions = db.Column(db.Text, nullable=False) under30 = db.Column(db.String(3), default="Yes", nullable=False) author_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) author = db.relationship('User', foreign_keys=[ author_id], backref='recipes', lazy=True) users_who_like_this_recipe = db.relationship('User', secondary=likes_table)
class Users(db.Model): __tablename__ = "users" id = db.Column(db.Integer,primary_key=True) first_name = db.Column(db.String(255),nullable=True) last_name = db.Column(db.String(255),nullable = True) phone = db.Column(db.String(255),nullable = True) email = db.Column(db.String(120), unique = True, nullable = False) password = db.Column(db.String(255)) address = db.Column(db.Text(),nullable = True) gender = db.Column(db.Enum('M','F','O'),nullable=True) role_id = db.Column(db.Integer, db.ForeignKey('roles.id'), nullable = True) status = db.Column(db.Boolean, default = True) created_at = db.Column(db.DateTime, default = datetime.datetime.utcnow()) updated_at = db.Column(db.DateTime)
class Publishing(db.Model): __tablename__ = 'publishings' id = db.Column('id', db.Integer, primary_key=True) topic = db.Column('topic', db.String(100)) text = db.Column('text', db.Text(300)) def __init__(self, topic, text): self.topic = topic self.text = text def get_id(self): return unicode(self.id) def __repr__(self): return '<Publishing $r>' % (self.topic)
class User2(db.Model): user_id = db.Column(db.String(63), primary_key=True) user_name = db.Column(db.String(63), unique=True) phone_num = db.Column(db.String(63), unique=True) money = db.Column(db.String(15)) # 注意定时更新,否则长度会溢出,或者在插入时限制 record = db.Column(db.Text(4095)) pay_num = db.Column(db.String(13), unique=True) def __init__(self, user_id, user_name, phone_num, money, record, pay_num): self.user_id = user_id self.user_name = user_name self.phone_num = phone_num self.money = money self.record = record self.pay_num = pay_num
class cards(db.Model): __tablename__ = "cards" id = db.Column(db.Integer, primary_key=True) #### One-to-Many Relationship w/ Holidays #### holiday_id = db.Column(db.Integer, db.ForeignKey('holidays.id', ondelete="cascade"), nullable=False) assoc_holidays = db.relationship('holidays', foreign_keys=[holiday_id], backref="assoc_card") ########################################### image = db.Column(db.Text()) include = db.Column(db.String(2)) created_at = db.Column(db.DateTime, server_default=func.NOW()) updated_at = db.Column(db.DateTime, server_default=func.NOW())
class Post(db.Model): id = db.Column('id', db.Integer, primary_key=True) title = db.Column('title', db.String(90), unique=True) slug = db.Column('slug', db.String(90)) body = db.Column('body', db.Text()) created_at = db.Column('created_at', db.DateTime(timezone=True), default=datetime.now(), nullable=True) category = db.Column('category', db.String(60), nullable=True) author = db.Column('author', db.String(90)) user_id = db.Column('user_id', db.Integer, db.ForeignKey('user.id')) def __init__(self, title, slug, body, category, author, user_id): self.title = title self.slug = slug self.body = body self.category = category self.author = author, self.user_id = user_id
class Guest(db.Model): __tablename__ = 'guests' id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) gender = db.Column(db.String(2), nullable=True) age = db.Column(db.Integer(), nullable=True) description = db.Column(db.Text(), nullable=True) picture = db.Column(db.String(100), nullable=True, default='picna.jpg') work = db.Column(db.Boolean(), nullable=False, server_default='0') study = 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') car = db.Column(db.Boolean(), nullable=False, server_default='0') maxValue = db.Column(db.Integer(), 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') last_modified = 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 getUser(self): user = db.session.query(User).filter(User.id == self.user_id).one() return user 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'
class Case(db.Model): __tablename__ = 'case' id = db.Column(db.Integer(), primary_key=True, comment='主键,自增') num = db.Column(db.Integer(), nullable=True, comment='用例序号') name = db.Column(db.String(128), nullable=True, comment='用例名称') desc = db.Column(db.String(256), comment='用例描述') func_address = db.Column(db.String(256), comment='用例需要引用的函数') variable = db.Column(db.Text(), comment='用例公共参数') times = db.Column(db.Integer(), nullable=True, comment='执行次数') project_id = db.Column(db.Integer, db.ForeignKey('project.id'), comment='所属的项目id') case_set_id = db.Column(db.Integer, db.ForeignKey('case_set.id'), comment='所属的用例集id') environment = db.Column(db.Integer(), comment='环境类型') created_time = db.Column(db.DateTime, index=True, default=datetime.now, comment='创建时间') update_time = db.Column(db.DateTime, index=True, default=datetime.now, onupdate=datetime.now)
class Event(db.Model): __tablename__ = "events" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(45)) description = db.Column(db.Text()) capacity = db.Column(db.Text()) address = db.Column(db.Text()) city = db.Column(db.Text()) state = db.Column(db.Text()) zip_code = db.Column(db.String(5)) creator_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) event_time = db.Column(db.DateTime, server_default=func.now()) created_at = db.Column(db.DateTime, server_default=func.now()) updated_at = db.Column(db.DateTime, server_default=func.now(), onupdate=func.now()) # relationships creator = db.relationship('User', foreign_keys=[creator_id], backref="hosted_events") attendees = db.relationship('User', secondary="attendees") size_restrictions = db.relationship('DogSize', secondary="size_restrictions") @classmethod def validate_event(cls, data): is_valid = True if datetime.now() > get_event_time(data['date'], data['time']): flash('Event must be for future date', 'error') is_valid = False user = User.query.get(session['userid']) for hosting in user.hosted_events: if hosting.event_time == get_event_time(data['date'], data['time']): is_valid = False flash('You have an event already scheduled for this time', 'error') dog_sizes = [] for dog in user.user_dogs: dog_sizes.append(dog.size) for size in data['size_restrictions']: if int(size) in dog_sizes: is_valid = False flash('Cannot restrict dogs the same size as your own', 'error') return is_valid return is_valid @classmethod def validate_existing_event(cls, data): is_valid = True if datetime.now() > get_event_time(data['date'], data['time']): flash('Event must be for future date', 'error') is_valid = False user = User.query.get(session['userid']) for hosting in user.hosted_events: if hosting.id != int(data['id']): if hosting.event_time == get_event_time(data['date'], data['time']): is_valid = False flash('You have an event already scheduled for this time', 'error') return is_valid if data['size_restrictions']: dog_sizes = [] user = User.query.get(session['userid']) for dog in user.user_dogs: dog_sizes.append(dog.size) for size in data['size_restrictions']: if int(size) in dog_sizes: is_valid = False flash('Cannot restrict dogs the same size as your own', 'error') return is_valid return is_valid @classmethod def edit_event(cls, data): event = Event.query.get(data['id']) event.name = data['name'] event.address = data['address'] event.city = data['city'] event.state = data['state'] event.zip_code = data['zip_code'] event.capacity = data['capacity'] event.event_time = get_event_time(data['date'], data['time']) @classmethod def add_event(cls, data): event_data = add_event_schema.dump(data) event_data.data['event_time'] = get_event_time(data['date'], data['time']) new_event = Event(**event_data.data) db.session.add(new_event) db.session.commit() return new_event
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 Contact(db.Model): id = db.Column(db.Integer, primary_key=True) created_at = db.Column('created_at', db.DateTime(timezone=True), default=datetime.now(), nullable=True) name = db.Column('name', db.String(90)) content = db.Column('content', db.Text())
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 SummerPageSchedule(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column('name', db.String(90)) content = db.Column('content', db.Text())
class User(db.Model): id = db.Column(db.Integer, primary_key=True) first_name = db.Column(db.String(55)) last_name = db.Column(db.String(55)) email = db.Column(db.String(55)) password = db.Column(db.Text(55)) events_user_attends = db.relationship("Event", secondary=users_and_events, lazy="dynamic") created_at = db.Column(db.DateTime, server_default=func.now()) updated_at = db.Column(db.DateTime, server_default=func.now(), onupdate=func.now()) @classmethod def validate_registration(cls, user_registration): is_valid = True if len(user_registration["first_name"]) < 1: is_valid = False flash("First name can not be blank", "error") if len(user_registration["last_name"]) < 1: is_valid = False flash("Last name can not be blank", "error") if len(user_registration["email"]) < 1: is_valid = False flash("Email can not be blank") if not EMAIL_REGEX.match(user_registration["email"]): flash("Invalid email address", "error") if len(user_registration["password"]) < 5: is_valid = False flash("Password must be at least 5 characters", "error") if len(user_registration["password"]) > 55: is_valid = False flash("Password can not be more than 45 characters", "error") if len(user_registration["conf_pass"]) < 1: is_valid = False flash("Confirm Password can not be blank", "error") if user_registration["conf_pass"] != user_registration["password"]: is_valid = False flash("Passwords must match", "error") return is_valid @classmethod def create_user(cls, user_data): pw_hash = bcrypt.generate_password_hash( user_data['password']).decode("utf-8") create_user = cls(first_name=user_data["first_name"], last_name=user_data["last_name"], email=user_data["email"], password=pw_hash) db.session.add(create_user) db.session.commit() return create_user @classmethod def login_validation(cls, login_info): is_valid = True if len(login_info['lemail']) < 1 or not EMAIL_REGEX.match( login_info["lemail"]): is_valid = False flash("Please enter your email") if len(login_info['lpassword']) < 5: is_valid = False flash("Please enter your password") if not is_valid: return is_valid user = cls.query.filter_by(email=login_info["lemail"]).first() if user: if bcrypt.check_password_hash(user.password, login_info["lpassword"]): session["user_id"] = user.id return is_valid else: is_valid = False flash("Invalid Credentials") return is_valid else: is_valid = False flash("User not Found") return is_valid return is_valid
class Info(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column('name', db.String(90)) content = db.Column('content', db.Text())