예제 #1
0
class Role(db.Model):
    __tablename__ = 'roles'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    index = db.Column(db.String(64))
    default = db.Column(db.Boolean, default=False, index=True)
    permissions = db.Column(db.Integer)
    users = db.relationship('User', backref='role', lazy='dynamic')

    @staticmethod
    def insert_roles():
        roles = {
            'User': (Permission.GENERAL, 'main', True),
            'Administrator': (
                Permission.ADMINISTER,
                'admin',
                False  # grants all permissions
            )
        }
        for r in roles:
            role = Role.query.filter_by(name=r).first()
            if role is None:
                role = Role(name=r)
            role.permissions = roles[r][0]
            role.index = roles[r][1]
            role.default = roles[r][2]
            db.session.add(role)
        db.session.commit()

    def __repr__(self):
        return '<Role \'%s\'>' % self.name
예제 #2
0
파일: article.py 프로젝트: vibiu/Vblog
class Article(db.Model):
    __tablename__ = 'articles'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.Unicode(64))
    topic = db.Column(db.Unicode(64))
    body = db.Column(db.Unicode(1024))
    timestamp = db.Column(db.DateTime, index=True)
예제 #3
0
class BaseModel(db.Model):
	__abstract__ = True

	id = db.Column(db.Integer(), primary_key=True)
	is_deleted = db.Column(db.Boolean, default=False, nullable=False)
	created_at = db.Column(db.DateTime(), default=datetime.now())
	updated_at = db.Column(db.DateTime(), default=datetime.now(), onupdate=datetime.now())

	def save(self):
		try:
			db.session.add(self)
			db.session.commit()
		except (exc.IntegrityError, exc.InvalidRequestError):
			db.session().rollback()

	def delete(self):
		db.session.delete(self)
		db.session.commit()

	def serialize(self, excluded=[], with_timestamp=True):
		excluded = excluded + ['created_at', 'updated_at', 'password', 'is_deleted', 'activation_code', 'auth_key']
		s = {to_camel_case(column.name): getattr(self, column.name) for column in self.__table__.columns if column.name not in excluded}
		if with_timestamp:
			s['timestamps'] = {'createdAt': format_response_timestamp(self.created_at), 'updatedAt': format_response_timestamp(self.updated_at)}
		return s
예제 #4
0
class MProductVariant(db.Model):
    __tablename__ = 'marketplace_product_variants'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    variant_id = db.Column(db.Integer, db.ForeignKey('marketplace_variants.id', ondelete="CASCADE"))
    product_id = db.Column(db.Integer, db.ForeignKey('marketplace_products.id', ondelete="CASCADE"))
    created_at = db.Column(db.DateTime, default=db.func.now())
    updated_at = db.Column(db.DateTime, default=db.func.now(), onupdate=db.func.now())
예제 #5
0
class BaseModel(db.Model):
    __abstract__ = True

    id = db.Column(db.Integer(), primary_key=True)
    is_deleted = db.Column(db.Boolean, default=False, nullable=False)
    created_at = db.Column(db.DateTime(), default=datetime.now())
    updated_at = db.Column(db.DateTime(),
                           default=datetime.now(),
                           onupdate=datetime.now())

    def save(self):
        try:
            db.session.add(self)
            db.session.commit()
        except (exc.IntegrityError, exc.InvalidRequestError):
            db.session().rollback()

    def delete(self):
        db.session.delete(self)
        db.session.commit()

    def serialize(self):
        s = {
            to_camel_case(column.name): getattr(self, column.name)
            for column in self.__table__.columns
            if column.name not in ['created_at', 'updated_at']
        }
        s['timestamps'] = {
            'created_at': self.created_at,
            'updated_at': self.updated_at
        }
        return s
예제 #6
0
class BlogNewsLetter(db.Model):
    __tablename__ = 'blog_news_letters'
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(64), default=None, nullable=True, unique=True)
    created_at = db.Column(db.DateTime, default=db.func.now())
    updated_at = db.Column(db.DateTime,
                           default=db.func.now(),
                           onupdate=db.func.now())
