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}')"
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
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"))
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)
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"))
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)
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"))
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"))
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'))
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)
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) }
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"))
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"))
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"))
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))
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)
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)
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'))
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}")'''
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
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'))
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)
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"))
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 } }
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"))
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