Example #1
0
class ProductItemReview(BaseModel):
    __table_args__ = {'extend_existing': True}
    __tablename__ = 'product_item_reviews'

    id = db.Column(db.BigInt(unsigned=True), primary_key=True, autoincrement=True)
    uuid = db.Column(db.String(32), unique=True)
    product_item_id = db.Column(db.BigInt(unsigned=True), db.ForeignKey('product_items.id'))
    product_id = db.Column(db.BigInt(unsigned=True), db.ForeignKey('products.id'))
    site_id = db.Column(db.BigInt(unsigned=True), db.ForeignKey('sites.id'))
    username = db.Column(db.String(255), nullable=True)
    title = db.Column(db.Text, nullable=True)
    attr = db.Column(db.String(255), nullable=True)
    rating = db.Column(db.Integer, default=0)
    color = db.Column(db.String(255), nullable=True)
    size = db.Column(db.String(255), nullable=True)
    helpers = db.Column(db.Integer, default=0)
    detail_link = db.Column(db.String(255), default='')
    content = db.Column(db.Text, default='')
    is_processed = db.Column(db.Integer, default=1)
    date = db.Column(db.Date, nullable=True)

    created_at = db.Column(db.DateTime, default=func.now())
    updated_at = db.Column(db.DateTime, default=func.now(), onupdate=func.now())

    product_item = relationship('ProductItem', back_populates="product_item_reviews")
Example #2
0
class ProductItem(BaseModel):
    __table_args__ = {'extend_existing': True}
    __tablename__ = "product_items"

    id = db.Column(db.BigInt(unsigned=True), primary_key=True, autoincrement=True)
    product_id = db.Column(db.BigInt(unsigned=True), db.ForeignKey('products.id'))
    site_id = db.Column(db.BigInt(unsigned=True),  db.ForeignKey('sites.id'))
    rating = db.Column(db.Float, default=0.0)
    reviews = db.Column(db.Integer, default=0)
    rating_change = db.Column(db.Float, default=0.0)
    reviews_change = db.Column(db.Integer, default=0)
    price = db.Column(db.String(255), default='')
    review_date = db.Column(db.Date, nullable=True)
    available_date = db.Column(db.Date, nullable=True)
    questions = db.Column(db.Integer, default=0)
    answers = db.Column(db.Integer, default=0)
    classify_rank = db.Column(db.JSON, nullable=True)
    feature_rate = db.Column(db.JSON, nullable=True)
    crawl_date = db.Column(db.Date, nullable=True)
    shop_item_id = db.Column(db.BigInt(unsigned=True), db.ForeignKey('shop_items.id'))
    img = db.Column(db.String(255), nullable=True)
    created_at = db.Column(db.DateTime, default=func.now())
    updated_at = db.Column(db.DateTime, default=func.now(), onupdate=func.now())

    product = relationship('Product', back_populates="product_items")
    site = relationship('Site', back_populates="product_items")
    daily_ranks = relationship('ProductItemDailyRank', back_populates="product_item")
    product_item_reviews = relationship('ProductItemReview', back_populates="product_item")
Example #3
0
class ProductTypeProductRelation(BaseModel):
    __table_args__ = {'extend_existing': True}
    __tablename__ = 'product_type_product_relations'

    product_id = db.Column(db.BigInt(unsigned=True), db.ForeignKey('products.id'), primary_key=True)
    product_type_id = db.Column(db.BigInt(unsigned=True), db.ForeignKey('product_types.id'), primary_key=True)

    product = relationship('Product', back_populates="product_type_relations")
    product_type = relationship('ProductType', back_populates="product_relations")
Example #4
0
class ProductItemDailyRank(BaseModel):
    __table_args__ = {'extend_existing': True}
    __tablename__ = 'product_item_daily_ranks'

    id = db.Column(db.BigInt(unsigned=True), primary_key=True, autoincrement=True)
    date = db.Column(db.Date, nullable=True)
    product_item_id = db.Column(db.BigInt(unsigned=True), db.ForeignKey('product_items.id'))
    classify_id = db.Column(db.BigInt(unsigned=True), db.ForeignKey('classifies.id'))
    rank = db.Column(db.Integer, default=0)
    created_at = db.Column(db.DateTime, default=func.now())
    updated_at = db.Column(db.DateTime, default=func.now(), onupdate=func.now())

    product_item = relationship('ProductItem', back_populates="daily_ranks")