예제 #7
0
class BlogTag(db.Model):
    __tablename__ = 'blog_tags'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(), default=None, nullable=False)
    created_at = db.Column(db.DateTime, default=db.func.now())
    updated_at = db.Column(db.DateTime,
                           default=db.func.now(),
                           onupdate=db.func.now())
예제 #8
0
class MVariant(db.Model):
    __tablename__ = 'marketplace_variants'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String())
    symbol = db.Column(db.String())
    created_at = db.Column(db.DateTime, default=db.func.now())
    updated_at = db.Column(db.DateTime, default=db.func.now(), onupdate=db.func.now())
예제 #9
0
class MBrand(db.Model):
    __tablename__ = 'marketplace_brands'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(), default=None, nullable=False)
    image = db.Column(db.Text)
    created_at = db.Column(db.DateTime, default=db.func.now())
    updated_at = db.Column(db.DateTime, default=db.func.now(), onupdate=db.func.now())
예제 #10
0
class Recipient(db.Model, SaveMixin):
    id_email_received_model = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(256), nullable=False)
    subject = db.Column(db.String(256), nullable=False)
    body = db.Column(db.Text, nullable=False)
    create_ts = db.Column(db.DateTime, nullable=False, default=datetime.now())

    def __repr__(self):
        return "<EmailReceiverModel: {} {}>".format(self.email, self.subject)
예제 #11
0
class MSellerOrder(db.Model):
    __tablename__ = 'marketplace_seller_orders'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    order_id = db.Column(db.Integer, db.ForeignKey('marketplace_orders.id', ondelete="CASCADE"))
    seller_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete="CASCADE"))
    order_status = db.Column(db.Integer, default=0)
    shipping_method_id = db.Column(db.Integer, db.ForeignKey('marketplace_shipping_methods.id', ondelete="CASCADE"),
                                   nullable=True, default=None)
    buyer_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete="CASCADE"))
    current_currency_id = db.Column(db.Integer, db.ForeignKey('marketplace_currency.id', ondelete="CASCADE"))
    shipping_cost = db.Column(db.Float, default=0)
    created_at = db.Column(db.DateTime, default=db.func.now())
    updated_at = db.Column(db.DateTime, default=db.func.now(), onupdate=db.func.now())

    order = db.relationship("MOrder", backref="order_seller_orders")
    seller = db.relationship("User", backref="seller_orders_sold", primaryjoin="User.id == MSellerOrder.seller_id")
    buyer = db.relationship("User", backref="seller_orders_bought", primaryjoin="User.id == MSellerOrder.buyer_id")
    currency = db.relationship("MCurrency")
    shipping_method = db.relationship("MShippingMethod", backref="seller_order_shipping")

    @property
    def order_status_explained(self):
        if self.order_status == 0:
            return 'Pending'
        elif self.order_status == 1:
            return 'Received'
        elif self.order_status == 2:
            return 'Processing'
        elif self.order_status == 3:
            return "Shipping"
        elif self.order_status == 4:
            return "Completed"
        return self.order_status

    @property
    def next_action(self):
        if self.order_status == 0:
            return 1, 'Received'
        elif self.order_status == 1:
            return 2, "Processing"
        elif self.order_status == 2:
            return 3, "Shipping"
        elif self.order_status == 3:
            return 4, "Completed"

        return False

    @property
    def product_total(self):
        sum = 0
        for item in self.order_items:
            sum += item.current_total_price
        return sum

    @property
    def total_price(self):
        return self.product_total + self.shipping_cost
예제 #12
0
class BlogPostTag(db.Model):
    __tablename__ = 'blog_post_tags'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    tag_id = db.Column(db.Integer,
                       db.ForeignKey('blog_tags.id', ondelete="CASCADE"))
    post_id = db.Column(db.Integer,
                        db.ForeignKey('blog_posts.id', ondelete="CASCADE"))
    created_at = db.Column(db.DateTime, default=db.func.now())
    updated_at = db.Column(db.DateTime,
                           default=db.func.now(),
                           onupdate=db.func.now())
