Esempio n. 1
0
class Addproduct(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), nullable=False)
    price = db.Column(db.Numeric(10, 2), nullable=False)
    discount = db.Column(db.Integer, default=0)
    colors = db.Column(db.Text(20), nullable=False, default='none')
    desc = db.Column(db.Text(200), nullable=False)
    model = db.Column(db.String(80), nullable=False)
    watt = db.Column(db.Integer, nullable=False, default=0)
    cutout = db.Column(db.String(80), nullable=False, default="XX*XX")
    outer = db.Column(db.String(80), nullable=False, default="00*00")
    height = db.Column(db.String(80), nullable=False, default=1)
    stock = db.Column(db.Integer, nullable=False, default="Yes")
    pub_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    category_id = db.Column(db.Integer,
                            db.ForeignKey('category.id'),
                            nullable=False)
    category = db.relationship('Category',
                               backref=db.backref('categories', lazy=True))
    image_1 = db.Column(db.String(150), nullable=False, default='image.jpg')
    image_2 = db.Column(db.String(150), nullable=False, default='image.jpg')
    image_3 = db.Column(db.String(150), nullable=False, default='image.jpg')

    def __repr__(self):
        return '<Addproduct %r>' % self.name
Esempio n. 2
0
class Salt(BaseMixin, db.Model, ReprMixin):
    name = db.Column(db.String(127), nullable=False, index=True)
    prescription_required = db.Column(db.Boolean(), default=True)
    usage = db.Column(db.Text(), nullable=True)
    working = db.Column(db.Text(), nullable=True)
    side_effects = db.Column(db.Text(), nullable=True)

    store_id = db.Column(db.ForeignKey('store.id', ondelete='CASCADE'), index=True, nullable=False)

    products = db.relationship('Product', back_populates='salts', secondary='product_salt')
    store = db.relationship('Store', foreign_keys=[store_id], uselist=False)

    UniqueConstraint(name, store_id)
