class Course(db.Model): __tablename__ = "courses" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255), nullable=False) admin_id = db.Column(db.Integer, db.ForeignKey('admins.id')) content = db.Column(db.Text) videos = db.Column(db.Text) type = db.Column(db.Integer) module_id = db.Column(db.Integer, db.ForeignKey('modules.id')) cover = db.Column(db.String(255)) collect_num = db.Column(db.Integer, default=0) view_num = db.Column(db.Integer, default=0) score = db.Column(db.Integer, default=0) created_at = db.Column(db.DateTime, default=datetime.now()) module = db.relationship('Module') admin = db.relationship("Admin") users = db.relationship("User", secondary=user_course_table) def to_json(self): return { "id": self.id, "name": self.name, "admin": self.admin.to_json(), "content": self.content, "videos": self.videos, "type": self.type, "module": self.module.name, "score": self.score, "view_num": self.view_num, "collect_num": self.collect_num, "created_at": self.created_at, "cover": self.cover }
class MsgSession(db.Model): __tablename__ = 'msg_session' id = db.Column(db.Integer, primary_key=True) from_id = db.Column(db.Integer, db.ForeignKey('user.id')) from_user = db.relationship(User, primaryjoin='User.id==MsgSession.from_id', backref=db.backref( 'from_session', cascade='all,delete-orphan')) to_id = db.Column(db.Integer, db.ForeignKey('user.id')) to_user = db.relationship(User, primaryjoin='User.id==MsgSession.to_id', backref=db.backref('to_session', cascade='all,delete-orphan')) from_read = db.Column(db.Boolean, default=False) to_read = db.Column(db.Boolean, default=False) count = db.Column(db.Integer, default=1) timestamp = db.Column(db.DateTime, index=True) msg_contents = db.relationship('MsgContent', backref='session', lazy='dynamic') def latest_msg(self): body = self.msg_contents.filter( MsgContent.timestamp == self.timestamp).first() #不能使用filter_by return body.body def __repr__(self): return '<Session %r>' % (self.to_user)
class Ticket(db.Model): __tablename__ = 'ticket' id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(128), nullable=False) pub_time = db.Column(db.DateTime, nullable=False) description = db.Column(db.TEXT, nullable=False) affect = db.Column(db.TEXT, nullable=False) pub_user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) handler_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) status = db.Column(db.SmallInteger, nullable=False, default=0, comment="0-未处理、1-处理中、2-已解决、3-挂起") level = db.Column(db.SmallInteger, nullable=False, comment="1-一般、2-严重、3-重大") classify_id = db.Column(db.Integer, db.ForeignKey( 'classify.id'), nullable=False) occur_time = db.Column(db.DateTime, nullable=False) restore_time = db.Column(db.DateTime) classify = relationship("Classify") pub_user = relationship("User", foreign_keys=[pub_user_id]) handler = relationship("User", foreign_keys=[handler_id]) progresses = relationship("Progress") def __repr__(self): return '<Ticket {}>'.format(self.title) __mapper_args__ = { "order_by": pub_time.desc() }
class Projects(db.Model): __tablename_ = "Projects" proj_id = db.Column(db.Integer(), primary_key=True, autoincrement=True, nullable=False) proj_manager = db.Column(db.NVARCHAR(20), db.ForeignKey("project_managers.manager_code"), nullable=False) proj_budget = db.Column(db.Numeric, nullable=False) proj_name = db.Column(db.NVARCHAR(40), nullable=False) proj_approval = db.Column(db.Boolean) proj_deadline = db.Column(db.DateTime) proj_hours = db.Column(db.Numeric) proj_client = db.Column(db.NVARCHAR(20), db.ForeignKey("clients.client_id")) proj_description = db.Column(db.NVARCHAR(1000)) proj_type = db.Column(db.Integer, db.ForeignKey("project_types.type_id")) proj_currency = db.Column(db.Integer, db.ForeignKey("currency.curr_id")) proj_create_date = db.Column(db.Date, default=datetime.date.today, nullable=False) proj_disbs = db.relationship("ProjectDisbursements", lazy="dynamic", backref="project") proj_tasks = db.relationship("ProjectTasks", lazy="dynamic", backref="project") proj_material = db.relationship("WarehouseReqs", lazy="dynamic", backref="project")
class Booking(db.Model): __tablename__ = 'booking' id = db.Column(db.Integer, primary_key=True) is_cancel = db.Column(db.Boolean, default=False) cancelation_reason = db.Column(db.String(200)) booked_datetime = db.Column(db.DateTime, default=datetime.now()) start_time = db.Column(db.DateTime) end_time = db.Column(db.DateTime) total_price = db.Column(db.Integer) client_id = db.Column(db.Integer, db.ForeignKey('client.id')) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) activated = db.Column(db.Boolean, default=False) booked_services = db.relationship('Service', secondary=service_booked) provided_services = db.relationship('Service', secondary=service_provided) def fill_booked_services(self, id_list): """fills booked_services by given service ids """ for id in id_list: s = Service.query.get(id) self.booked_services.append(s) def fill_provided_services(self, id_list): """fills provided_services by given service ids """ for id in id_list: s = Service.query.get(id) self.provided_services.append(s)
class Employee(UserMixin, db.Model): ''' Create an Employee table''' __tablename__ = 'employees' id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(60), index=True, unique=True) username = db.Column(db.String(60), index=True, unique=True) first_name = db.Column(db.String(60), index=True) last_name = db.Column(db.String(60), index=True) password_hash = db.Column(db.String(128)) department_id = db.Column(db.Integer, db.ForeignKey('departments.id')) role_id = db.Column(db.Integer, db.ForeignKey('roles.id')) is_admin = db.Column(db.Boolean, default=False) @property def password(self): '''Prevent password from being accessed''' raise AttributeError('Password is not a readable attribute!') @password.setter def password(self, password): '''Set password to a hashed password''' self.password_hash = generate_password_hash(password) def verify_password(self, password): '''Check if hashed password matches actual password''' return check_password_hash(self.password_hash, password) def __repr__(self): return '<Employee: {}>'.format(self.username)
class Scores(db.Model): __tablename__ = "scores" id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('users.id')) score = db.Column(db.Integer) course_id = db.Column(db.Integer, db.ForeignKey("courses.id")) user = db.relationship("User") course = db.relationship("Course")
class Attend(db.Model): """create a view for the attendees workshop""" __tablename__ = 'attendees' email = db.Column(db.String(60), db.ForeignKey('participants.email', ondelete='CASCADE'), primary_key=True) Workshhop_id = db.Column(db.Integer, db.ForeignKey('workshops.id', ondelete='CASCADE'), primary_key=True)
class Message(db.Model): id = db.Column(db.Integer, primary_key=True) sender_id = db.Column(db.Integer, db.ForeignKey('user.id')) recipient_id = db.Column(db.Integer, db.ForeignKey('user.id')) body = db.Column(db.String(140)) timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow) def __repr__(self): return '<Message {}>'.format(self.body)
class MsgContent(db.Model): __tablename__ = 'msg_content' id = db.Column(db.Integer, primary_key=True) session_id = db.Column(db.Integer, db.ForeignKey('msg_session.id')) body = db.Column(db.String(500)) timestamp = db.Column(db.DateTime, index=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) def __repr__(self): return '<Content %r>' % (self.body)
class BackupInstance(db.Model): __tablename__ = 'backup_instance' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255)) server_id = db.Column(db.String(255), nullable=False) backup_type_id = db.Column(db.Integer, db.ForeignKey('backup_type.id'), nullable=False) backup_type = db.relationship('BackupType', backref=db.backref('backupinstances', lazy='dynamic')) business_id = db.Column(db.Integer, db.ForeignKey('business.id'), nullable=False) business = db.relationship('Business', backref=db.backref('backupinstances', lazy='dynamic')) instance = db.Column(db.Integer, nullable=False)
class Ticket_2_Server(db.Model): __tablename__ = 'ticket_2_server' __table_args__ = (UniqueConstraint("ticket_id", "server_id"),) id = db.Column(db.Integer, primary_key=True, autoincrement=True) ticket_id = db.Column(db.Integer, db.ForeignKey('ticket.id'), nullable=False) server_id = db.Column(db.Integer, db.ForeignKey('server.id'), nullable=False) ticket = relationship("Ticket") server = relationship("Server")
class Device(db.Model): __tablename__='device' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(64), nullable=False) description = db.Column(db.String(50), nullable=True) category_type = db.Column(db.String(30),db.ForeignKey('category.type'), nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) power = db.Column(db.Float, nullable=True,default=0) total_energy_consumption = db.Column(db.Float,nullable=True,default=0) begin_use_time = db.Column(db.DateTime, nullable=True) used_time = db.Column(db.DateTime, nullable =True) status = db.Column(db.Integer, nullable=True) device_energy_info_list = db.relationship('Device_energy_info', backref='device', lazy='dynamic')
class IssueResponse(db.Model): __tablename_ = "issue_response" issue_id = db.Column(db.Integer, db.ForeignKey(ProjectIssues.issue_id), nullable=False) response_id = db.Column(db.Integer, nullable=False, primary_key=True) issue_responder = db.Column(db.NVARCHAR(15), db.ForeignKey(Users.user_empcode), nullable=False) issue_response = db.Column(db.VARCHAR(10000), nullable=True) response_date = db.Column(db.Date, default=datetime.date.today, nullable=False)
class TopArtistsArtistsAssociation(db.Model): """""" __tablename__ = "top_artists_artists_association" top_artists_id = db.Column(db.Integer, db.ForeignKey("top_artists.id"), primary_key=True) artists_id = db.Column(db.Integer, db.ForeignKey("artists.id"), primary_key=True) top_artists = db.relationship("TopArtists") artists = db.relationship("Artists") rank = db.Column(db.Integer, default=-1)
class Scheduling(db.Model): __tablename__ = 'scheduling' __table_args__ = (UniqueConstraint("date", "user_id"),) id = db.Column(db.Integer, primary_key=True, autoincrement=True) date = db.Column(db.Date, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) shift_id = db.Column(db.Integer, db.ForeignKey('shift.id'), nullable=False) user = relationship('User') shift = relationship('Shift') def __repr__(self): return '<Scheduling {}>'.format(self.id)
class Task(db.Model): __tablename__ = 'task' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30), nullable=False) description = db.Column(db.String(280), nullable=False) released_date = db.Column(db.DateTime, default=datetime.now()) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) employee_id = db.Column(db.Integer, db.ForeignKey('employee.id')) def __repr__(self): return "<Task %r>" % self.name def get_reported_name(self): return User.query.get(self.user_id).username
class Comment(db.Model): __tablename__ = "comments" id = db.Column(db.Integer, primary_key=True) from_user_id = db.Column(db.Integer) from_user_type = db.Column(db.Integer) to_user_id = db.Column(db.Integer) to_user_type = db.Column(db.Integer) course_id = db.Column(db.Integer, db.ForeignKey("courses.id")) content = db.Column(db.Text) created_at = db.Column(db.DateTime, default=datetime.now()) course = db.relationship("Course") def to_json(self): if self.from_user_type == 1: from_user = User.query.get(self.from_user_id).to_json() else: from_user = Admin.query.get(self.from_user_id).to_json() if self.to_user_type == 1: to_user = User.query.get(self.to_user_id).to_json() else: to_user = Admin.query.get(self.to_user_id).to_json() return { 'id': self.id, "from_user": from_user, "to_user": to_user, "content": self.content, "course": self.course.to_json(), "created_at": self.created_at }
class PaticipatorInfo(db.Model): __tablename__ = 'paticipator_info' id = db.Column(db.Integer, primary_key=True) activity_id = db.Column(db.Integer) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) # 报名时间 timestamp = db.Column(db.DateTime, default=datetime.datetime.now)
class Comment(db.Model): id = db.Column(db.Integer, primary_key=True) article_id = db.Column(db.Integer, db.ForeignKey('post.id')) # 评论文章id content = db.Column(db.String(100), nullable=False) time = db.Column(db.DateTime, default=datetime.strptime( datetime.now().strftime('%Y-%m-%d %H:%M:%S'), '%Y-%m-%d %H:%M:%S')) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) # 用户id to_user = db.Column(db.Integer) # 回复的用户,无则None to_id = db.Column(db.Integer) # 回复目标id,无回复则None # c_post = db.relationship('Post', backref=db.backref('comments', order_by=id.desc())) c_user = db.relationship('User', backref=db.backref('comments'))
class BucketListItem(BaseModel): """ Class used as a representation of the bucketlist item model """ name = db.Column(db.Text, nullable=False) finished_by = db.Column( db.Date, default=datetime.now(tz=pytz.timezone('Africa/Kampala'))) bucketlist_id = db.Column(db.Integer, db.ForeignKey('bucket_list.id'), nullable=False) def add_bucketlist_item(self): """ Method is used to add a bucketlist item to the database """ self.add_data_set() return True def delete_bucketlist_item(self): """ Method is used to add a bucketlist item to the database """ self.delete_data_set() db.session.commit() return True
class Topsellsproduct(db.Model): product_id = db.Column(db.Integer, db.ForeignKey(Product.id), primary_key=True) def __repr__(self): return f"Topsellsproduct('{self.product_id}')"
class Location(db.Model): __tablename__ = 'location' id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.uid')) name = db.Column(db.String(100)) address = db.Column(db.String(200)) city = db.Column(db.String(50)) state = db.Column(db.String(50)) #country=db.column(db.String(50)) zip = db.Column(db.String(20)) lat = db.Column(db.Float) lng = db.Column(db.Float) is_end_point = db.Column(db.Integer, unique=False, default=0) def __init__(self, user_id, name, address, city, state, zip, lat, lng, is_end_point): self.user_id = user_id self.name = name self.address = address self.city = city self.state = state #self.country=country self.zip = zip self.lat = lat self.lng = lng self.is_end_point = is_end_point
class Profile_Student(db.Model): id = db.Column(db.Integer, primary_key=True) student_id = db.Column(db.String(7), db.ForeignKey('user.user_id', onupdate='CASCADE', ondelete='CASCADE'), nullable=True) email = db.Column(db.String(255), unique=True, nullable=False) telp = db.Column(db.String(15), unique=True, nullable=False) student_class = db.Column(db.String(7), db.ForeignKey('class.class_id', onupdate='CASCADE', ondelete='CASCADE'), nullable=True) def __repr__(self) -> str: return '<Student %s>' % self.student_id
class Book(db.Model): __tablename__ = 'book' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(40), nullable=False) author = db.Column(db.String(60), nullable=False) publish_date = db.Column(db.DateTime) user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) body = db.Column(db.String(140)) timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) def __repr__(self): return f"<Post {self.body}>"
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) body = db.Column(db.String(140)) timestamp = db.Column(db.DateTime) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) def __repr__(self): return '<Post %r>' % self.body
class Grade(db.Model): __tablename__ = 'grades' id = db.Column(db.Integer, unique=True) stu_id = db.Column(db.Integer, db.ForeignKey('students.id'), primary_key=True) course_id = db.Column(db.Integer, db.ForeignKey('courses.id'), primary_key=True) grade = db.Column(db.Integer) def __init__(self, stu_id, course_id, grade): self.stu_id = stu_id self.course_id = course_id self.grade = grade def __repr__(self): return '<Grade %r, %r, %r>' % \ (self.stu_id, self.course_id, self.grade)
class Notification(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(128), index=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) timestamp = db.Column(db.Float, index=True, default=time) payload_json = db.Column(db.Text) def get_data(self): return json.loads(str(self.payload_json))
class Stokesproduct(db.Model): stok_id = db.Column(db.Integer, primary_key=True) product_id = db.Column(db.Integer, db.ForeignKey(Product.id), nullable=False) conut = db.Column(db.Integer, nullable=False) def __repr__(self): return f"Stokesproduct('{self.product_id}','{self.conut}')"