예제 #13
0
class MReview(db.Model):
    __tablename__ = 'product_reviews'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    user_id = db.Column(db.Integer,
                        db.ForeignKey('users.id', ondelete="CASCADE"),
                        nullable=False)
    product_id = db.Column(db.Integer,
                           db.ForeignKey('marketplace_products.id',
                                         ondelete="CASCADE"),
                           nullable=True)
    score = db.Column(db.Float)
    message = db.Column(db.Text)
    timestamp = db.Column(db.DateTime,
                          default=db.func.now(),
                          onupdate=db.func.now())
    created_at = db.Column(db.DateTime, default=db.func.now())
    updated_at = db.Column(db.DateTime,
                           default=db.func.now(),
                           onupdate=db.func.now())

    user = db.relationship("User", backref="reviews")
    product = db.relationship("MProduct",
                              cascade="all,delete",
                              backref="reviews")
예제 #14
0
class MShippingMethod(db.Model):
    __tablename__ = 'marketplace_shipping_methods'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(), default=None, nullable=False)
    seller_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete="CASCADE"), default=None, nullable=True)
    created_at = db.Column(db.DateTime, default=db.func.now())
    updated_at = db.Column(db.DateTime, default=db.func.now(), onupdate=db.func.now())

    seller = db.relationship("User", backref="shipping_methods")

    def get_price(self, currency, seller):
        price = None
        shipping_method_price = MShippingMethodPrice.query.filter_by(shipping_method=self).filter_by(price_currency=currency).filter_by(seller=seller).first()
        if shipping_method_price:
            price = shipping_method_price.price
        return price
예제 #15
0
class MCartItem(db.Model):
    __tablename__ = 'marketplace_cart_items'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    cart_id = db.Column(db.Integer,
                        db.ForeignKey('marketplace_carts.id',
                                      ondelete="CASCADE"),
                        nullable=True,
                        default=None)
    seller_cart_id = db.Column(db.Integer,
                               db.ForeignKey('marketplace_seller_carts.id',
                                             ondelete="CASCADE"),
                               nullable=True,
                               default=None)
    product_id = db.Column(
        db.Integer, db.ForeignKey('marketplace_products.id',
                                  ondelete="CASCADE"))
    seller_id = db.Column(db.Integer,
                          db.ForeignKey('users.id', ondelete="CASCADE"))
    buyer_id = db.Column(db.Integer,
                         db.ForeignKey('users.id', ondelete="CASCADE"),
                         nullable=True,
                         default=None)
    count = db.Column(db.Integer, default=1)
    variant_id = db.Column(
        db.Integer, db.ForeignKey('marketplace_variants.id',
                                  ondelete="CASCADE"))

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

    cart = db.relationship("MCart",
                           backref=backref("cart_items", lazy='joined'))
    seller_cart = db.relationship("MSellerCart", backref="cart_items")
    seller = db.relationship("User",
                             backref="items_in_cart",
                             primaryjoin="User.id == MCartItem.seller_id")
    buyer = db.relationship("User",
                            backref="my_cart_items",
                            primaryjoin="User.id == MCartItem.buyer_id")
    product = db.relationship("MProduct", backref="product_cart_items")
    variant = db.relationship(
        "MVariant",
        backref="variant_cart_items",
        primaryjoin="MVariant.id == MCartItem.variant_id")
예제 #16
0
class BlogPost(db.Model):
    __tablename__ = 'blog_posts'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String())
    image = db.Column(db.String(), default=None, nullable=False)
    text = db.Column(db.Text(), default=None)
    comments = db.relationship('BlogComment',
                               backref=backref('post'),
                               lazy='dynamic',
                               cascade="all, delete-orphan")
    user_id = db.Column(db.Integer,
                        db.ForeignKey('users.id', ondelete="CASCADE"))
    creator = db.relationship('User')
    categories = db.relationship(
        "BlogCategory",
        secondary='blog_post_categories',
        backref=backref("posts"),
        primaryjoin=(BlogPostCategory.post_id == id),
        secondaryjoin=(BlogPostCategory.category_id == BlogCategory.id))
    tags = db.relationship("BlogTag",
                           secondary='blog_post_tags',
                           backref=backref("posts"),
                           primaryjoin=(BlogPostTag.post_id == id),
                           secondaryjoin=(BlogPostTag.tag_id == BlogTag.id))

    created_at = db.Column(db.DateTime, default=db.func.now())
    updated_at = db.Column(db.DateTime,
                           default=db.func.now(),
                           onupdate=db.func.now())
