Beispiel #1
0
class Person(db.Model):
    cpf = db.Column(db.String(100),
                    primary_key=True,
                    unique=True,
                    nullable=False)
    nome = db.Column(db.String(100), unique=False, nullable=False)
    endereco = db.relationship('Address', uselist=False, backref='person')
    lista_dividas = db.relationship('Debt', backref='person')

    @property
    def serialize(self):
        return {
            'cpf':
            self.cpf,
            'nome':
            self.nome,
            'endereco': {
                'rua': self.endereco.rua,
                'numero': self.endereco.numero,
                'cidade': self.endereco.cidade,
                'estado': self.endereco.estado
            },
            'lista_dividas': [{
                'tipo': divida.tipo,
                'valor': divida.valor
            } for divida in self.lista_dividas]
        }
Beispiel #2
0
class Store(db.Model):

    __tablename__ = 'stores'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))
    items = db.relationship('Item', lazy='dynamic')

    def __init__(self, name):
        self.name = name

    @classmethod
    def get_by_name(cls, name: str) -> Dict:
        return Store.query.filter_by(name=name).first()

    def error(self, msg: str, code: int) -> Dict:
        return {'error': msg}, code

    def as_json(self) -> Dict:
        return {
            'name': self.name,
            'items': [item.as_json() for item in self.items.all()]
        }

    def save(self) -> None:
        db.session.add(self)
        db.session.commit()

    def delete(self) -> None:
        db.session.delete(self)
        db.session.commit()
Beispiel #3
0
class DisciplinaModel(db.Model):
    __tablename__ = 'disciplinas'

    id = db.Column(db.Integer, primary_key=True)
    nome = db.Column(db.String(80))

    topicos = db.relationship('TopicoModel', lazy="dynamic")

    def __init__(self, nome):
        self.nome = nome

    def json(self):
        return {
            'id': self.id,
            'nome': self.nome,
            'topicos': [topico.json() for topico in self.topicos.all()]
        }

    @classmethod
    def buscar_por_nome(cls, nome):
        return cls.query.filter_by(nome=nome).first()

    @classmethod
    def buscar_por_id(cls, id):
        return cls.query.filter_by(id=id).first()

    def salvar_no_banco(self):
        db.session.add(self)
        db.session.commit()

    def remover_no_banco(self):
        db.session.delete(self)
        db.session.commit()
Beispiel #4
0
class VocabularyTerm(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    english = db.Column(db.VARCHAR(255), nullable=False)
    french = db.Column(db.ARRAY(db.VARCHAR(255),
                                dimensions=1,
                                zero_indexes=True),
                       nullable=False,
                       default=[])
    antonym = db.Column(db.ARRAY(db.VARCHAR(255),
                                 dimensions=1,
                                 zero_indexes=True),
                        nullable=False,
                        default=True)
    category_id = db.Column(db.Integer,
                            db.ForeignKey('vocabulary_category.id'),
                            nullable=False)
    category = db.relationship('VocabularyCategory')

    def __init__(self, english, french, antonym, category):
        self.english = english
        self.french = french
        self.antonym = antonym
        self.category = category

    def __repr__(self):
        return f'<VocabTerm {self.english}>'
Beispiel #5
0
class RelacionamentoModel(db.Model):

    __tablename__ = 'relacionamentotopicos'

    id = db.Column(db.Integer, primary_key=True)
    nome = db.Column(db.String(150))
    topico1_id = db.Column(db.Integer, db.ForeignKey('topicos.id'))
    topico2_id = db.Column(db.Integer, db.ForeignKey('topicos.id'))

    topico1 = db.relationship(
        "TopicoModel",
        primaryjoin=TopicoModel.id == topico1_id,
    )
    topico2 = db.relationship(
        "TopicoModel",
        primaryjoin=TopicoModel.id == topico2_id,
    )

    def __init__(self, nome, topico1_id, topico2_id):
        self.nome = nome
        self.topico1_id = topico1_id
        self.topico2_id = topico2_id

    def json(self):
        return {
            'id': self.id,
            'nome': self.nome,
            'id_topico1': self.topico1_id,
            'id_topico2': self.topico2_id
        }

    @classmethod
    def buscar_por_nome(cls, nome):
        return cls.query.filter_by(nome=nome).first()

    @classmethod
    def buscar_por_id(cls, id):
        return cls.query.filter_by(id=id).first()

    def salvar_no_banco(self):
        db.session.add(self)
        db.session.commit()

    def remover_no_banco(self):
        db.session.delete(self)
        db.session.commit()
class VocabularyCategory(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.VARCHAR(255), nullable=False)
    terms = db.relationship("VocabularyTerm", backref="vocabulary_category", lazy='dynamic')

    def __init__(self, name):
        self.name = name

    def __repr__(self):
        return f'<Category {self.name}>'
class Employee(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), nullable=False)
    email = db.Column(db.String(255), nullable=False)
    contact = db.Column(db.String(10), nullable=False)
    addresses = db.relationship('Address',
                                backref=db.backref('employee', uselist=True),
                                cascade='all, delete-orphan',
                                lazy=True,
                                uselist=True)
