class UserRoles(db.Model): __tablename__ = "user_roles" id = db.Column(db.Integer(), primary_key=True) user_id = db.Column(db.Integer(), db.ForeignKey("users.id", ondelete="CASCADE")) role_id = db.Column(db.Integer(), db.ForeignKey("roles.id", ondelete="CASCADE"))
class ServiceForm(db.Model): __tablename__ = 'service_forms' id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(50), nullable=False) def __str__(self): return self.name
class Person(db.Model): """Modelo Persona Person(id_person, name_person, last_name_person, telephone_person, email_person, name_profile_img) Relaciones: - Persona tendrá referencias de varias Mascotas Nota: lazy(perezosa) = True define como SQLAlchemy cargará los datos """ id_person = db.Column(db.Integer, primary_key = True) name_person = db.Column(db.String(25), nullable = False) last_name_person = db.Column(db.String(25), nullable = False) telephone_person = db.Column(db.Integer(), nullable = False) email_person = db.Column(db.String(25), unique = True, nullable = False) name_profile_img = db.Column(db.String, default = 'default.jpg' , nullable = True) url_profile_img = db.Column(db.String, default = 'http://localhost:5000/static/profile_img/default.jpg' , nullable = True) # Relacion uno a muchos con la clase Mascota pets = db.relationship('Pet', backref = 'owner', lazy = True) def __repr__(self): return self.name_person
class Pet(db.Model): """Modelo Mascota Pet(id_pet, name_pet, type_pet, age_pet, name_profile_img) Nota: al registrar una mascota, el valor de adopcion siempre sera False Relaciones: - Mascota tendrá la llave primaria de Persona """ id_pet = db.Column(db.Integer, primary_key = True) name_pet = db.Column(db.String(25), nullable = False) type_pet = db.Column(db.String(25), nullable = False) age_pet = db.Column(db.Integer(), nullable = False) adopt = db.Column(db.Boolean(), nullable = False, default = False) name_profile_img = db.Column(db.String, default = 'default.jpg' , nullable = True) url_profile_img = db.Column(db.String, default = 'http://localhost:5000/static/profile_img/default.jpg' , nullable = True) # Referencia a la clase Persona id_owner = db.Column(db.Integer, db.ForeignKey('person.id_person'), nullable = True) def __repr__(self): return self.name_pet
class Role(db.Model): __tablename__ = "roles" id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(50), unique=True) def __repr__(self): return f"{self.name}"
class TypeOfService(db.Model): __tablename__ = 'types_of_service' id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(50), nullable=False) description = db.Column(db.Text(), nullable=False) id_service_form = db.relationship('ServiceForm',secondary='type_service_form', backref=db.backref('types_of_service', lazy='dynamic')) def __str__(self): return self.name
class Organization(db.Model): __tablename__ = 'organizations' # 1 регистрационный номер учетной записи id = db.Column(db.Integer(), primary_key=True) # 2 название организации name = db.Column(db.Text(), nullable=False) # 3 дата гос. регистрации юр. лица date_registration = db.Column(db.DateTime(), nullable=False) # 4 организационно-правовая форма opf = db.Column(db.Text(), nullable=False) # 5 адреса, телефон, эл. почта contacts = db.Column(db.Text(), nullable=False) # 6 ФИО руководителя name_boss = db.Column(db.Text(), nullable=False) # 7 информация о лицензии организации license = db.Column(db.Text(), nullable=False) # 8 формы обслуживания form_service = db.relationship('ServiceForm', secondary='organization_service_form', backref=db.backref('organizations', lazy='dynamic')) # 9 направления реабилитации или абилитации direction_of_rehabilitation = db.Column(db.Text(), nullable=False) # 10 перечень оказываемых услуг, наличие специалистов, наличие технических средств, реабилитационные программы resources = db.Column(db.Text(), nullable=False) # 11 общее количество мест для реабил. услуг total_seats = db.Column(db.Integer(), nullable=False) # 11 количество свободных мест для реабил. услуг free_seats = db.Column(db.Integer(), nullable=False) # 12 информация о результатх, проведенных проверок result_checks = db.Column(db.Text(), nullable=False) # 13 информация об опыте работы за последние 5 лет work_experience = db.Column(db.Text(), nullable=False) # 14 ведомственная принадлежность departmental_affiliation = db.Column(db.Text(), nullable=False) # 15 вышестоящая организация parent_organization = db.Column(db.Text(), nullable=False) # 16 другая информация, определнная региональными нормативными актами other_information = db.Column(db.Text(), nullable=False) def __str__(self): return self.name
class User(UserMixin, db.Model): __tablename__ = 'users' id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(64), unique=True) password_hash = db.Column(db.String(128)) role_id = db.Column(db.Integer, db.ForeignKey('roles.id')) is_block = db.Column(db.Boolean(), nullable=False) def set_password(self, password): self.password_hash = generate_password_hash(password) def check_password(self, password): return check_password_hash(self.password_hash, password) def __str__(self): return self.name