예제 #17
0
class MOrderStatusChange(db.Model):
    __tablename__ = 'marketplace_order_status_changes'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    order_id = db.Column(db.Integer, db.ForeignKey('marketplace_orders.id', ondelete="CASCADE"), nullable=True,
                         default=None)
    seller_order_id = db.Column(db.Integer, db.ForeignKey('marketplace_seller_orders.id', ondelete="CASCADE"), nullable=True,
                                default=None)
    changed_from = db.Column(db.Integer, default=0)
    changed_to = db.Column(db.Integer, default=0)

    order = db.relationship("MOrder", backref="order_statuses")
    seller_order = db.relationship("MSellerOrder", backref="order_status_changes")

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

    @property
    def order_status_explained(self):
        if self.changed_to == 0:
            return 'Pending', 'Your Order is still pending', ''
        elif self.changed_to == 1:
            return 'Received', 'The seller received your order', 'envelope open outline'
        elif self.changed_to == 2:
            return 'Processing', 'The seller is working on your order now', 'spinner'
        elif self.changed_to == 3:
            return "Shipping", 'Your Order is on the way to you', 'truck'
        elif self.changed_to == 4:
            return "Completed", 'Order Delivered', 'thumbs up'
        return self.changed_to
예제 #18
0
class EditableHTML(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    editor_name = db.Column(db.String(100), unique=True)
    value = db.Column(db.Text)

    @staticmethod
    def get_editable_html(editor_name):
        editable_html_obj = EditableHTML.query.filter_by(
            editor_name=editor_name).first()

        if editable_html_obj is None:
            editable_html_obj = EditableHTML(editor_name=editor_name, value='')
        return editable_html_obj

    @property
    def serialize(self):
        return {
            'id': self.id,
            'editor_name': self.editor_name,
            'value': self.value
        }
예제 #19
0
class MSettings(db.Model):
    __tablename__ = 'marketplace_settings'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String())
    display_name = db.Column(db.String())
    value = db.Column(db.String(), default=None)

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

    @staticmethod
    def insert_stripe():
        settings = [['stripe_public', 'Stripe Public Key'],
                    ['stripe_secret', 'Stripe Secret Key'],
                    ['paystack_public', 'Paystack Public Key'],
                    ['paystack_secret', 'Paystack Secret Key']]
        for s in settings:
            setting = MSettings.query.filter_by(name=s[0]).first()
            print(setting)
            if setting is None:
                setting = MSettings(name=s[0], display_name=s[1])
            db.session.add(setting)
        db.session.commit()
예제 #20
0
class Notification(db.Model):
    __tablename__ = 'notifications'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(128), index=True)
    user_id = db.Column(db.Integer,
                        db.ForeignKey('users.id', ondelete="CASCADE"))
    related_id = db.Column(db.Integer, default=0)
    timestamp = db.Column(db.Float, index=True, default=time)
    payload_json = db.Column(db.Text)
    read = db.Column(db.Boolean, default=False)
    created_at = db.Column(db.DateTime, default=db.func.now())
    updated_at = db.Column(db.DateTime,
                           default=db.func.now(),
                           onupdate=db.func.now())

    def get_data(self):
        return json.loads(str(self.payload_json))

    def parsed(self):
        user = User.query.filter_by(id=self.related_id).first()
        if 'unread_message' in self.name:
            msg = Message.query.filter_by(
                id=json.loads(self.payload_json)['message']).first()
            if user and msg:
                return {
                    "type":
                    self.name,
                    "link":
                    url_for('main.read_notification', notification_id=self.id),
                    "text":
                    "<p><b>{}</b> sent you a message <u>{} ...</u></strong></p>"
                    .format(user.full_name, msg.body[:40].replace("\n", " ")),
                    "timestamp":
                    datetime.fromtimestamp(self.timestamp).ctime(),
                    "time":
                    self.timestamp,
                    "user":
                    user,
                    "read":
                    self.read
                }
            else:
                self.read = True
                db.session.add(self)
                db.session.commit()