Beispiel #8
0
class Person(db.Model):
    cpf = db.Column(db.String(100),
                    primary_key=True,
                    unique=True,
                    nullable=False)
    nome = db.Column(db.String(100), unique=False, nullable=False)
    endereco = db.relationship('Address', uselist=False, backref='person')
    fonte_renda = db.relationship('Income', backref='person')
    lista_bens = db.relationship('Patrimony', backref='person')

    @property
    def score(self):
        return calc_score(self.fonte_renda, self.lista_bens)

    @property
    def serialize(self):
        return {
            'cpf':
            self.cpf,
            'nome':
            self.nome,
            'score':
            self.score,
            'endereco': {
                'rua': self.endereco.rua,
                'numero': self.endereco.numero,
                'cidade': self.endereco.cidade,
                'estado': self.endereco.estado
            },
            'fonte_renda': [{
                'tipo': divida.tipo,
                'valor': divida.valor
            } for divida in self.fonte_renda],
            'lista_bens': [{
                'tipo': patrimonio.tipo,
                'valor': patrimonio.valor
            } for patrimonio in self.lista_bens]
        }
Beispiel #9
0
class StoreModel(db.Model):
    __tablename__ = 'stores'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(20), unique=True)
    created_timestamp = db.Column(db.Float)
    modify_timestamp = db.Column(db.Float)
    items = db.relationship('ItemModel', lazy='dynamic')

    def __init__(self, name: str, created_timestamp: float,
                 modify_timestamp: float):
        self.name = name
        self.created_timestamp = created_timestamp
        self.modify_timestamp = modify_timestamp

    def json(self) -> StoreJSON:
        return {
            self.id: [{
                'name': self.name,
                'created_at': convert_timestamp(self.created_timestamp),
                'last_modified': convert_timestamp(self.modify_timestamp),
                'items': [item.json() for item in self.items.all()]
            }]
        }

    @classmethod
    def find_by_name(cls, name: str) -> "StoreModel":
        return cls.query.filter_by(name=name).first()

    @classmethod
    def find_by_id(cls, _id: str) -> "StoreModel":
        return cls.query.filter_by(id=_id).first()

    def save_to_db(self) -> None:
        db.session.add(self)
        db.session.commit()

    def delete_from_db(self) -> None:
        db.session.delete(self)
        db.session.commit()
Beispiel #10
0
class TopicoModel(db.Model):

    __tablename__ = 'topicos'

    id = db.Column(db.Integer, primary_key=True)
    nome = db.Column(db.String(80))
    id_disciplinas = db.Column(db.Integer, db.ForeignKey('disciplinas.id'))

    disciplina = db.relationship('DisciplinaModel')

    def __init__(self, nome, id_disciplinas):
        self.nome = nome
        self.id_disciplinas = id_disciplinas

    def json(self):
        return {
            'id': self.id,
            'nome': self.nome,
            'id_disciplina': self.id_disciplinas
        }

    @classmethod
    def buscar_por_nome(cls, nome):
        return cls.query.filter_by(nome=nome).first()

    @classmethod
    def buscar_por_id(cls, id):
        return cls.query.filter_by(id=id).first()

    def salvar_no_banco(self):
        db.session.add(self)
        db.session.commit()

    def remover_no_banco(self):
        db.session.delete(self)
        db.session.commit()
