Esempio n. 1
0
class Order(db.Model, Repopulatable):
    id = db.Column(db.Integer, primary_key=True)

    platform_order_id = db.Column(db.String)

    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    user = db.relationship("User", backref=db.backref("orders"))

    user_legacy_id = db.Column(db.Integer, db.ForeignKey('user_legacy.id'))
    user_legacy = db.relationship("UserLegacy", backref=db.backref("orders"))

    products = db.relationship('Product', secondary=order_products_table,
                               backref=db.backref('orders', lazy='dynamic'))

    shop_id = db.Column(db.Integer, db.ForeignKey('shop.id'))
    shop = db.relationship("Shop", backref=db.backref("orders"))

    browser_ip = db.Column(db.String)
    delivery_tracking_number = db.Column(db.String)
    discount = db.Column(db.String)

    status = db.Column(db.String,
                       default=Constants.ORDER_STATUS_PURCHASED)  # ['PURCHASED', 'SHIPPED', 'NOTIFIED', 'REVIEWED']

    purchase_timestamp = db.Column(db.DateTime)
    shipment_timestamp = db.Column(db.DateTime)

    to_notify_timestamp = db.Column(db.DateTime)
    notification_timestamp = db.Column(db.DateTime)

    funnel_stream_id = db.Column(db.Integer, db.ForeignKey('funnel_stream.id'))
    funnel_stream = db.relationship("FunnelStream", backref=db.backref("order", uselist=False))
