class Cart(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) product_id = db.Column(db.Integer, db.ForeignKey('product.id'), nullable=False) def __repr__(self): return f"Cart('{self.user_id}', '{self.product_id}')"
class Category(db.Model): __table_args__ = {'extend_existing': True} categoryid = db.Column(db.Integer, primary_key=True) category_name = db.Column(db.String(100), nullable=False) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) def __repr__(self): return f"Category('{self.categoryid}', '{self.category_name}')"
class Order(db.Model): id = db.Column(db.Integer, primary_key=True) orderTime = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) # one to many relationship cartId = db.Column(db.Integer, db.ForeignKey('cartItem.id'),nullable=True) addressId = db.Column(db.Integer, db.ForeignKey('address.id'),nullable=True) def __repr__(self): return f"{self.orderTime}"
class Brand(db.Model): __tablename__ = 'brand' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.Text, nullable=False) slug = db.Column(db.Text, nullable=False, unique=True) description = db.Column(db.Text, nullable=True) imageFile = db.Column(db.Text, nullable=False, default='Brand.jpg') def __repr__(self): return f"Post('{self.name}', '{self.description}', '{self.imageFile}')"
class Room(db.Model): id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(20)) description = db.Column(db.Text) address = db.Column(db.String(70), nullable=False) available_from = db.Column(db.Date, nullable=False) available_to = db.Column(db.Date, nullable=False) price = db.Column(db.Float, nullable=False) max_persons = db.Column(db.Integer, nullable=False, default=1) owner_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) def __repr__(self): return f"Room({self.id}, '{self.name}', '{self.address}', '{self.available_from}', '{self.available_to}', '{self.price}', '{self.max_persons}')" def as_dict(self): return { 'id': self.id, 'name': str(self.name), 'description': str(self.description), 'address': str(self.address), 'available_from': str(self.available_from), 'available_to': str(self.available_to), 'price': str(self.price), 'max_persons': str(self.max_persons), 'owner_id': self.owner_id }
class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) firstname = db.Column(db.String(20), unique=True, nullable=False) lastname = db.Column(db.String(20), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) image_file = db.Column(db.String(20), nullable=False, default='default.jpg') password = db.Column(db.String(60), nullable=False) utype = db.Column(db.String(60), default='user') cart = db.relationship('Cart', backref='author', lazy=True) instagram_id = db.Column(db.String(60), nullable=True) facebook_id = db.Column(db.String(60), nullable=True) def get_reset_token(self, expires_sec=1800): s = Serializer(app.config['SECRET_KEY'], expires_sec) return s.dumps({'user_id': self.id}).decode('utf-8') @staticmethod def verify_reset_token(token): s = Serializer(app.config['SECRET_KEY']) try: user_id = s.loads(token)['user_id'] except: return None return User.query.get(user_id) def __repr__(self): return f"User('{self.username}', '{self.email}', '{self.image_file}')"
class Product(db.Model): __table_args__ = {'extend_existing': True} productid = db.Column(db.Integer, primary_key=True) sku = db.Column(db.String(100), nullable=False) product_name = db.column(db.String(100)) description = db.Column(db.String(100), nullable=False) image = db.Column(db.String(100), nullable=False) quantity = db.Column(db.Integer, nullable=False) regular_price = db.Column(db.DECIMAL) discounted_price = db.Column(db.DECIMAL) product_rating = db.Column(db.DECIMAL) product_review = db.Column(db.String(100), nullable=True) def __repr__(self): return f"Product('{self.productid}','{self.product_name}','{self.description}', '{self.image}', " \ f" '{self.quantity}', '{self.regular_price}', '{self.discounted_price}')"
class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(30), nullable=False) surname = db.Column(db.String(30), nullable=False) username = db.Column(db.String(20), unique=True, nullable=False) email = db.Column(db.String(40), unique=True, nullable=False) birth_date = db.Column(db.Date) password = db.Column(db.String(20), nullable=False) picture = db.Column(db.String(40), default='/static/img/users/default.png') privilege = db.Column(db.Boolean(), default=False) def __repr__(self): return f"User({self.id}, '{self.name}', '{self.surname}', '{self.username}', '{self.email}', '{self.birth_date}', '{self.privilege}')" def as_dict(self): return { 'id': self.id, 'name': str(self.name), 'surname': str(self.surname), 'username': str(self.username), 'email': str(self.email), 'birth_date': str(self.birth_date), 'picture': str(self.picture), 'privilege': self.privilege }
class Order(db.Model): __table_args__ = {'extend_existing': True} orderid = db.Column(db.Integer, primary_key=True) order_date = db.Column(db.DateTime, nullable=False) total_price = db.Column(db.DECIMAL, nullable=False) userid = db.Column(db.Integer, db.ForeignKey('user.userid'), nullable=False, primary_key=True) def __repr__(self): return f"Order('{self.orderid}', '{self.order_date}','{self.total_price}','{self.userid}'')"
class CartItem(db.Model): __tablename__ = 'cartItem' id = db.Column(db.Integer, primary_key=True) userId = db.Column(db.Integer,db.ForeignKey('user.id', ondelete='SET NULL'),nullable=True) productId = db.Column(db.Integer, db.ForeignKey('product.id', ondelete='SET NULL'),nullable=True) quanitity = db.Column(db.Integer,nullable=True) order = db.relationship('Order',backref='cartItem',lazy=True) def __reper__(self): return f'{self.id}'
class Category(db.Model, UserMixin): __tablename__ = "category" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(256), default="N/A") photo = db.Column(db.String(64), default="default.jpg") products = db.relationship("Product", backref="the_category", lazy="dynamic") def __init__(self, name, photo="default.jpg"): self.name = name self.photo = photo
class OrderedProduct(db.Model): __table_args__ = {'extend_existing': True} ordproductid = db.Column(db.Integer, primary_key=True) orderid = db.Column(db.Integer, db.ForeignKey('order.orderid'), nullable=False) productid = db.Column(db.Integer, db.ForeignKey('product.productid'), nullable=False) quantity = db.Column(db.Integer, nullable=False) def __repr__(self): return f"Order('{self.ordproductid}', '{self.orderid}','{self.productid}','{self.quantity}')"
class Cart(db.Model): __table_args__ = {'extend_existing': True} userid = db.Column(db.Integer, db.ForeignKey('user.userid'), nullable=False, primary_key=True) productid = db.Column(db.Integer, db.ForeignKey('product.productid'), nullable=False, primary_key=True) quantity = db.Column(db.Integer, nullable=False) def __repr__(self): return f"Cart('{self.userid}', '{self.productid}, '{self.quantity}')"
class Rating(db.Model): __tablename__ = 'rating' id = db.Column(db.Integer, primary_key=True) rate = db.Column(db.Integer, nullable=True) comments = db.Column(db.Text, nullable=True) userId = db.Column(db.Integer, db.ForeignKey('user.userId'), nullable=False) product_id = db.Column(db.Integer, db.ForeignKey('product.id'), nullable=False) def __repr__(self): return f"Post('{self.rate}', '{self.comments}')"
class ProductCategory(db.Model): __table_args__ = {'extend_existing': True} categoryid = db.Column(db.Integer, db.ForeignKey('category.categoryid'), nullable=False, primary_key=True) productid = db.Column(db.Integer, db.ForeignKey('product.productid'), nullable=False, primary_key=True) created_on = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) def __repr__(self): return f"Product('{self.categoryid}', '{self.productid}')"
class User(db.Model, UserMixin): __tablename__ = 'user' userId = db.Column(db.Integer, primary_key=True) userName = db.Column(db.Text, unique=True, nullable=False) email = db.Column(db.Text, unique=True, nullable=False) imageFile = db.Column(db.Text, nullable=False, default='default.jpg') password = db.Column(db.Text, nullable=False) role = db.Column(db.Text, nullable=False, default='Customer') dateRegistered = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) # For relation with Shipping database table shippingDetails = db.relationship('Shipping', backref='shipping_user_id', lazy=True) # post = Post(title = form.title.data, content = form.content.data, user = current_user) productId = db.relationship('Product', backref='product_user_id', lazy=True) userCart = db.relationship('Cart', backref='cart_user_id', lazy=True) userOrder = db.relationship('Order', backref='order_user_id', lazy=True) userRating = db.relationship('Rating', backref='rating_user_id', lazy=True) def get_id(self): return (self.userId) def __repr__(self): return f"User('{self.userName}', '{self.email}', '{self.imageFile}', '{self.role}', '{self.dateRegistered}')"
class CustomerOrder(db.Model): id = db.Column(db.Integer, primary_key=True) #invoice = db.Column(db.String(20), unique=True, nullable=False) status = db.Column(db.String(20), default='Pending', nullable=False) customer_id = db.Column(db.Integer, db.ForeignKey('user.id'), unique=False, nullable=True) date_created = db.Column(db.DateTime, default=datetime.utcnow, nullable=False) orders = db.Column(JsonEcodedDict) #def __repr__(self): # return'<CustomerOrder %r>' % self.invoice def __repr__(self): return f"CustomerOrder('{self.id}', '{self.status}','{self.customer_id}')"
class Image(db.Model): __tablename__ = 'images' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(64), unique=True, nullable=False) filename = db.Column(db.String(128), unique=True,default='default.jpg') productId = db.Column(db.Integer, db.ForeignKey('product.id'),nullable=False) def __repr__(self): return self.name @property def url(self): return images.url(self.filename) @property def filepath(self): if self.filename is None: return return images.path(self.filename)
class Order(db.Model): __tablename__ = 'order' id = db.Column(db.Integer, primary_key=True) quantity = db.Column(db.Integer, nullable=False) color = db.Column(db.String(10), nullable=True) size = db.Column(db.String(10), nullable=True) status = db.Column(db.String(25), nullable=False) total = db.Column(db.Integer, nullable=False) deliveryType = db.Column(db.String(30), nullable=False, default='COD') orderDate = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) userId = db.Column(db.Integer, db.ForeignKey('user.userId'), nullable=False) product_id = db.Column(db.Integer, db.ForeignKey('product.id'), nullable=False) def __repr__(self): return f"Post('{self.quantity}', '{self.color}', '{self.size}', '{self.status}', '{self.total}', '{self.deliveryType}', '{self.orderDate}')"
class Product(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) image = db.Column(db.String(20), nullable=True, default='product.png') description = db.Column(db.Text, nullable=False) price = db.Column(db.Numeric(10, 2), nullable=False) discount = db.Column(db.Integer, default=0)
class SaleTransaction(db.Model): __table_args__ = {'extend_existing': True} transactionid = db.Column(db.Integer, primary_key=True) orderid = db.Column(db.Integer,db.ForeignKey('order.orderid'), nullable=False) transaction_date = db.Column(db.DateTime,nullable=False) amount = db.Column(db.DECIMAL, nullable=False) cc_number=db.Column(db.String(50), nullable=False) cc_type = db.Column(db.String(50), nullable=False) response = db.Column(db.String(50), nullable=False) def __repr__(self): return f"Order('{self.transactionid}', '{self.orderid}','{self.transactiondate}','{self.amount}', '{self.cc_number}','{self.cc_type}','{self.response}')"
class Shipping(db.Model): __tablename__ = 'shipping' id = db.Column(db.Integer, primary_key=True) fullName = db.Column(db.Text, nullable=False) contactNo = db.Column(db.Text, nullable=True) phoneNo = db.Column(db.Text, nullable=False) street = db.Column(db.Text, nullable=False) city = db.Column(db.Text, nullable=False) country = db.Column(db.Text, nullable=False) userId = db.Column(db.Integer, db.ForeignKey('user.userId'), nullable=False) def __repr__(self): return f"Post('{self.fullName}', '{self.contactNo}', '{self.phoneNo}', '{self.street}', '{self.city}', '{self.country}')"
class Product(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), unique=True, nullable=False) description = db.Column(db.String(500), nullable=False) price = db.Column(db.Float, nullable=False) category = db.Column(db.String(80), nullable=False) image_flie = db.Column(db.String(20), nullable=False, default='default.jpg')
class Coupon(db.Model, UserMixin): __tablename__ = "coupon" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(256), default="N/A") product = db.Column(db.Integer, db.ForeignKey("products.id"), nullable=False) discount_amount = db.Column(db.Numeric, nullable=False) qty = db.Column(db.Integer) start_date = db.Column(db.DateTime) end_date = db.Column(db.DateTime) db.relationship("Order", backref="the_coupon", lazy="dynamic")
class User(db.Model): id = db.Column(db.Integer, primary_key=True) first_name = db.Column(db.String(20), nullable=False) last_name = db.Column(db.String(20), nullable=False) created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) email = db.Column(db.String(120), unique=True, nullable=False) phone_number = db.Column(db.Integer, unique=True, nullable=False) password = db.Column(db.String(60), nullable=False) def __repr__(self): return f"User('{self.id }',{self.first_name}', '{self.last_name}', '{self.email}','{self.created_at}','{self.admin}')"
class Product(db.Model): id = db.Column(db.Integer, primary_key=True) product_name = db.Column(db.String(20), nullable=False) description = db.Column(db.Text, nullable=False) price = db.Column(db.Float, nullable=False) picture = db.Column(db.String(20), nullable=False, default='default.jpg') quantity = db.Column(db.Integer, nullable=False, default=0) category_id = db.Column(db.Integer, db.ForeignKey('category.id'), nullable=False) def __repr__(self): return f"User('{self.id}', '{self.name}', '{self.image_file}','{self.price}','{self.quantity}')"
class Address(db.Model): id = db.Column(db.Integer, primary_key=True) country = db.Column(db.String(50), nullable=False) city = db.Column(db.String(70), nullable=False) street = db.Column(db.String(100), nullable=False) Postcode = db.Column(db.Integer, nullable=False) userId = db.Column(db.Integer, db.ForeignKey('user.id',ondelete='SET NULL'),nullable=True) order = db.relationship('Order', backref='address',lazy=True) def __repr__(self): return f"{self.country},{self.city},{self.street}"
class Category(db.Model): __tablename__ = 'category' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.Text, nullable=False) slug = db.Column(db.Text, nullable=False, unique=True) parentCategory = db.Column(db.Text, nullable=False, default='None') description = db.Column(db.Text, nullable=True) imageFile = db.Column(db.Text, nullable=False, default='category.jpg') def __repr__(self): return f"Post('{self.name}', '{self.parentCategory}', '{self.description}', '{self.imageFile}')"
class Product(db.Model): __searchable__ = ['name','price'] id = db.Column(db.Integer, primary_key=True) images= db.relationship('Image',backref='product',lazy=True) name = db.Column(db.String(80),nullable=False) price = db.Column(db.Integer) offer = db.Column(db.Boolean(),default=False) digital = db.Column(db.Boolean(),default=False) detial = db.Column(db.Text(),nullable=True) cart_id = db.relationship('CartItem', backref='product',lazy=True) def __repr__(self): return f"{self.name, self.price}"
class User(db.Model,UserMixin): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) password = db.Column(db.String(60), nullable=False) confirmed_user =db.Column(db.Boolean(),default=False ) is_admin = db.Column(db.Boolean(),default=False) address = db.relationship('Address', backref='user',lazy=True) cart_id = db.relationship('CartItem', backref='user',lazy=True) def __repr__(self): return f"username = {self.username} , user_email = {self.email}"