class Purchase(db.Model): """Purchase model.""" # fn_number - fn, fd_number - i, fpd_number - fp id = db.Column(db.Integer, primary_key=True) # noqa: WPS125 user_id = db.Column( db.Integer, db.ForeignKey('user.id', ondelete='CASCADE'), index=True, ) fn_number = db.Column(db.String) fd_number = db.Column(db.String) fpd_number = db.Column(db.String) receipt_type = db.Column(db.String) date = db.Column(db.DateTime) sum = db.Column(db.Float) # noqa: WPS125 loaded = db.Column(db.String) organization = db.Column(db.String) user = relationship('User', backref='purchases') category = relationship('Category', secondary='purchase_category', backref='purchases') def __str__(self): return self.organization def __repr__(self): return '<Покупка-{0}, за дату-{1}, на сумму-{2}, валид-{3}'.format( self.id, self.date, self.sum, self.loaded, )
class User(db.Model, UserMixin): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50), nullable=False) email = db.Column(db.String(50), unique=True) password_hash = db.Column(db.String(255), nullable=False, unique=True) role = db.Column(db.String(5), nullable=False) categories = db.relationship('Category', backref='category_owner', lazy='dynamic') transactions = db.relationship('Transaction', backref='transaction_owner', lazy='dynamic') balance = db.relationship('Balance', backref='balance_owner', uselist=False) def __repr__(self): return f"<User: name = {self.name}, id = {self.id}>" 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) @property def is_admin(self): return self.role == 'ADMIN'
class Cash_desk(db.Model): id = db.Column(db.Integer, primary_key=True) shop_id = db.Column(db.Integer, db.ForeignKey('shop.id'), nullable=False) fn = db.Column(db.String(16), unique=True, index=True) def __repr__(self): return '<Cash desk {} ({})>'.format(self.fn, self.shop.query.first())
class Table(db.Model): id = db.Column(db.Integer, primary_key=True) floor = db.Column(db.Integer, index=True) room = db.Column(db.Integer, index=True) def __repr__(self): return f'Table located on {self.floor} floor in room {self.room}'
class CheckboxState(db.Model): id = db.Column(db.Integer, primary_key=True) press_time = db.Column(db.DateTime, default=datetime.now(), nullable=False) bool_state = db.Column(db.Boolean) def __repr__(self): return f"{self.bool_state} - {self.press_time}"
class User( db.Model, UserMixin ): # Множественное наследование класса, берет и из db.Model и из UserMixin id = db.Column(db.Integer, primary_key=True) username = db.Column( db.String(64), index=True, unique=True ) # Те колонки по которым буем часто искать помечаем unique=True - будет быстрее password = db.Column(db.String(128)) role = db.Column(db.String(10), index=True) email = db.Column(db.String(50)) def set_password( self, password): # Заменяет пароль на хеш пароля перед записью в БД self.password = generate_password_hash(password) def check_password( self, password ): # Сверяем хеш из базы с хешем получиным от введенного пароля. Получим Тру или Фолс. return check_password_hash(self.password, password) @property # Декоратор. Помогает методу вести себя как атрибут def is_admin(self): # можно вызывать без скобочек return self.role == 'admin' def __repr__(self): return '<User name: {}, id: {}>'.format( self.username, self.id) # Что бы выводить имя пользователя в формате
class Account(db.Model): """Модель таблицы привязанных аккаунтов Steam. Хранит идентификационный номер профиля в БД, идентификационный номер профиля на сервисах Steam, логин профиля, логин-токен для входа без пароля, sentry-файл для входа без 2FA-кода, ссылку на аватар профиля, никнейм профиля, баланс кошелька, валюту кошелька и идентификационный номер пользователя, которому принадлежит профиль. """ __tablename__ = "accounts" account_id = db.Column(db.Integer, primary_key=True) steam_id = db.Column(db.BigInteger, index=True) username = db.Column(db.String, index=True, nullable=False) login_key = db.Column(db.String, unique=True) sentry = db.Column(db.LargeBinary) avatar_url = db.Column(db.String) nickname = db.Column(db.String) wallet_balance = db.Column(db.Integer) currency = db.Column(db.String(3)) user_id = db.Column(db.Integer, db.ForeignKey('users.user_id')) items = relationship("Item", cascade="all,delete", backref='accounts', lazy="dynamic") def __repr__(self): """Определяем формат вывода объекта класса Account.""" return f"Account {self.username}."
class User(db.Model, UserMixin ): #множественное наследование от классов db.Model и UserMixin id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(50), index=True, unique=True) password = db.Column(db.String(100)) role = db.Column(db.String(10), index=True) email = db.Column(db.String(50)) def set_password( self, password ): # преобразовать пароль пользователя в хеш и сохранить в БД в таком виде self.password = generate_password_hash(password) def check_password( self, password ): # сравнение хешей пароля из БД и введенного пользователем return check_password_hash(self.password, password) @property # декоратор, позволяющий методу вести себя как атрибут def is_admin(self): return self.role == 'admin' # проверить атрибут role объекта класса User на соответствие админу def __repr__(self): return '<User {}>'.format( self.username ) # при вызове функции возврат строки с именем пользователя, а не объекта
class User(db.Model, UserMixin): """ Database Model for Users """ id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(50), index=True, unique=True) password = db.Column(db.String(128)) role = db.Column(db.String(10), index=True) email = db.Column(db.String(50), unique=True) def set_password(self, password): """ Sets password for each user and generates password hash via werkzeug. \n Hash is saved to `password` class attribute. """ self.password = generate_password_hash(password) def check_password(self, password): """ Checks provided password with hash in database. \n Returns True or False """ return check_password_hash(self.password, password) @property def is_admin(self): return self.role == "admin" def __repr__(self): return f"<User name: {self.username}, id: {self.id}>"
class StatusCase(db.Model): __tablename__ = "status_case" id = db.Column(db.Integer, primary_key=True) description = db.Column(db.String, nullable=False) def __repr__(self): return f'Status case: {self.id}, {self.description}>'
class Lesson(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer) word_id = db.Column(db.Integer) def __repr__(self): return f"{self.original_word}: {self.translatted_word}: id={self.id}"
class TypeRealty(db.Model): __tablename__ = "type_realty" id = db.Column(db.Integer, primary_key=True) description = db.Column(db.String, nullable=False) def __repr__(self): return f'Type realty: {self.id}, {self.description}>'
class AirportId(db.Model): id = db.Column(db.Integer, primary_key=True) city = db.Column(db.String, unique=True) airport_id = db.Column(db.String, unique=True) def __repr__(self): return f"Airport id = {self.airport_id}"
class Status(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, nullable=False) task = db.Column(db.Integer, db.ForeignKey("task.id")) def __repr__(self): return f"<Status {self.name}>"
class Major(db.Model): id = db.Column(db.Integer, primary_key=True) major_code = db.Column(db.String(12), index=True, nullable=False) major_name = db.Column(db.String(255), nullable=False) def __repr__(self): return '<Направление {} {}>'.format(self.major_code, self.major_name)
class ChatMessages(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(256)) msg = db.Column(db.Text) def __repr__(self): return '<User %r>' % self.username
class TypeApplicant(db.Model): __tablename__ = "type_applicant" id = db.Column(db.Integer, primary_key=True) description = db.Column(db.String, nullable=False) def __repr__(self): return f'<Type applicant: {self.id}, {self.description}>'
class Event(db.Model): __tablename__ = "events" id = db.Column(db.Integer, primary_key=True) date = db.Column(db.String, nullable=False) time = db.Column(db.String, nullable=True) comment = db.Column(db.String, nullable=True) number_case = db.Column(db.String, db.ForeignKey('case.number_case'), index=True) case = relationship('Case', backref='events') @property def fdate(self): return datetime.strptime(self.date, '%Y-%m-%d').strftime('%d.%m.%Y') @property def ftime(self): if self.time is None: return '' return self.time @property def fcomment(self): if self.comment is None: return '' return self.comment def __repr__(self): return f'<Event: {self.date} for case {self.number_case}>'
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) text = db.Column(db.Text) timestamp = db.Column(db.DateTime, index=True, default=datetime.now) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) def __repr__(self): return '<Post {}'.format(self.body)
class InsurancePolicy(db.Model): id = db.Column(db.Integer, primary_key=True) series = db.Column(db.String) number = db.Column(db.Integer) date_of_issue = db.Column(db.Date) def __repr__(self): return f'<Policy {self.id} {self.series} {self.number}>'
class Favourite(db.Model): __tablename__ = "favourite_vacancies" id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) vacancy_id = db.Column(db.Integer, db.ForeignKey('vacancies.id'), nullable=False)
class Car(db.Model): id = db.Column(db.Integer, primary_key=True) plate = db.Column(db.String(9), unique=True) description = db.Column(db.String(255)) waybills = db.relationship('Waybill', backref='car', lazy='dynamic') def __repr__(self): return '<Машина {}>'.format(self.plate)
class Settings(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(50)) name = db.Column(db.String(50)) value = db.Column(db.String(50)) def __repr__(self): return '<{} = {}>'.format(self.name, self.value)
class Tasks(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id', ondelete='CASCADE'), index=True) title = db.Column(db.String, nullable=False) text = db.Column(db.Text, nullable=True) def __repr__(self): return F'<Tasks {self.title} {self.text}>'
class People(db.Model): id = db.Column(db.Integer, primary_key=True) first_name = db.Column(db.String(80)) patronymic = db.Column(db.String(80)) last_name = db.Column(db.String(80)) birth_date = db.Column(db.Date) def __repr__(self): return f'People {self.id} {self.last_name} {self.first_name} {self.patronymic} {self.birth_date}'
class Categories(db.Model): __tablename__ = "categories" id = db.Column(db.Integer, primary_key=True) description = db.Column(db.String, nullable=True) description_lite = db.Column(db.String, nullable=True) type_realty = db.Column(db.String, db.ForeignKey('type_realty.id')) def __repr__(self): return f'Category: {self.id}, {self.description}>'
class Shop(db.Model): id = db.Column(db.Integer, primary_key=True) inn = db.Column(db.String(20)) name = db.Column(db.String(255), unique=True, nullable=False) address = db.Column(db.String(255)) cash_desks = relationship('Cash_desk', backref='shop', lazy='dynamic') def __repr__(self): return '<Shop {}>'.format(self.name)
class Pen_name(db.Model): id = db.Column(db.Integer, primary_key=True) product_id = db.Column(db.Integer, db.ForeignKey('product.id'), nullable=False) name = db.Column(db.String(255), index=True, unique=True, nullable=False) def __repr__(self): return '<Pen name {}>'.format(self.name)
class News(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String, nullable=False) url = db.Column(db.String, unique=True, nullable=False) published = db.Column(db.DateTime, nullable=False) text = db.Column(db.Text, nullable=True) def __repr__(self): return '<News {} {}>'.format(self.title, self.url)
class News(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String, nullable=False) url = db.Column(db.String, unique=True, nullable=False) date = db.Column(db.Date, nullable=False) text = db.Column(db.String, nullable=True) def __repr__(self): return f'News {self.title} {self.url}'