Example #5
0
class ShopItem(BaseModel):
    __table_args__ = {'extend_existing': True}
    __tablename__ = 'shop_items'

    id = db.Column(db.BigInt(unsigned=True), primary_key=True, autoincrement=True)
    shop_id = db.Column(db.BigInt(unsigned=True), db.ForeignKey('shops.id'))
    site_id = db.Column(db.BigInt(unsigned=True), db.ForeignKey('sites.id'))

    created_at = db.Column(db.DateTime, default=func.now())
    updated_at = db.Column(db.DateTime, default=func.now(), onupdate=func.now())

    shop = relationship('Shop', back_populates="shop_items")
    site = relationship('Site', back_populates="shop_items")
Example #6
0
class Tender(db.Model):
    __tablename__ = 'tender'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(20), nullable=False)
    content = db.Column(db.String(100), nullable=False)
    publish_date = db.Column(db.Date)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    city_id = db.Column(db.Integer, db.ForeignKey('city.id'))
    users = db.relationship('User', backref=db.backref('tenders'))

    def __init__(self, title, content, user_id, city_id, publish_date):
        self.title = title
        self.content = content
        self.user_id = user_id
        self.city_id = city_id
        self.publish_date = publish_date
Example #7
0
class Transaction(db.Model):
    __tablename__ = 'transactions'

    id = db.Column(db.Integer, primary_key=True)
    user_requested_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    user_accepted = db.Column(db.String(256))
    requested_quantity = db.Column(db.Integer)
    accepted = db.Column(db.Boolean)
    returned = db.Column(db.Boolean)
    item = db.Column(db.String(256), db.ForeignKey('cars.name'))
    date_requested = db.Column(db.DateTime)
    date_accepted = db.Column(db.DateTime)
    date_returned = db.Column(db.DateTime)

    def __repr__(self):
        return '<Transaction %r>' % self.id
Example #8
0
class TaskRemarksHistory(db.Model, HistoryMixin):
    __tablename__ = 'task_history'

    id = db.Column(db.Integer, primary_key=True)
    task_id = db.Column(db.Integer, db.ForeignKey('task.id'), nullable=False)
    task = db.relationship('Task', backref='remarks')
    task_creator = db.relationship('User', backref='tasks_created')
Example #9
0
class SiteConfig(BaseModel):
    __table_args__ = {'extend_existing': True}
    __tablename__ = 'site_configs'

    id = db.Column(db.BigInt(unsigned=True), primary_key=True, autoincrement=True)
    site_id = db.Column(db.BigInt(unsigned=True), db.ForeignKey('sites.id'))
    config = db.Column(db.JSON, nullable=True)
Example #10
0
class Task(db.Model):

    __tablename__ = 'task'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(200), nullable=False, unique=True)
    description = db.Column(db.Text, nullable=False)
    created_at = db.Column(db.DateTime,
                           server_default=func.now(),
                           nullable=False)
    created_by = db.Column(db.Integer, db.ForeignKey('user.id'))
    assigned_by = db.Column(db.Integer, db.ForeignKey('user.id'))
    assigned_to = db.Column(db.Integer, db.ForeignKey('user.id'))
    reviewed_by = db.Column(db.Integer, db.ForeignKey('user.id'))
    created_by_id = db.relationship('User', foreign_keys=[created_by])
    assigned_by_id = db.relationship('User', foreign_keys=[assigned_by])
    assigned_to_id = db.relationship('User', foreign_keys=[assigned_to])
    reviewed_by_id = db.relationship('User', foreign_keys=[reviewed_by])
    status_id = db.Column(db.Integer, db.ForeignKey('status.id'))
    status = db.relationship('Status', backref='tasks')
    criticality_id = db.Column(db.Integer, db.ForeignKey('criticality.id'))
    criticality = db.relationship('Criticality', backref='tasks')
    expected_completion_date = db.Column(
        db.DateTime,
        server_default=Computed(sqltext=text('created_at + INTERVAL 3 DAY'),
                                persisted=True),
        nullable=False)
    project_id = db.Column(db.Integer, db.ForeignKey('project.id'))
    project = db.relationship('Project', backref='tasks')
    actual_completion_date = db.Column(db.DateTime,
                                       server_default=null(),
                                       nullable=True)