예제 #21
0
class MCategory(db.Model):
    __tablename__ = 'marketplace_categories'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    parent_id = db.Column(db.Integer, db.ForeignKey('marketplace_categories.id', ondelete="CASCADE"), nullable=True,
                          default=None)
    name = db.Column(db.String(), default=None, nullable=False)
    image = db.Column(db.String(), default=None, nullable=False)
    order = db.Column(db.Integer, default=0)
    is_featured = db.Column(db.Boolean, default=False)
    created_at = db.Column(db.DateTime, default=db.func.now())
    updated_at = db.Column(db.DateTime, default=db.func.now(), onupdate=db.func.now())

    parent = db.relationship("MCategory", remote_side=[id])
    children = db.relationship("MCategory")
예제 #22
0
class MCategory(db.Model):
    __tablename__ = 'marketplace_categories'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    parent_id = db.Column(db.Integer,
                          db.ForeignKey('marketplace_categories.id',
                                        ondelete="CASCADE"),
                          nullable=True,
                          default=None)
    name = db.Column(db.String(), default=None, nullable=False)
    image = db.Column(db.String(), default=None, nullable=True)
    order = db.Column(db.Integer, default=0)
    is_featured = db.Column(db.Boolean, default=False)
    created_at = db.Column(db.DateTime, default=db.func.now())
    updated_at = db.Column(db.DateTime,
                           default=db.func.now(),
                           onupdate=db.func.now())

    parent = db.relationship("MCategory", remote_side=[id])
    children = db.relationship("MCategory")
    # products = db.relationship(
    #     'MProduct',
    #     secondary=subscribers,
    #     backref=db.backref('user', passive_deletes=True, lazy='dynamic')
    # )
    # products = db.relationship("MProduct", backref="categories")
    @staticmethod
    def insert_data():
        names = ('Animals & Pet Supplies', 'Apparel & Accessories',
                 'Arts & Entertainment', 'Baby & Toddler',
                 'Business & Industrial', 'Cameras & Optics', 'Electronics',
                 'Food, Beverages & Tobacco', 'Furniture', 'Hardware',
                 'Health & Beauty', 'Home & Garden', 'Luggage & Bags',
                 'Mature', 'Media', 'Office Supplies',
                 'Religious & Ceremonial', 'Software & Information Technology',
                 'Sporting Goods', 'Toys & Games', 'Vehicles & Parts',
                 'Housing', 'Hobbies', 'Classifieds')

        for name in names:
            name = MCategory(name=name)
            db.session.add(name)
        db.session.commit()
        print('Added Marketplace Categories')

    @property
    def image_url(self):
        return url_for('_uploads.uploaded_file',
                       setname='images',
                       filename=self.image,
                       external=True)
예제 #23
0
class MCurrency(db.Model):
    __tablename__ = 'marketplace_currency'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(), default=None, nullable=False)
    symbol = db.Column(db.String())
    default = db.Column(db.Boolean())
    created_at = db.Column(db.DateTime, default=db.func.now())
    updated_at = db.Column(db.DateTime, default=db.func.now(), onupdate=db.func.now())
예제 #24
0
class BaseModel(db.Model):
	__abstract__ = True
	
	id = db.Column(db.Integer(), primary_key=True)
	created_at = db.Column(db.DateTime(), default=datetime.now())
	updated_at = db.Column(db.DateTime(), default=datetime.now(), onupdate=datetime.now())
	
	def save(self):
		try:
			db.session.add(self)
			db.session.commit()
		except (exc.IntegrityError, exc.InvalidRequestError):
			db.session().rollback()
	
	def delete(self):
		db.session.delete(self)
		db.session.commit()
		
	def serialize(self):
		s = {column.name: getattr(self, column.name) for column in self.__table__.columns if column.name not in ['created_at', 'updated_at']}
		s['timestamps'] = {'created_at': self.created_at, 'updated_at': self.updated_at, 'date_pretty_short': self.created_at.strftime('%b %d, %Y'),
						   'date_pretty': self.created_at.strftime('%B %d, %Y')}
		return s