Beispiel #11
0
class Item(db.Model):
    """
    Creates new item objects so create new items for use
    throughout the API
    """

    __tablename__ = 'items'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))
    price = db.Column(db.Float(precision=2))
    store_id = db.Column(db.Integer, db.ForeignKey('stores.id'))
    store = db.relationship('Store')

    def __init__(self, name: str, price: float, store_id: int) -> None:
        self.name = name
        self.price = price
        self.store_id = store_id

    @classmethod
    def get_by_name(cls, name: str) -> Dict:
        return cls.query.filter_by(name=name).first()

    def as_json(self) -> Dict:
        return {'name': self.name, 'price': self.price}

    def get_all(self) -> Dict:
        return {'items': [self.as_json() for item in Item.query.all()]}

    def save(self) -> None:
        db.session.add(self)
        db.session.commit()

    def delete(self) -> None:
        db.session.delete(self)
        db.session.commit()
Beispiel #12
0
class ItemModel(db.Model):
    __tablename__ = 'items'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    item_name = db.Column(db.String(20))
    price = db.Column(db.Float(precision=2))
    created_timestamp = db.Column(db.Float)
    modify_timestamp = db.Column(db.Float)
    store_id = db.Column(db.Integer, db.ForeignKey('stores.id'))
    store = db.relationship('StoreModel')
    user_id = db.Column(db.Integer)

    def __init__(self, item_name: str, price: float, modify_timestamp: float):
        self.item_name = item_name
        self.price = price
        self.modify_timestamp = modify_timestamp

    def json(self) -> ItemJSON:
        return {
            self.id: [{
                'item_name': self.item_name,
                'price': self.price,
                'store': self.store_id,
                'last_modified': convert_timestamp(self.modify_timestamp)
            }]
        }

    def all_items_json(self) -> ALLItemJSON:
        return {
            self.id: [{
                'item_name': self.item_name,
                'price': self.price,
                'store': self.store_id,
                'hold_by_user': self.user_id,
                'last_modified': convert_timestamp(self.modify_timestamp)
            }]
        }

    @classmethod
    def find_by_name(cls, item_name: str) -> "ItemModel":
        return cls.query.filter_by(item_name=item_name).first()

    @classmethod
    def find_by_id(cls, _id: int) -> "ItemModel":
        return cls.query.filter_by(id=_id).first()

    @classmethod
    def find_cart(cls, _id: int) -> "ItemModel":
        return cls.query.filter_by(user_id=_id).all()

    @classmethod
    def find_stock(cls) -> "ItemModel":
        return cls.query.filter(cls.store_id != None,
                                cls.user_id == None).all()

    @classmethod
    def update_user_id(cls, _id: int) -> "ItemModel":
        return cls.query.filter_by(user_id=_id).update(dict(user_id=None))

        return item.all()

    @classmethod
    def sum_cart_by_user_id(cls, _id: int) -> "ItemModel":
        tot = cls.query.with_entities(func.sum(ItemModel.price)). \
            filter_by(user_id=_id).all()
        print(tot[0][0])
        if tot[0][0] is None:
            return 0
        return tot[0][0]

    @classmethod
    def count_cart_by_user_id(cls, _id: int) -> "ItemModel":
        tot = cls.query.with_entities(func.count(ItemModel.price)). \
            filter_by(user_id=_id).all()
        if tot[0][0] is None:
            return 0
        return tot[0][0]

    def save_to_db(self) -> None:
        db.session.add(self)
        db.session.commit()

    def delete_from_db(self) -> None:
        db.session.delete(self)
        db.session.commit()
Beispiel #13
0
class Teacher(db.Model):
    __bind_key__ = DB_STAFF
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(10))
    students = db.relationship('Student', secondary = student_teacher_relationship, back_populates = 'teachers')