Example #11
0
class ProjectRemarksHistory(db.Model, HistoryMixin):
    __tablename__ = 'project_history'

    id = db.Column(db.Integer, primary_key=True)
    project_id = db.Column(db.Integer,
                           db.ForeignKey('project.id'),
                           nullable=False)
    project = db.relationship('Project', backref='remarks')
    user = db.relationship('User', backref='project_remarks')
Example #12
0
class ProductItemDailyData(BaseModel):
    __table_args__ = {'extend_existing': True}
    __tablename__ = 'product_item_daily_data'

    id = db.Column(db.BigInt(unsigned=True), primary_key=True, autoincrement=True)
    date = db.Column(db.Date)
    product_item_id = db.Column(db.BigInt(unsigned=True), db.ForeignKey('product_items.id'))
    product_id = db.Column(db.BigInt(unsigned=True), db.ForeignKey('products.id'))
    rating = db.Column(db.Float, default=0.0)
    reviews = db.Column(db.Integer, default=0)
    helpers = db.Column(db.Integer, default=0)
    price = db.Column(db.String(255), default='')
    questions = db.Column(db.Integer, default=0)
    answers = db.Column(db.Integer, default=0)
    classify_rank = db.Column(db.JSON, nullable=True)
    feature_rate = db.Column(db.JSON, nullable=True)
    created_at = db.Column(db.DateTime, default=func.now())
    updated_at = db.Column(db.DateTime, default=func.now(), onupdate=func.now())
Example #13
0
class ProductItemCrawlDate(BaseModel):
    __table_args__ = {'extend_existing': True}
    __tablename__ = "product_item_crawl_dates"

    id = db.Column(db.BigInt(unsigned=True), primary_key=True, autoincrement=True)
    product_item_id = db.Column(db.BigInt(unsigned=True), db.ForeignKey('product_items.id'))
    classify_crawl_date = db.Column(db.Date, nullable=True)
    created_at = db.Column(db.DateTime, default=func.now())
    updated_at = db.Column(db.DateTime, default=func.now(), onupdate=func.now())
Example #14
0
class StarboardEntry(db.Table, table_name='starboard_entries'):
    id = db.Column(db.Serial, primary_key=True)
    bot_message_id = db.Column(db.BigInt, nullable=True)
    message_id = db.Column(db.BigInt, unique=True)
    channel_id = db.Column(db.BigInt)
    author_id = db.Column(db.BigInt)
    guild_id = db.ForeignKey(Starboard.id, type=db.BigInt)

    # There is some fuckery with ForeignKeys that I don't want to fix rn. They must be referenced as strings.
    starboard_entries_index = db.Index(bot_message_id, message_id, 'guild_id')
Example #15
0
class Blacklist(db.Model):
    __tablename__ = 'blacklist'

    id = db.Column(db.Integer, primary_key=True)

    user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    blacklisted_token = db.Column(db.String(256))
    blacklisted_at = db.Column(db.DateTime)

    def __repr__(self):
        return '<Blacklisted Token %r>' % self.blacklisted_token
Example #16
0
class Project(db.Model):

    __tablename__ = 'project'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False, unique=True)
    description = db.Column(db.String(255), nullable=False, server_default='')
    status_id = db.Column(db.Integer, db.ForeignKey('status.id'))
    status = db.relationship('Status', backref='projects')
    created_at = db.Column(db.DateTime,
                           server_default=func.now(),
                           nullable=False)
    organisation_id = db.Column(db.Integer, db.ForeignKey('organisation.id'))
    organisation = db.relationship('Organisation', backref='projects')
    created_by = db.Column(db.Integer,
                           db.ForeignKey('user.id'),
                           nullable=False)
    project_creator = db.relationship('User', backref='projects_created_by')
    project_users = db.relationship('User',
                                    backref='user_projects',
                                    secondary='user_project')