Esempio n. 3
0
class CheckInAnswer(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    check_in_question_id = db.Column(db.Integer,
                                     db.ForeignKey('check_in_question.id'),
                                     index=True,
                                     nullable=False)
    check_in_question = db.relationship('CheckInQuestion',
                                        backref='check_in_answers')
    user_id = db.Column(db.Integer,
                        db.ForeignKey('user.id'),
                        index=True,
                        nullable=False)
    user = db.relationship('User', backref='check_in_answers')
    text = db.Column(db.Text(), nullable=False)
    is_destroyed = db.Column(db.Boolean(), default=False)
    created_at = db.Column(db.DateTime, default=datetime.datetime.utcnow)

    def __init__(self,
                 user,
                 text,
                 check_in_question=None,
                 check_in_question_id=None):
        if check_in_question_id:
            self.check_in_question_id = check_in_question_id
        else:
            self.check_in_question = check_in_question

        self.user = user
        self.text = text

    def __repr__(self):
        return '<CheckInAnswer id={}, check_in_question_id={}, user_id={}, is_destroyed={}, created_at={}>'.format(
            self.id, self.check_in_question_id, self.user_id,
            self.is_destroyed, self.created_at)
Esempio n. 4
0
class Tweet(SearchableMixin, db.Model):
    __searchable__ = ['textbody']

    id = db.Column(db.Integer, primary_key=True)
    identifier = db.Column(db.String(32), nullable=False)
    textbody_source = db.Column(db.String(500), nullable=False)
    textbody_markdown = db.Column(db.Text(), nullable=False)
    userid = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    comments = db.relationship('Comment', backref='tweet', lazy="dynamic")
    created_utc = db.Column(db.DateTime,
                            nullable=False,
                            default=datetime.utcnow)
    edited_utc = db.Column(db.DateTime,
                           nullable=False,
                           default=datetime.utcnow)
    stickied = db.Column(db.Boolean, default=False)
    is_banned = db.Column(db.Boolean, default=False)
    is_nsfw = db.Column(db.Boolean, default=False)
    is_edited = db.Column(db.Boolean, default=False)
    comment_path_counter = db.Column(db.Integer, default=1, autoincrement=True)

    likes = db.relationship('Like', backref='tweet', lazy='dynamic')

    @classmethod
    def get_identifier(cls):
        while True:
            ident = secrets.token_hex(nbytes=16)
            if not cls.query.filter_by(identifier=ident).first():
                return ident

    def __repr__(self):
        return '<Tweet {}>'.format(self.id)
Esempio n. 5
0
class Rider(BaseMixin, ReprMixin, UserMixin, db.Model):
    __repr_fields__ = ['id', 'first_name']
    email = db.Column(db.String(127), unique=True, nullable=True, index=True)
    password = db.Column(db.String(255), nullable=True)
    first_name = db.Column(db.String(55), nullable=False)
    last_name = db.Column(db.String(55), nullable=True)
    mobile_number = db.Column(db.String(20),
                              unique=True,
                              nullable=False,
                              index=True)
    company_name = db.Column(db.String(55), nullable=True)
    counter = db.Column(db.Integer, nullable=True, default=0)

    picture = db.Column(db.Text(), nullable=True, index=True)
    active = db.Column(db.Boolean(), default=False)
    confirmed_at = db.Column(db.DateTime(), default=datetime.utcnow)
    last_login_at = db.Column(db.DateTime())
    current_login_at = db.Column(db.DateTime())

    last_login_ip = db.Column(db.String(45))
    current_login_ip = db.Column(db.String(45))
    login_count = db.Column(db.Integer)

    device_limit = db.Column(db.Integer, nullable=True, default=0)
    devices = db.relationship('Device',
                              back_populates='riders',
                              secondary='rider_device')
Esempio n. 6
0
class Product(BaseMixin, db.Model, ReprMixin):
    name = db.Column(db.String(127), unique=True, nullable=False, index=True)

    description = db.Column(db.JSON(), nullable=True)
    sub_description = db.Column(db.Text(), nullable=True)
    is_disabled = db.Column(db.Boolean(), default=False)
    url = db.Column(db.Text())

    drug_schedule = db.Column(db.String(55))
    drug_type = db.Column(db.String(55))
    dosage = db.Column(db.String(55))
    formulation_types = db.Column(db.String(55))

    price = db.Column(NUMERIC(8, 2), default=0)

    prescription_required = db.Column(db.Boolean(), default=False)

    therapeutic_name = db.Column(db.String(255), nullable=True)

    is_loose = db.Column(db.Boolean(), default=False)
    barcode = db.Column(db.String(13), nullable=True, unique=True)

    brand_id = db.Column(db.ForeignKey('brand.id'), index=True, nullable=False)

    taxes = db.relationship('Tax', back_populates='products', secondary='product_tax')
    tags = db.relationship('Tag', back_populates='products', secondary='product_tag')
    brand = db.relationship('Brand', foreign_keys=[brand_id], uselist=False, back_populates='products')

    stocks = db.relationship('Stock', uselist=True, cascade="all, delete-orphan", lazy='dynamic')
    # distributors = db.relationship('Distributor', back_populates='products', secondary='product_distributor')
    combos = db.relationship('Combo', back_populates='products', secondary='combo_product', lazy='dynamic')
    salts = db.relationship('Salt', back_populates='products', secondary='product_salt', lazy='dynamic')
    product_salts = db.relationship('ProductSalt', lazy='dynamic', back_populates='product')

    @hybrid_property
    def short_code(self):
        return re.sub(r'[AEIOU ]', '', self.name, flags=re.IGNORECASE)[:5]

    @hybrid_property
    def brand_name(self):
        return self.brand.name

    @brand_name.expression
    def brand_name(self):
        return select([Brand.name]).where(Brand.id == self.brand_id).as_scalar()
Esempio n. 7
0
class Comment(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    comment = db.Column(db.Text(2000))
    author = db.Column(db.String(150))
    article = db.Column(db.ForeignKey('article.id'))
    created_at = db.Column(db.DateTime(), default=datetime.utcnow)

    def __repr__(self):
        return f'{self.author}{self.comment}'
Esempio n. 8
0
class Chat(db.Model, BaseMixin):
    sender_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    receiver_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    message = db.Column(db.Text(), nullable=False, default='')
    is_read = db.Column(db.Boolean(False))
    read_on = db.Column(db.TIMESTAMP, default=None)

    sender = db.relationship('User', lazy='subquery', foreign_keys=[sender_id])
    receiver = db.relationship('User', lazy='subquery', foreign_keys=[receiver_id])
Esempio n. 9
0
class Comment(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    messages = db.Column(db.Text())
    created_at = db.Column(db.DateTime, default=datetime.utcnow())
    edited_at = db.Column(db.DateTime)
    user_id = db.Column(db.Integer, db.ForeignKey("user.id"))
    answer_id = db.Column(db.Integer, db.ForeignKey("answer.id"))
    flags = db.relationship("CommentFlag", backref="comment", lazy="dynamic")

    def __repr__(self):
        return "Comment {}".format(self.id)
Esempio n. 10
0
class Course(db.Model):
    """
    This class defines the course table
    """

    __tablename__ = "course"

    cid = db.Column(db.Integer, primary_key=True, nullable=False, unique=True)
    name = db.Column(db.String(256), nullable=False)
    description = db.Column(db.Text(), nullable=True)
    instructor = db.Column(db.String(256), nullable=False)
    position = db.Column(db.Integer)

    quality = db.relationship("Quality", backref="course", lazy=True)
    difficulties = db.relationship("Difficulty", backref="course", lazy=True)
    time_spent = db.relationship("TimeSpent", backref="course", lazy=True)
    prereqs = db.relationship("Prereq", backref="course", lazy=True)

    def __init__(self, cid, name, instructor, position, description=""):
        self.cid = cid
        self.description = description
        self.instructor = instructor
        self.name = name
        self.position = position

    def update(self, name, instructor, position, description):
        self.name = name
        self.instructor = instructor
        self.description = description
        self.position = position
        self.save()

    def save(self):
        """
        Save course to database
        :return:
        """
        db.session.add(self)
        db.session.commit()

    def delete(self):
        """
        Delete a course from db
        :return:
        """
        relationships = [
            self.prereqs, self.quality, self.difficulties, self.time_spent
        ]
        for rel in relationships:
            for i in rel:
                i.delete()

        db.session.delete(self)
        db.session.commit()
Esempio n. 11
0
class Store(db.Model):
    __tablename__ = "stores"
    id = db.Column(db.Integer, primary_key=True, nullable=False)
    name = db.Column(db.Text(), nullable=False)
    postcode = db.Column(db.Text(), nullable=False)
    longitude = db.Column(db.Float)
    latitude = db.Column(db.Float)
    geo = db.Column(Geometry(geometry_type="POINT"))

    __table_args__ = (db.UniqueConstraint('name',
                                          'postcode',
                                          name='_name_postcode_uc'), )

    def __repr__(self):
        return "<City {name} ({lat}, {lon})>".format(name=self.name,
                                                     lat=self.latitude,
                                                     lon=self.longitude)

    def update_geometry(self):
        point = 'POINT({} {})'.format(self.longitude, self.latitude)
        self.geo = point
Esempio n. 12
0
class Question(db.Model, BaseMixin):

    question = db.Column(db.Text(), nullable=False)
    question_type = db.Column(db.Integer,
                              db.ForeignKey('question_type.id'),
                              nullable=False)
    task_id = db.Column(db.Integer, db.ForeignKey('task.id'), nullable=False)

    task = db.relationship('Task', backref='questions')

    @hybrid_property
    def choices(self):
        return self.task.choices
Esempio n. 13
0
class Question(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(255))
    messages = db.Column(db.Text())
    created_at = db.Column(db.DateTime, default=datetime.utcnow())
    edited_at = db.Column(db.DateTime)
    user_id = db.Column(db.Integer, db.ForeignKey("user.id"))
    is_solved = db.Column(db.Boolean, default=False)
    answers = db.relationship("Answer", backref="question", lazy="dynamic")
    flags = db.relationship("QuestionFlag", backref="question", lazy="dynamic")
    votes = db.relationship("QuestionVote", backref="question", lazy="dynamic")

    def __repr__(self):
        return "Question {}".format(self.title)
Esempio n. 14
0
class UserProfile(BaseMixin, db.Model):
    first_name = db.Column(db.String(255))
    last_name = db.Column(db.String(255))
    gender = db.Column(db.Enum('male', 'female', 'na', name='gender'),
                       default='na')
    dob = db.Column(db.DateTime,
                    default=db.func.current_timestamp(),
                    nullable=True)
    profile_picture = db.Column(db.Text(), nullable=True)

    user_id = db.Column(db.Integer,
                        db.ForeignKey('user.id', ondelete='CASCADE'),
                        unique=True)

    user = db.relationship('User',
                           back_populates="user_profile",
                           single_parent=True)
Esempio n. 15
0
class User(BaseMixin, ReprMixin, UserMixin, db.Model):
    __repr_fields__ = ['id', 'name']

    razor_pay_id = db.Column(db.String(20), nullable=True, unique=True)
    email = db.Column(db.String(127), unique=True, nullable=True, index=True)
    password = db.Column(db.String(255), nullable=True)
    first_name = db.Column(db.String(55), nullable=False)
    last_name = db.Column(db.String(55), nullable=True)
    mobile_number = db.Column(db.String(20),
                              unique=True,
                              nullable=False,
                              index=True)
    business_name = db.Column(db.String(55), nullable=True)

    picture = db.Column(db.Text(), nullable=True, index=True)
    active = db.Column(db.Boolean())
    confirmed_at = db.Column(db.DateTime())
    last_login_at = db.Column(db.DateTime())
    current_login_at = db.Column(db.DateTime())

    last_login_ip = db.Column(db.String(45))
    current_login_ip = db.Column(db.String(45))
    login_count = db.Column(db.Integer)

    roles = db.relationship('Role',
                            back_populates='users',
                            secondary='user_role')

    @hybrid_property
    def fixed_dues(self):
        from src.dues.models import Due
        return Due.query.with_entities(Due.amount)\
            .filter(Due.is_paid.isnot(True), Due.creator_id == current_user.id, Due.is_cancelled.isnot(True),
                    Due.transaction_type == 'fixed',
                    Due.customer_id == self.id).limit(1).scalar()

    @hybrid_property
    def subscriptions(self):
        from src.dues.models import Due
        return Due.query.with_entities(func.count(Due.id)) \
            .filter(Due.creator_id == current_user.id, Due.is_cancelled.isnot(True),
                    Due.transaction_type == 'subscription',
                    Due.customer_id == self.id).limit(1).scalar()
Esempio n. 16
0
class Message(db.Model):
    __tablename__ = "messages"

    id = db.Column(db.Integer, primary_key=True)
    body = db.Column(db.Text())
    author_id = db.Column(db.Integer, db.ForeignKey("users.id"))
    created_on = db.Column(db.DateTime, default=datetime.utcnow)
    chat_id = db.Column(db.Integer, db.ForeignKey("chats.id"), nullable=False)

    def __repr__(self):
        return "<Message {}>".format(self.id)

    @classmethod
    def find_by_id(cls, id):
        """
        Get a class instance given its id

        :param id: int
        :return: Class instance
        """
        return cls.query.get(int(id))

    def save(self):
        """
        Save a model instance.

        :return: Model instance
        """
        db.session.add(self)
        db.session.commit()

        return self

    def delete(self):
        """
        Delete a model instance.

        :return: db.session.commit()'s result
        """
        db.session.delete(self)
        return db.session.commit()
Esempio n. 17
0
class CheckInQuestion(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    check_in_id = db.Column(db.Integer,
                            db.ForeignKey('check_in.id'),
                            index=True,
                            nullable=False)
    check_in = db.relationship('CheckIn', backref='check_in_questions')
    text = db.Column(db.Text(), nullable=False)
    order = db.Column(db.Integer)
    is_destroyed = db.Column(db.Boolean(), default=False)
    created_at = db.Column(db.DateTime, default=datetime.datetime.utcnow)

    def __init__(self, check_in, text, order):
        self.check_in = check_in
        self.text = text
        self.order = order

    def __repr__(self):
        return '<CheckInQuestion id={}, check_in_id={}, order={}, is_destroyed={}, created_at={}>'.format(
            self.id, self.check_in_id, self.order, self.is_destroyed,
            self.created_at)
Esempio n. 18
0
class Tweet(db.Model):
    __tablename__ = 'tweets'

    id = db.Column(db.Integer, primary_key=True)
    media_url = db.Column(db.String(200))
    tweet_date = db.Column(db.DateTime(), nullable=False,
                           default=dt.datetime.utcnow)
    twitter_id = db.Column(db.BigInteger, nullable=False, unique=True)
    handle = db.Column(db.String(15), nullable=False, unique=True)
    text = db.Column(db.Text(280), nullable=False)
    profile_user = db.Column(db.String(35), nullable=False, unique=True)
    name = db.Column(db.String(50), nullable=False)
    tweet_link = db.Column(db.String(65), nullable=False)
    timestamp = db.Column(db.DateTime,
                          nullable=False,
                          default=dt.datetime.utcnow)
    _type = db.Column(db.String(15), nullable=False, default="tweet")

    def __repr__(self):
        return (f"{self.handle} posted, "
                f"the {self.timestamp.strftime('%Y-%m-%d')} "
                f"at {self.timestamp.strftime('%H:%M:%s')}, the following:\n"
                f"{self.text}")
Esempio n. 19
0
class Product(db.Model, BaseMixin, ReprMixin):

    name = db.Column(db.String(55), unique=False, nullable=False)
    min_stock = db.Column(db.SmallInteger, nullable=False)
    auto_discount = db.Column(db.FLOAT(precision=2), default=0, nullable=False)
    description = db.Column(db.JSON, nullable=True)
    sub_description = db.Column(db.Text(), nullable=True)
    is_disabled = db.Column(db.Boolean(), default=False)

    retail_shop_id = db.Column(
        db.Integer, db.ForeignKey('retail_shop.id', ondelete='CASCADE'))
    distributor_id = db.Column(db.Integer, db.ForeignKey('distributor.id'))
    brand_id = db.Column(db.Integer, db.ForeignKey('brand.id'))

    retail_shop = db.relationship('RetailShop',
                                  foreign_keys=[retail_shop_id],
                                  uselist=False,
                                  back_populates='products')
    taxes = db.relationship('Tax',
                            back_populates='products',
                            secondary='product_tax')
    tags = db.relationship('Tag',
                           back_populates='products',
                           secondary='product_tag')
    brand = db.relationship('Brand',
                            foreign_keys=[brand_id],
                            uselist=False,
                            back_populates='products')

    stocks = db.relationship('Stock',
                             uselist=True,
                             cascade="all, delete-orphan",
                             lazy='dynamic')
    distributor = db.relationship('Distributor', back_populates='products')
    combos = db.relationship('Combo',
                             back_populates='products',
                             secondary='combo_product')
    salts = db.relationship('Salt',
                            back_populates='products',
                            secondary='product_salt')
    add_ons = db.relationship('AddOn',
                              back_populates='products',
                              secondary='product_add_on')

    @hybrid_property
    def available_stock(self):
        return self.stocks.filter(or_(Stock.is_sold == False, Stock.is_sold == None))\
            .with_entities(func.Sum(Stock.units_purchased)-func.Sum(Stock.units_sold)).scalar()

    @hybrid_property
    def available_stocks(self):
        return self.stocks.filter(
            or_(Stock.is_sold == False, Stock.is_sold == None)).all()

    @available_stock.expression
    def available_stock(cls):
        return select([func.Sum(Stock.units_purchased)-func.Sum(Stock.units_sold)])\
            .where(and_(or_(Stock.is_sold == False, Stock.is_sold == None), Stock.product_id == cls.id)).as_scalar()

    @hybrid_property
    def mrp(self):
        mrp = self.stocks.filter(or_(Stock.is_sold == False, Stock.is_sold == None))\
            .with_entities(Stock.selling_amount).order_by(Stock.id).first()
        return mrp[0] if mrp else 0

    @hybrid_property
    def similar_products(self):
        if len(self.salts):
            return [
                i[0] for i in Product.query.with_entities(Product.id).join(
                    ProductSalt, and_(ProductSalt.product_id == Product.id)).
                filter(ProductSalt.salt_id.in_(
                    [i.id for i in self.salts])).group_by(Product.id).having(
                        func.Count(func.Distinct(ProductSalt.salt_id)) == len(
                            self.salts)).all()
            ]
        return []
Esempio n. 20
0
class Entry(db.Model):
    __tablename__ = 'user_info'
    id = db.Column(db.Integer, primary_key=True)
    user_name = db.Column(db.Text(), nullable=False)
    password = db.Column(db.Text(), nullable=False)
Esempio n. 21
0
class Answer(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    messages = db.Column(db.Text())
Esempio n. 22
0
class Product(BaseMixin, db.Model, ReprMixin):

    name = db.Column(db.String(127), unique=False, nullable=False, index=True)
    min_stock = db.Column(db.SmallInteger, nullable=False)
    auto_discount = db.Column(db.FLOAT(precision=2), default=0, nullable=False)
    description = db.Column(db.JSON(), nullable=True)
    sub_description = db.Column(db.Text(), nullable=True)
    is_disabled = db.Column(db.Boolean(), default=False)
    default_quantity = db.Column(db.Float(precision=2), default=1)
    quantity_label = db.Column(db.Enum('KG', 'GM', 'MG', 'L', 'ML', 'TAB', 'SYRUP', 'OTH', 'TAB', 'ML', 'CAP', 'INJ',
                                       'BOTTLE', 'VAIL', 'KIT', 'STRIP', 'OTHER', 'PACK', 'SET', 'LTR', 'SACHET',
                                       'PILLS', 'SYRINGE', 'SYRUP', 'ROLL', name='varchar'),
                               default='OTH', nullable=True)
    is_loose = db.Column(db.Boolean(), default=False)
    barcode = db.Column(db.String(13), nullable=True)

    retail_shop_id = db.Column(UUID, db.ForeignKey('retail_shop.id', ondelete='CASCADE'), index=True, nullable=False)
    brand_id = db.Column(UUID, db.ForeignKey('brand.id'), index=True, nullable=False)

    retail_shop = db.relationship('RetailShop', foreign_keys=[retail_shop_id], uselist=False, back_populates='products')
    taxes = db.relationship('Tax', back_populates='products', secondary='product_tax')
    tags = db.relationship('Tag', back_populates='products', secondary='product_tag')
    brand = db.relationship('Brand', foreign_keys=[brand_id], uselist=False, back_populates='products')

    stocks = db.relationship('Stock', uselist=True, cascade="all, delete-orphan", lazy='dynamic')
    # distributors = db.relationship('Distributor', back_populates='products', secondary='product_distributor')
    combos = db.relationship('Combo', back_populates='products', secondary='combo_product')
    salts = db.relationship('Salt', back_populates='products', secondary='product_salt')
    add_ons = db.relationship('AddOn', back_populates='products', secondary='product_add_on')

    UniqueConstraint('barcode', 'retail_shop_id', 'bar_retail_un')

    @hybrid_property
    def available_stock(self):
        return self.stocks.filter(Stock.is_sold != True, Stock.expired == False)\
            .with_entities(func.coalesce(func.Sum(Stock.units_purchased), 0)-func.coalesce(func.Sum(Stock.units_sold),
                                                                                           0)).scalar()

    @hybrid_property
    def available_stocks(self):
        return self.stocks.filter(and_(or_(Stock.is_sold != True), Stock.expired == False)).all()

    @available_stock.expression
    def available_stock(cls):
        return select([func.coalesce(func.Sum(Stock.units_purchased), 0)-func.coalesce(func.Sum(Stock.units_sold), 0)])\
            .where(and_(or_(Stock.is_sold != True), Stock.product_id == cls.id)).as_scalar()

    @hybrid_property
    def mrp(self):
        mrp = self.stocks.filter(or_(Stock.is_sold != True))\
            .with_entities(Stock.selling_amount).order_by(Stock.id).first()
        return mrp[0] if mrp else 0

    @hybrid_property
    def similar_products(self):
        if len(self.salts):
            return [i[0] for i in Product.query.with_entities(Product.id)
                    .join(ProductSalt, and_(ProductSalt.product_id == Product.id))
                    .filter(ProductSalt.salt_id.in_([i.id for i in self.salts])).group_by(Product.id)
                    .having(func.Count(func.Distinct(ProductSalt.salt_id)) == len(self.salts)).all()]
        return []

    @hybrid_property
    def last_purchase_amount(self):
        return self.stocks.order_by(desc(Stock.purchase_date)).first().purchase_amount

    @hybrid_property
    def last_selling_amount(self):
        return self.stocks.order_by(desc(Stock.purchase_date)).first().selling_amount

    @hybrid_property
    def stock_required(self):
        return abs(self.min_stock - self.available_stock)

    @stock_required.expression
    def stock_required(self):
        return self.min_stock - self.available_stock

    @hybrid_property
    def is_short(self):
        return self.min_stock >= self.available_stock

    @hybrid_property
    def product_name(self):
        return self.name

    @hybrid_property
    def distributors(self):
        return self.brand.distributors.all()

    @hybrid_property
    def brand_name(self):
        return self.brand.name

    @brand_name.expression
    def brand_name(self):
        return select([Brand.name]).where(Brand.id == self.brand_id).as_scalar()
Esempio n. 23
0
class Question(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(255))
    messages = db.Column(db.Text())
    
class BlogPost(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(50))
    text = db.Column(db.Text())
    author_id = db.Column(db.Integer, db.ForeignKey('user.id'))
Esempio n. 25
0
class Temp_User(db.Model):
    __tablename__ = "temp_user"
    id = db.Column(db.Integer, primary_key=True)
    user_name = db.Column(db.Text(), nullable=False)
    auth_uuid = db.Column(db.Text(), nullable=False)
Esempio n. 26
0
class Registered_User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    user_name = db.Column(db.Text(), nullable=False)
    password = db.Column(db.Text(), nullable=False)