class Cleaner(User): __tablename__ = 'cleaner' id = db.Column(db.Integer, db.ForeignKey('user.user_id'), primary_key=True) cleaning_company = db.Column(db.String, default='Caglayan pislik temizleyiciler', nullable=False) staff_id = db.Column(db.Integer, db.ForeignKey('staff.staff_id')) staff_t = db.relationship('Staff', back_populates='cleaner_t', foreign_keys=[staff_id]) def __repr__(self): return 'email: {} admin: {}'.format(self.email, self.is_admin) @classmethod def create_user(cls, username, password, cleaning_company): cleaner = super().create_user(username=username, password=password) cleaner.cleaning_company = cleaning_company def user_dashboard(self): return render_template("cleaner_dashboard.html", user=self) __mapper_args__ = { "polymorphic_identity": "cleaner", }
class Assistant(User): __tablename__ = 'assistant' user_id = db.Column(db.Integer, db.ForeignKey('user.user_id'), primary_key=True) field = db.Column(db.String(60), nullable=False) end_date = db.Column(db.DateTime) staff_id = db.Column(db.Integer, db.ForeignKey('staff.staff_id')) staff_t = db.relationship('Staff', back_populates='assistant_t', foreign_keys=[staff_id]) # end_date = db.Column(db.DateTime) supervisor_id = db.Column(db.Integer, db.ForeignKey('vet.id')) supervisor = db.relationship('Vet', back_populates='supervisee', foreign_keys=[supervisor_id]) def user_dashboard(self): return render_template("assistant_dashboard.html", user=self) __mapper_args__ = { "polymorphic_identity": "assistant", } @classmethod def create_user(cls, username, password): hashed_pw = bc.generate_password_hash(password).decode('utf-8') new_user = cls(username=username, password=hashed_pw) db.session.add(new_user) db.session.commit()
class Pet(db.Model): __tablename__ = 'pet' pet_id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(60), default='Çomar') ''' Attributes inherited from Stays relation''' checkin_date = db.Column(db.DateTime, default=datetime.utcnow) checkout_date = db.Column(db.DateTime) species = db.Column(db.String(60)) race = db.Column(db.String(60)) weight = db.Column(db.Float, nullable=False) age = db.Column(db.Integer, nullable=False) owner_ssn = db.Column(db.Integer, db.ForeignKey('owner.ssn')) treatments = db.relationship('Treatment', backref='pet') # Stays relation cage = db.relationship('Cage', secondary=Stay, back_populates='pet') # multivalued disabilities disabilities = db.relationship('Disability') def to_dict(self): return { "Id": self.pet_id, "Age": self.age, "Name": self.name, "Owner": [ self.owner_ssn if self.owner is not None else "Bizim Yurdumuz\ Sokaklar"], "Weight": self.weight, "Species": self.species, "Race": self.race, }
class Staff(db.Model): __tablename__ = 'staff' staff_id = db.Column(db.Integer, db.ForeignKey('user.user_id'), primary_key=True) name = db.Column(db.String(60), nullable=False) last_name = db.Column(db.String(60), nullable=False) salary = db.Column(db.Float, default=db.Float(2200.5)) phone_number = db.Column(db.Integer) address = db.Column(db.String(100)) start_at = db.Column(db.DateTime) finish_at = db.Column(db.DateTime) assistant_t = db.relationship('Assistant', back_populates='staff_t', foreign_keys='Assistant.staff_id') vet_t = db.relationship('Vet', back_populates='staff_t', foreign_keys='Vet.staff_id') secretary_t = db.relationship('Secretary', back_populates='staff_t', foreign_keys='Secretary.staff_id') cleaner_t = db.relationship('Cleaner', back_populates='staff_t', foreign_keys='Cleaner.staff_id') __mapper_args__ = {"polymorphic_identity": "staff"}
class InvoicesServiceLink(db.Model): __tablename__ = 'invoices_service_link' invoices_serial_number = db.Column( db.Integer, db.ForeignKey('invoices.serial_number'), primary_key=True, autoincrement=False) service_name = db.Column( db.Integer, db.ForeignKey('service.name'), primary_key=True, autoincrement=False) invoices = db.relationship(Invoices, backref=db.backref('invoices_assoc')) service = db.relationship(Service, backref=db.backref('service_assoc'))
class Appointment(db.Model): __tablename__ = 'appointment' appo_id = db.Column(db.Integer, primary_key=True) on = db.Column(db.DateTime, nullable=False) appo_type = db.Column(db.String, nullable=False) owner_ssn = db.Column( db.Integer, db.ForeignKey('owner.ssn'), primary_key=True, autoincrement=False) vet_id = db.Column(db.Integer, db.ForeignKey('vet.id')) assigned = db.relationship( 'Vet', back_populates='appos', foreign_keys=[vet_id])
class Secretary(User): __tablename__ = 'secretary' id = db.Column(db.Integer, db.ForeignKey('user.user_id'), primary_key=True) staff_id = db.Column(db.Integer, db.ForeignKey('staff.staff_id')) staff_t = db.relationship('Staff', back_populates='secretary_t', foreign_keys=[staff_id]) # languages = db.relationship('Languages', backref='languages') @classmethod def create_user(cls, username, password): super().create_user(username=username, password=password) def user_dashboard(self): return render_template("secretary_dashboard.html", user=self) __mapper_args__ = { "polymorphic_identity": "secretary", }
class Service(db.Model): __tablename__ = 'service' name = db.Column( db.String, primary_key=True, nullable=False, autoincrement=False) cost = db.Column(db.Float, nullable=False) serial_number = db.Column(db.Integer, db.ForeignKey('invoices.serial_number')) invoices = db.relationship('Invoices', secondary='invoices_service_link')
class Medicine(db.Model): __tablename__ = 'medicine' serial_number = db.Column( db.Integer, primary_key=True, nullable=False, autoincrement=True) name = db.Column(db.String(60), nullable=False) barcode_number = db.Column(db.String(60), nullable=False) expiration_date = db.Column(db.DateTime, nullable=False) distributor_name = db.Column(db.String(60), nullable=False) distributor_phone = db.Column(db.String(20), nullable=False) record_id = db.Column(db.Integer, db.ForeignKey('treatment.record_id'))
class Invoices(db.Model): __tablename__ = 'invoices' serial_number = db.Column( db.Integer, primary_key=True, autoincrement=False) quantity = db.Column(db.Integer, nullable=False) transaction_date = db.Column(db.DateTime, nullable=False) cost = db.Column(db.Float, nullable=False) service_quantity = db.Column(db.Integer, nullable=False) owner_ssn = db.Column(db.Integer, db.ForeignKey('owner.ssn')) # Invoice has service services = db.relationship('Service', secondary='invoices_service_link')
class Vet(User): __tablename__ = 'vet' id = db.Column(db.Integer, db.ForeignKey('user.user_id'), primary_key=True) field = db.Column(db.String, default='Genel uzman', nullable=False) staff_id = db.Column(db.Integer, db.ForeignKey('staff.staff_id')) staff_t = db.relationship('Staff', back_populates='vet_t', foreign_keys=[staff_id]) supervisee = db.relationship('Assistant', foreign_keys='Assistant.supervisor_id', back_populates='supervisor') appos = db.relationship('Appointment', back_populates='assigned', foreign_keys='Appointment.vet_id') def __repr__(self): return "{} FIELD: {}".format(super().__repr__(), self.field) def to_dict(self): return super().to_dict().update({ 'field': self.field, 'end_date': self.end_date.__str__(), 'supervisees': self.supervisee }) __mapper_args__ = { "polymorphic_identity": "vet", } def user_dashboard(self): return render_template("vet_dashboard.html", user=self) @classmethod def create_user(cls, username, password, field=None): hashed_pw = bc.generate_password_hash(password).decode('utf-8') new_user = cls(username=username, password=hashed_pw, field=field) db.session.add(new_user) db.session.commit()
class Treatment(db.Model): _tablename_ = 'treatment' record_id = db.Column(db.Integer, primary_key=True) record_type = db.Column(db.String(250)) start_date = db.Column(db.DateTime) end_date = db.Column(db.DateTime) pet_id = db.Column(db.Integer, db.ForeignKey('pet.pet_id')) medicines = db.relationship('Medicine', backref='medicines') def to_dict(self): return { 'Id': self.record_id, 'Record_type': self.record_type, 'Start_date': self.start_date.__str__(), 'End_date': self.end_date.__str__(), }
class Admin(User): __tablename__ = 'admin' user_id = db.Column(db.Integer, db.ForeignKey('user.user_id'), primary_key=True) __mapper_args__ = { "polymorphic_identity": "admin", } def __repr__(self): return super().__repr__() @classmethod def create_user(cls, username, password): super().create_user(username, password) def user_dashboard(self): return redirect('/admin')
class CageNotes(db.Model): cage_id = db.Column(db.Integer, db.ForeignKey( 'cages.cage_id'), primary_key=True) note = db.Column(db.String, primary_key=True)
class Disability(db.Model): pet = db.Column(db.Integer, db.ForeignKey('pet.pet_id'), primary_key=True) disab_desc = db.Column(db.String(260), nullable=False, primary_key=True)
class PetNotes(db.Model): pet = db.Column(db.Integer, db.ForeignKey('pet.pet_id'), primary_key=True) note_desc = db.Column(db.String(260), nullable=False, primary_key=True)
'cages.cage_id'), primary_key=True) suitable = db.Column(db.String, primary_key=True) class CageNotes(db.Model): cage_id = db.Column(db.Integer, db.ForeignKey( 'cages.cage_id'), primary_key=True) note = db.Column(db.String, primary_key=True) Stay = db.Table( 'stay', db.Column( 'pet_id', db.Integer, db.ForeignKey('pet.pet_id'), primary_key=True), db.Column( 'cage_id', db.Integer, db.ForeignKey('cages.cage_id'), primary_key=True)) class Pet(db.Model): __tablename__ = 'pet' pet_id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(60), default='Çomar') ''' Attributes inherited from Stays relation''' checkin_date = db.Column(db.DateTime, default=datetime.utcnow) checkout_date = db.Column(db.DateTime)
class Suitability(db.Model): cage_id = db.Column(db.Integer, db.ForeignKey( 'cages.cage_id'), primary_key=True) suitable = db.Column(db.String, primary_key=True)