class Advertisement(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    companydetail_id = db.Column(db.Integer,
                                 db.ForeignKey('companydetail.id'),
                                 nullable=False)
    date_posted = db.Column(db.Date, nullable=False, default=date.today())
    deadline = db.Column(db.Date,
                         nullable=False,
                         default=date.today() + relativedelta(months=+1))
    title = db.Column(db.String(120), nullable=False)
    description = db.Column(db.String(800), nullable=False)
    keywords = db.relationship('Keyword',
                               secondary=advertisement_keyword,
                               lazy='subquery',
                               backref=db.backref('advertisements', lazy=True))

    users = db.relationship('User',
                            secondary=advertisement_users,
                            lazy='subquery',
                            backref=db.backref('advertisements', lazy=True))

    responses = db.relationship('Response', backref='advertisement')

    def __repr__(self):  #alihan
        return f"Advertisement('{self.id}', '{self.title}')"
class Companydetail(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer,
                        db.ForeignKey('user.id'),
                        nullable=False,
                        unique=True)
    name = db.Column(db.String(150), nullable=False)
    description = db.Column(db.String(800), nullable=False)
    address = db.Column(db.String(800), nullable=False)
    website = db.Column(db.String(180))
    github = db.Column(db.String(180))
    linkedin = db.Column(db.String(180))
    numberofworkers = db.Column(db.Integer)
    advertisements = db.relationship('Advertisement',
                                     backref='company_detail',
                                     lazy=True)
    img = db.Column(db.Text, nullable=True)
    imgname = db.Column(db.Text, nullable=True)
    mimetype = db.Column(db.Text, nullable=True)
    keywords = db.relationship('Keyword',
                               secondary=companydetail_keyword,
                               lazy='subquery',
                               backref=db.backref('companydetails', lazy=True))

    interests = db.relationship('Interestarea',
                                secondary=companydetail_interestarea,
                                lazy='subquery',
                                backref=db.backref('companydetails',
                                                   lazy=True))

    def __repr__(self):
        return f"Companydetail('{self.id}', '{self.name}')"
class Studentdetail(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer,
                        db.ForeignKey('user.id'),
                        nullable=False,
                        unique=True)
    name_surname = db.Column(db.String(150), nullable=False)
    description = db.Column(db.String(800))
    university = db.Column(db.String(120), nullable=False)
    class_level = db.Column(db.Integer, nullable=False)
    gpa = db.Column(db.Float, nullable=False)
    active = db.Column(db.Boolean, nullable=False, default=True)
    github = db.Column(db.String(180))
    linkedin = db.Column(db.String(180))
    img = db.Column(db.Text, nullable=True)
    imgname = db.Column(db.Text, nullable=True)
    mimetype = db.Column(db.Text, nullable=True)
    advertisements = db.relationship('Advertisement',
                                     secondary=advertisement_studentdetail,
                                     lazy='subquery',
                                     backref=db.backref('studentdetails',
                                                        lazy=True))
    keywords = db.relationship('Keyword',
                               secondary=studentdetail_keyword,
                               lazy='subquery',
                               backref=db.backref('studentdetails', lazy=True))

    def __repr__(self):
        return f"Studentdetail('{self.id}', '{self.name_surname}', '{self.university}')"
Esempio n. 5
0
class Shop(db.Model, Repopulatable):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    description = db.Column(db.String)
    domain = db.Column(db.String)
    image_url = db.Column(db.String)
    active = db.Column(db.Boolean, default=True)

    automatically_approve_reviews = db.Column(db.Boolean, default=True)

    access_user = db.Column(db.String)
    access_token = db.Column(db.String)
    products_imported = db.Column(db.Boolean, default=False)

    owner_id = db.Column(db.Integer, db.ForeignKey('user.id'),
                         default=current_user.id if current_user and current_user.is_authenticated() else None)
    owner = db.relationship("User", backref=db.backref("shops"))

    platform_id = db.Column(db.Integer, db.ForeignKey('platform.id'))
    platform = db.relationship("Platform", backref=db.backref("platform"))




    def __repr__(self):
        return '<Shop %r>' % self.name
Esempio n. 6
0
class ReviewReport(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    timestamp = db.Column(db.DateTime)

    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    user = db.relationship("User", backref=db.backref("review_reports"))

    review_id = db.Column(db.Integer, db.ForeignKey('review.id'))
    review = db.relationship("Review", backref=db.backref("reports"))
Esempio n. 7
0
class ReviewFeature(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    timestamp = db.Column(db.DateTime)

    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    user = db.relationship("User", backref=db.backref("review_features"))

    review_id = db.Column(db.Integer, db.ForeignKey('review.id'))
    review = db.relationship("Review", backref=db.backref("featured"), uselist=False)
Esempio n. 8
0
class Answer(db.Model, Repopulatable):
    id = db.Column(db.Integer, primary_key=True)
    created_ts = db.Column(db.DateTime)

    body = db.Column(db.String)

    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    user = db.relationship("User", backref=db.backref("answers"))

    question_id = db.Column(db.Integer, db.ForeignKey('question.id'))
    question = db.relationship("Question", backref=db.backref("answers"))
Esempio n. 9
0
class Question(db.Model, Repopulatable, RenderableObject):
    id = db.Column(db.Integer, primary_key=True)
    created_ts = db.Column(db.DateTime)

    body = db.Column(db.String)

    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    user = db.relationship("User", backref=db.backref("questions"))

    product_id = db.Column(db.Integer, db.ForeignKey('product.id'))
    product = db.relationship("Product", backref=db.backref("questions"))

    click_count = db.Column(db.Integer, default=0)
    is_public = db.Column(db.Boolean, default=False)
Esempio n. 10
0
class Task(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    celery_uuid = db.Column(db.String)
    eta = db.Column(db.DateTime)
    status = db.Column(db.String)

    method = db.Column(db.String)
    kwargs = db.Column(db.String)

    order_id = db.Column(db.Integer, db.ForeignKey('order.id'))
    order = db.relationship("Order", backref=db.backref("tasks"))

    funnel_stream_id = db.Column(db.Integer, db.ForeignKey('funnel_stream.id'))
    funnel_stream = db.relationship("FunnelStream", backref=db.backref("tasks"))
Esempio n. 11
0
class ProductUrl(db.Model, Repopulatable):
    id = db.Column(db.Integer, primary_key=True)
    url = db.Column(db.String)
    is_regex = db.Column(db.Boolean, default=False)

    product_id = db.Column(db.Integer, db.ForeignKey('product.id'))
    product = db.relationship("Product", backref=db.backref("urls"))
Esempio n. 12
0
class User(db.Model, UserMixin, Repopulatable):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String)
    roles = db.relationship("Role", secondary=roles_users_table,
                            backref=db.backref('users', lazy='dynamic'))
    is_shop_owner = db.Column(db.Boolean, default=False)
    temp_password = db.Column(db.String)
    password = db.Column(db.String)
    name = db.Column(db.String)
    image_url = db.Column(db.String)

    unsubscribed = db.Column(db.Boolean, default=False)
    unsubscribe_token = db.Column(db.String)

    active = db.Column(db.Boolean, default=True)
    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(40))
    current_login_ip = db.Column(db.String(40))
    login_count = db.Column(db.Integer)

    def get_notifications(self, start=0, stop=Constants.NOTIFICATIONS_INITIAL):
        return Notification.query.filter_by(user=self).order_by(Notification.id.desc()).all()[start:stop]

    def __repr__(self):
        return '<User %r>' % self.email
class User(db.Model, UserMixin):
    """
    User for RRVS
    """
    __tablename__="users"
    __table_args__ = {'schema':'users'}

    id = db.Column(db.Integer(), primary_key=True)
    authenticated = db.Column(db.Boolean, default=False)
    password = ''

    def is_active(self):
        """True, as all users are active."""
        return True

    def get_id(self):
        """Return the taskid to satisfy Flask-Login's requirements."""
        return self.id

    def is_authenticated(self):
        """Return True if the user is authenticated."""
        return self.authenticated

    def is_anonymous(self):
        """False, as anonymous users aren't supported."""
        return False
    roles = db.relationship('Role', secondary=roles_users, backref=db.backref('users', lazy='dynamic'))
Esempio n. 14
0
class Subscription(db.Model, Repopulatable):
    id = db.Column(db.Integer, primary_key=True)

    customer_id = db.Column(db.Integer, db.ForeignKey('customer.id'))
    customer = db.relationship("Customer", backref=db.backref("subscription"), uselist=False)

    plan_id = db.Column(db.Integer, db.ForeignKey('plan.id'))
    plan = db.relationship("Plan", backref=db.backref("subscription"), uselist=False)

    timestamp = db.Column(db.DateTime)
    trialed_for = db.Column(db.Integer, default=0)

    stripe_subscription_id = db.Column(db.String)

    def __repr__(self):
        return '<Subscription of %r by %r>' % (self.plan, self.customer)
Esempio n. 15
0
class ReviewShare(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    timestamp = db.Column(db.DateTime)

    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    user = db.relationship("User", backref=db.backref("review_shares"))

    review_id = db.Column(db.Integer, db.ForeignKey('review.id'))
    review = db.relationship("Review", backref=db.backref("shares"))

    def serialize(self):
        return {
            'action': True,
            'count': len(self.review.shares)
        }
Esempio n. 16
0
class ReviewRequest(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    created_ts = db.Column(db.DateTime)

    token = db.Column(db.String)

    from_customer_id = db.Column(db.Integer, db.ForeignKey('customer.id'))
    from_customer = db.relationship('Customer', backref=db.backref('review_requests'))

    to_user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    to_user = db.relationship('User', backref=db.backref('review_requests'))

    to_user_legacy_id = db.Column(db.Integer, db.ForeignKey('user_legacy.id'))
    to_user_legacy = db.relationship('UserLegacy', backref=db.backref('review_requests'))

    for_product_id = db.Column(db.Integer, db.ForeignKey('product.id'))
    for_product = db.relationship('Product', backref=db.backref('review_requests'))

    for_shop_id = db.Column(db.Integer, db.ForeignKey('shop.id'))
    for_shop = db.relationship('Shop', backref=db.backref('review_requests'))

    for_order_id = db.Column(db.Integer, db.ForeignKey('order.id'))
    for_order = db.relationship('Order', backref=db.backref('review_requests'))

    received = db.Column(db.Boolean, default=False)
    completed = db.Column(db.Boolean, default=False)

    opened_timestamp = db.Column(db.DateTime)

    funnel_stream_id = db.Column(db.Integer, db.ForeignKey('funnel_stream.id'))
    funnel_stream = db.relationship("FunnelStream", backref=db.backref("review_requests"))
Esempio n. 17
0
class UrlReferer(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    timestamp = db.Column(db.DateTime)
    url = db.Column(db.String)
    q = db.Column(db.String)

    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    user = db.relationship("User", backref=db.backref("url_referers"))
Esempio n. 18
0
class Notification(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    content = db.Column(db.String)
    url = db.Column(db.String)
    is_read = db.Column(db.Boolean, default=False)

    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    user = db.relationship("User", backref=db.backref("notifications"))
Esempio n. 19
0
class SentEmail(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    timestamp = db.Column(db.DateTime)
    recipients = db.Column(db.String)
    subject = db.Column(db.String)
    template = db.Column(db.String)
    template_ctx = db.Column(db.String)
    body = db.Column(db.String)

    tracking_pixel_id = db.Column(db.String)
    opened_timestamp = db.Column(db.DateTime)

    for_shop_id = db.Column(db.Integer, db.ForeignKey('shop.id'))
    for_shop = db.relationship("Shop", backref=db.backref("emails_sent"))

    funnel_stream_id = db.Column(db.Integer, db.ForeignKey('funnel_stream.id'))
    funnel_stream = db.relationship("FunnelStream", backref=db.backref("sent_email", uselist=False))
Esempio n. 20
0
class Battle(taciturn.Battle, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(40))
    campaign_id = db.Column(db.Integer, db.ForeignKey('campaign.id'))
    units = db.relationship('Unit', secondary=unit_battles, backref=db.backref('battles'))
    def __init__(self, campaign_id):
        self.campaign_id = campaign_id

    def __repr__(self):
        return '<Battle %s: %s>' % (self.id, self.name)
Esempio n. 21
0
class FunnelStream(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    shop_id = db.Column(db.Integer, db.ForeignKey('shop.id'))
    shop = db.relationship("Shop", backref=db.backref("funnel_streams"))

    product_id = db.Column(db.Integer, db.ForeignKey('product.id'))
    product = db.relationship("Product", backref=db.backref("funnel_streams"))

    # 1. First part of the funnel - page visits
    plugin_load_ts = db.Column(db.DateTime)
    plugin_loaded_from_ip = db.Column(db.String)

    # 2. How much interaction with our plugin
    plugin_glimpsed_ts = db.Column(db.DateTime)  # just part of the plugin is visible
    plugin_fully_seen_ts = db.Column(db.DateTime)  # the full plugin is visible
    plugin_mouse_hover_ts = db.Column(db.DateTime)
    plugin_mouse_scroll_ts = db.Column(db.DateTime)
    plugin_mouse_click_ts = db.Column(db.DateTime)
Esempio n. 22
0
class User(db.Model, UserMixin):
  __tablename__ = 'user'

  id = db.Column(db.Integer, primary_key=True)
  sex = db.Column(db.Integer())
  firstname = db.Column(db.String(255))
  lastname = db.Column(db.String(255))
  
  email = db.Column(db.String(255))
  
  roles = db.relationship('Role', secondary=roles_users, backref=db.backref('users', lazy='dynamic'))
Esempio n. 23
0
class Board(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    # id_user = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    creat = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    modificat = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)

    title = db.Column(db.Text, nullable=False)

    cards = db.relationship("Card", backref=db.backref('board', lazy=True), lazy=True)

    def __repr__(self):
        return f'''Board({self.id}, "{self.title}")'''
Esempio n. 24
0
class Customer(db.Model, Repopulatable):
    id = db.Column(db.Integer, primary_key=True)

    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    user = db.relationship("User", backref=db.backref("customer"), uselist=False)

    stripe_customer_id = db.Column(db.String)
    last4 = db.Column(db.String)
    active = db.Column(db.Boolean, default=True)

    def __repr__(self):
        return '<Customer %r>' % self.user
Esempio n. 25
0
class Order(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    Status = db.Column(db.String)
    Created = db.Column(db.DateTime, default=datetime.utcnow())
    Updated = db.Column(db.DateTime,
                        default=datetime.utcnow(),
                        onupdate=datetime.utcnow())
    User_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    Products = db.relationship('Product',
                               secondary=Order_products,
                               lazy='subquery',
                               backref=db.backref('Orders', lazy='subquery'))
Esempio n. 26
0
class User(UserMixin, db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    full_name = db.Column(db.String(64), index=True)
    email = db.Column(db.String(120), index=True, unique=True)
    password_hash = db.Column(db.String(128))
    tracks = db.relationship('Track', backref='author', lazy='dynamic')
    about_me = db.Column(db.String(140))
    last_seen = db.Column(db.DateTime, default=datetime.utcnow)

    followed = db.relationship('User',
                               secondary=followers,
                               primaryjoin=(followers.c.follower_id == id),
                               secondaryjoin=(followers.c.followed_id == id),
                               backref=db.backref('followers', lazy='dynamic'),
                               lazy='dynamic')

    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 avatar(self, size=80):
        digest = md5(self.email.lower().encode('utf-8')).hexdigest()
        return 'https://www.gravatar.com/avatar/{}?d=identicon&s={}'.format(
            digest, size)

    def follow(self, user):
        if not self.is_following(user):
            self.followed.append(user)

    def unfollow(self, user):
        if self.is_following(user):
            self.followed.remove(user)

    def is_following(self, user):
        return self.followed.filter(
            followers.c.followed_id == user.id).count() > 0

    def followed_tracks(self):
        followed = Track.query.join(
            followers, (followers.c.followed_id == Track.user_id)).filter(
                followers.c.follower_id == self.id)
        own = Track.query.filter_by(user_id=self.id)
        return followed.union(own).order_by(Track.timestamp.desc)

    def __repr__(self):
        return '<User {}>'.format(self.username)
Esempio n. 27
0
class HostelRoomUserMap(db.Model):
    __tablename__ = "hostel_room_user_map"
    hostel_room_id = db.Column(db.Integer,
                               db.ForeignKey("hostel_room.id"),
                               primary_key=True)
    academic_year = db.Column(db.Integer, primary_key=True)
    semester = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey("user.id"))
    user = db.relationship("User", backref="hostel_room_user")
    hostel_room = db.relationship(
        "HostelRoom",
        backref=db.backref(
            "hostel_room_user",
            cascade="save-update, merge, delete, delete-orphan"))
Esempio n. 28
0
class Comment(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    body = db.Column(db.String)
    created_ts = db.Column(db.DateTime, default=datetime.datetime.utcnow())
    image_url = db.Column(db.String)
    by_customer_support = db.Column(db.Boolean, default=False)

    review_id = db.Column(db.Integer, db.ForeignKey('review.id'))
    review = db.relationship('Review', backref=db.backref('comments'))

    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    user = db.relationship("User", backref=db.backref("comments"))

    def __repr__(self):
        return '<Comment %r... for %r by %r>' % (self.body[:10], self.review, self.user)

    def serialize(self):
        return {
            'body': self.body,
            'user': {
                'name': self.user.name,
                'image_url': self.user.image_url
            }
        }
Esempio n. 29
0
class NextAction(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    timestamp = db.Column(db.DateTime)
    identifier = db.Column(db.String)
    title = db.Column(db.String)
    url = db.Column(db.String)
    icon = db.Column(db.String)
    icon_bg_color = db.Column(db.String)

    is_completed = db.Column(db.Boolean, default=False)
    completed_ts = db.Column(db.DateTime)

    shop_id = db.Column(db.Integer, db.ForeignKey('shop.id'))
    shop = db.relationship("Shop", backref=db.backref("next_actions"))
Esempio n. 30
0
class Product(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255))
    price = db.Column(db.Float)

    category_id = db.Column(db.Integer, db.ForeignKey('category.id'))
    category = db.relationship('Category', backref=db.backref('products',
                                                              lazy='dynamic'))

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

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