Example #17
0
class CategoryService(db.Model):
    """Categories to Services"""
    __tablename__ = 'categories_services'

    category_id = db.Column(db.Integer, db.ForeignKey(
        "categories.id", ondelete="CASCADE"), primary_key=True)
    service_id = db.Column(db.Integer, db.ForeignKey(
        "services.id", ondelete="CASCADE"), primary_key=True)

    def __repr__(self):
        """Representation of this class"""
        e = self
        return f"<CategoryService category_id={e.category_id} service_id={e.service_id}>"

    def serialize(self):
        """Serialize a CategoryService SQLAlchemy obj to dictionary."""

        return {
            "category_id": self.category_id,
            "service_id": self.service_id
        }
Example #18
0
class Item(db.Model):
    __tablename__ = 'items'

    name = db.Column(db.String(256), primary_key=True)
    created_by = db.Column(db.String(256), db.ForeignKey('admins.email'))
    date_in = db.Column(db.DateTime)
    date_out = db.Column(db.DateTime)
    quantity = db.Column(db.Integer)

    transactions = db.relationship("Transaction", backref="items", lazy=True)

    def __repr__(self):
        return '<Item %r>' % self.name
Example #19
0
class Article(db.Model):
    __tablname__ = "article"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(50), nullable=False)
    desc = db.Column(db.Text, nullable=False)
    content = db.Column(db.Text, nullable=False)
    publish_time = db.Column(db.Date,
                             default=datetime.now,
                             onupdate=datetime.now)
    author_id = db.Column(db.Integer,
                          db.ForeignKey("author.id"),
                          nullable=False)
    category_id = db.Column(db.Integer,
                            db.ForeignKey("category.id"),
                            nullable=False)
    create_time = db.Column(db.DateTime, default=datetime.now)
    update_time = db.Column(db.DateTime,
                            default=datetime.now,
                            onupdate=datetime.now)

    def __str__(self):
        return "%s" % self.title
Example #20
0
class User(db.Model):
    """User Model"""

    __tablename__ = 'user'

    id = db.Column(db.Integer, primary_key=True)
    first_name = db.Column(db.String(30), nullable=False)
    last_name = db.Column(db.String(30), nullable=False)
    email = db.Column(db.String(200), nullable=False, unique=True)
    password = db.Column(db.Text, nullable=False)
    is_verified = db.Column(db.Boolean, server_default=text('0'))
    created_at = db.Column(db.DateTime, server_default=func.now())
    role_id = db.Column(db.Integer, db.ForeignKey('role.id'), nullable=False)
    role = db.relationship('Role', backref='users')
Example #21
0
class Inhouse(db.Model):
    __tablename__ = "inhouse"
    id = db.Column(db.Integer, primary_key=True)
    application_id = db.Column(db.Integer, db.ForeignKey('applications.id'))
    job_id = db.Column(db.String(256))

    def __repr__(self):
        return '<Inhouse Application %r>' % self.id

    def to_dict(self):
        return {
            c.key: getattr(self, c.key)
            for c in inspect(self).mapper.column_attrs
        }
Example #22
0
class InterviewQuestion(db.Model):
    __tablename__ = "interviewquestions"
    id = db.Column(db.Integer, primary_key=True)
    application_id = db.Column(db.Integer, db.ForeignKey('applications.id'))
    title = db.Column(db.String(256))
    question = db.Column(db.String(256))

    def __repr__(self):
        return '<Interview Question %r' % self.Question

    def to_dict(self):
        return {
            c.key: getattr(self, c.key)
            for c in inspect(self).mapper.column_attrs
        }