예제 #25
0
class MShippingMethodPrice(db.Model):
    __tablename__ = 'marketplace_shipping_method_prices'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    shipping_method_id = db.Column(db.Integer, db.ForeignKey('marketplace_shipping_methods.id', ondelete="CASCADE"))
    seller_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete="CASCADE"), default=None, nullable=True)
    price_currency_id = db.Column(db.Integer, db.ForeignKey('marketplace_currency.id', ondelete="CASCADE"))
    price = db.Column(db.Float)

    created_at = db.Column(db.DateTime, default=db.func.now())
    updated_at = db.Column(db.DateTime, default=db.func.now(), onupdate=db.func.now())
    seller = db.relationship("User", backref="shipping_methods_prices")
    shipping_method = db.relationship("MShippingMethod", backref="prices")
    price_currency = db.relationship("MCurrency")
예제 #26
0
class BlogCategory(db.Model):
    __tablename__ = 'blog_categories'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(), default=None, nullable=False)
    order = db.Column(db.Integer, default=0)
    is_featured = db.Column(db.Boolean, default=False)
    created_at = db.Column(db.DateTime, default=db.func.now())
    updated_at = db.Column(db.DateTime,
                           default=db.func.now(),
                           onupdate=db.func.now())
예제 #27
0
class ContactMessage(db.Model):
    __tablename__ = 'contact_messages'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    user_id = db.Column(db.Integer,
                        db.ForeignKey('users.id', ondelete="CASCADE"),
                        nullable=True)
    name = db.Column(db.String(), default=None, nullable=True)
    email = db.Column(db.String(64), default=None, nullable=True)
    text = db.Column(db.Text)
    user = db.relationship("User")
    created_at = db.Column(db.DateTime, default=db.func.now())
    updated_at = db.Column(db.DateTime,
                           default=db.func.now(),
                           onupdate=db.func.now())
예제 #28
0
class MOrderStatusChange(db.Model):
    __tablename__ = 'marketplace_order_status_changes'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    order_id = db.Column(db.Integer, db.ForeignKey('marketplace_orders.id', ondelete="CASCADE"), nullable=True,
                         default=None)
    order_item_id = db.Column(db.Integer, db.ForeignKey('marketplace_order_items.id', ondelete="CASCADE"), nullable=True,
                         default=None)
    changed_from = db.Column(db.Integer, default=0)
    changed_to = db.Column(db.Integer, default=0)
    order = db.relationship("MOrder", backref="order_statuses")
    order_item = db.relationship("MOrderItem", backref="order_item_statuses")

    created_at = db.Column(db.DateTime, default=db.func.now())
    updated_at = db.Column(db.DateTime, default=db.func.now(), onupdate=db.func.now())
예제 #29
0
class MSellerCart(db.Model):
    __tablename__ = 'marketplace_seller_carts'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    cart_id = db.Column(db.Integer, db.ForeignKey('marketplace_carts.id', ondelete="CASCADE"))
    seller_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete="CASCADE"))
    shipping_method_id = db.Column(db.Integer, db.ForeignKey('marketplace_shipping_methods.id', ondelete="CASCADE"),
                                   nullable=True, default=None)
    buyer_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete="CASCADE"), nullable=True, default=None)
    current_currency_id = db.Column(db.Integer, db.ForeignKey('marketplace_currency.id', ondelete="CASCADE"))

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

    cart = db.relationship("MCart", backref="seller_carts")
    seller = db.relationship("User", backref="seller_carts_active", primaryjoin="User.id == MSellerCart.seller_id")
    buyer = db.relationship("User", backref="my_seller_carts", primaryjoin="User.id == MSellerCart.buyer_id")
    currency = db.relationship("MCurrency")
    shipping_method = db.relationship("MShippingMethod", backref="seller_cart_shipping")
예제 #30
0
class Message(db.Model):
    __tablename__ = 'messages'
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer,
                        db.ForeignKey('users.id', ondelete='cascade'))
    recipient_id = db.Column(db.Integer,
                             db.ForeignKey('users.id', ondelete="CASCADE"))
    body = db.Column(db.Text)
    timestamp = db.Column(db.DateTime, index=True, default=db.func.now())
    created_at = db.Column(db.DateTime, default=db.func.now())
    updated_at = db.Column(db.DateTime,
                           default=db.func.now(),
                           onupdate=db.func.now())
    read_at = db.Column(db.DateTime, default=None, nullable=True)

    user = db.relationship('User', primaryjoin="Message.user_id==User.id")

    def __repr__(self):
        return '<Message {}>'.format(self.body)