Example #23
0
class FeaturedArticle(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    article_id = db.Column(db.Integer,
                           db.ForeignKey("article.id"),
                           nullable=False)
    article_title = db.relationship("Article",
                                    backref="featured",
                                    uselist=False)
    create_time = db.Column(db.DateTime, default=datetime.now)
    update_time = db.Column(db.DateTime,
                            default=datetime.now,
                            onupdate=datetime.now)

    def __str__(self):
        return "%s" % self.id
Example #24
0
class City(db.Model):
    __tablename__ = 'city'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    city_name = db.Column(db.String(10), nullable=False)
    province_id = db.Column(db.Integer, db.ForeignKey('province.id'))

    def __init__(self, city_name, province_id):
        self.city_name = city_name
        self.province_id = province_id

    @staticmethod
    def generate_dict(city):
        city_dict = {}
        city_dict['city_id'] = city.id
        city_dict['cityName'] = city.city_name
        return city_dict
Example #25
0
class ShopItemDetail(BaseModel):
    __table_args__ = {'extend_existing': True}
    __tablename__ = 'shop_item_details'

    id = db.Column(db.BigInt(unsigned=True), primary_key=True, autoincrement=True)
    shop_item_id = db.Column(db.BigInt(unsigned=True), db.ForeignKey('shop_items.id'))
    little_goods_trend = db.Column(db.JSON, nullable=True)
    high_rate_goods_trend = db.Column(db.JSON, nullable=True)
    review_trend = db.Column(db.JSON, nullable=True)
    rate_trend = db.Column(db.JSON, nullable=True)
    little_goods_num = db.Column(db.Integer, default=0)
    high_rate_goods_num = db.Column(db.Integer, default=0)
    review_num = db.Column(db.Integer, default=0)
    rate = db.Column(db.Integer, default=0)

    created_at = db.Column(db.DateTime, default=func.now())
    updated_at = db.Column(db.DateTime, default=func.now(), onupdate=func.now())
Example #26
0
class External(db.Model):
    __tablename__ = "external"
    id = db.Column(db.Integer, primary_key=True)
    application_id = db.Column(db.Integer, db.ForeignKey('applications.id'))
    url = db.Column(db.String(256))
    position = db.Column(db.String(256))
    company = db.Column(db.String(256))
    date_posted = db.Column(db.String(256))
    deadline = db.Column(db.String(256))

    def __repr__(self):
        return '<External Application %r>' % self.id

    def to_dict(self):
        return {
            c.key: getattr(self, c.key)
            for c in inspect(self).mapper.column_attrs
        }
Example #27
0
class Organisation(db.Model):

    __tablename__ = 'organisation'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(70), nullable=False, unique=True)
    passcode = db.Column(db.Text, nullable=False)
    location = db.Column(db.String(30), nullable=False)
    registered_at = db.Column(db.DateTime,
                              server_default=func.now(),
                              nullable=False)
    registered_by = db.Column(db.Integer,
                              db.ForeignKey('user.id'),
                              nullable=False)
    organisation_registerer = db.relationship(
        'User', backref='organisation_registered', uselist=False)
    user_organisation = db.relationship('User',
                                        backref='users',
                                        secondary='user_organisation')
Example #28
0
class TagLookup(db.Table, table_name="tag_lookup"):
    id = db.PrimaryKeyColumn()

    # we will create more indexes manually
    name = db.Column(db.String, index=True)
    location_id = db.Column(db.Integer(big=True), index=True)

    owner_id = db.Column(db.Integer(big=True))
    created_at = db.Column(db.Datetime, default="now() at time zone 'utc'")
    tag_id = db.Column(db.ForeignKey("tags", "id"))

    @classmethod
    def create_table(cls, *, exists_ok=True):
        statement = super().create_table(exists_ok=exists_ok)

        # create the indexes
        sql = (
            "CREATE INDEX IF NOT EXISTS tag_lookup_name_trgm_idx ON tag_lookup USING GIN (name gin_trgm_ops);\n"
            "CREATE INDEX IF NOT EXISTS tag_lookup_name_lower_idx ON tag_lookup (LOWER(name));\n"
            "CREATE UNIQUE INDEX IF NOT EXISTS tag_lookup_uniq_idx ON tag_lookup (LOWER(name), location_id);"
        )

        return statement + "\n" + sql
Example #29
0
class ModLogTargets(db.Table, table_name='modlog_targets'):
    id = db.Column(db.Serial, primary_key=True)
    entry_id = db.ForeignKey(ModLogEntry.id)
    user_id = db.Column(db.BigInt, nullable=True)
    mod_id = db.Column(db.BigInt, nullable=True)
Example #30
0
class CartItem(db.Model):
    __tablename__ = "cartitems"
    id = db.Column(db.Integer, primary_key=True)
    product_id = db.Column(db.Integer, db.ForeignKey('products.id'))
    cart_id = db.Column(db.Integer, db.ForeignKey('carts.id'))
    quantity = db.Column(db.Integer)