class Resource(db.Model): __tablename__ = "resources" id = db.Column(db.Integer, primary_key=True) filename = db.Column(db.String(50), nullable=False) type = db.Column(db.String(50), nullable=False) category = db.Column(db.String(50), nullable=False) created_date = db.Column(db.DateTime, default=datetime.datetime.now(), nullable=False) # product_id = db.Column(db.Integer, db.ForeignKey('product.id'), nullable=True) category_id = db.Column(db.Integer, db.ForeignKey('categories.id'), nullable=False) subcategory_id = db.Column(db.Integer, db.ForeignKey('subcategories.id'), nullable=True) def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class Course(db.Model): __tablename__ = 'courses' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100)) created_date = db.Column(db.DateTime, default=datetime.now()) submitted = db.Column(db.Boolean, default=False) teacher_id = db.Column(db.Integer, nullable=False) sections = db.relationship('Section', backref='course', lazy=True, cascade="all, delete, delete-orphan") grade_id = db.Column(db.Integer, db.ForeignKey('grades.id'), nullable=False) def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class Section(db.Model): __tablename__ = 'sections' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100)) created_date = db.Column(db.DateTime, default=datetime.now()) course_id = db.Column(db.Integer, db.ForeignKey('courses.id'), nullable=False) quizzes = db.relationship('Quiz', backref='section', lazy=True, cascade="all, delete, delete-orphan") quiz_histories = db.relationship('QuizHistory', backref='section', lazy=True, cascade="all, delete, delete-orphan") sub_sections = db.relationship('SubSection', backref='section', lazy=True, cascade="all, delete, delete-orphan") def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class Size(PkModel): __tablename__ = "size" name = db.Column(db.String(100)) product_id = db.Column(db.Integer, db.ForeignKey('product.id'))
class Quiz(db.Model): __tablename__ = 'quizes' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100)) question = db.Column(db.String(100)) section_id = db.Column(db.Integer, db.ForeignKey('sections.id'), nullable=False) # https://stackoverflow.com/questions/60805/getting-random-row-through-sqlalchemy answers = db.relationship('Answer', backref='quiz', lazy=True, cascade="all, delete, delete-orphan", order_by='func.random()') def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class OrderItem(PkModel): __tablename__ = "order_items" time = db.Column(db.DateTime, default=datetime.now()) quantity = db.Column(db.Integer) color = db.Column(db.String(100)) size = db.Column(db.String(100)) status = db.Column(db.String(120), default="pending") barcode = db.Column(db.String(100), nullable=False) order_id = db.Column(db.Integer, db.ForeignKey('orders.id'), nullable=False) def add(self): db.session.add(self) def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit() def get_product(self): return Product.query.filter_by(barcode=self.barcode).first()
class BillingDetail(db.Model): __tablename__ = "billing_details" id = db.Column(db.Integer, primary_key=True) first_name = db.Column(db.String(100)) last_name = db.Column(db.String(100)) country = db.Column(db.String(100)) street = db.Column(db.String(100)) town_city = db.Column(db.String(100)) phone = db.Column(db.String(100)) email = db.Column(db.String(100)) order_notes = db.Column(db.String(100)) order_id = db.Column(db.Integer, db.ForeignKey("orders.id")) def add(self): db.session.add(self) def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class LightCourse(db.Model): __tablename__ = 'light_courses' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100)) created_date = db.Column(db.DateTime, default=datetime.now()) submitted = db.Column(db.Boolean, default=True) teacher_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) grade_id = db.Column(db.Integer, db.ForeignKey('grades.id'), nullable=False) chapters = db.relationship('LightChapter', backref='course', lazy=True, cascade="all, delete, delete-orphan") quizzes = db.relationship('LightQuiz', backref='course', lazy=True, cascade="all, delete, delete-orphan") light_certificate = db.relationship('LightCertificate', backref='course', lazy=True, cascade="all, delete, delete-orphan", uselist=False) light_certificate_requests = db.relationship( 'LightCertificateRequest', backref='course', lazy=True, cascade="all, delete, delete-orphan") light_quiz_histories = db.relationship( 'LightQuizHistory', backref='course', lazy=True, cascade="all, delete, delete-orphan") def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class CertificateRequest(db.Model): __tablename__ = 'certificate_requests' id = db.Column(db.Integer, primary_key=True) course_taker_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) course_id = db.Column(db.Integer, db.ForeignKey('courses.id'), nullable=False) def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class ChapterHistory(db.Model): __tablename__ = 'section_histories' id = db.Column(db.Integer, primary_key=True) person_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) subsection_id = db.Column(db.Integer, db.ForeignKey('sub_sections.id'), nullable=False) completed = db.Column(db.Boolean, default=True, nullable=True) def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class HomeworkSubmission(db.Model): __tablename__ = 'homework_submissions' id = db.Column(db.Integer, primary_key=True) course_taker_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) subsection_id = db.Column(db.Integer, db.ForeignKey('sub_sections.id'), nullable=False) filename = db.Column(db.String(100)) def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class Certificate(db.Model): __tablename__ = 'certificates' id = db.Column(db.Integer, primary_key=True) course_taker_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) course_id = db.Column(db.Integer, db.ForeignKey('courses.id'), nullable=False) date_given = db.Column(db.DateTime, default=datetime.now()) filename = db.Column(db.String(100)) def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class Product(db.Model): __tablename__ = "product" barcode = db.Column(db.String(100), primary_key=True) price = db.Column(db.Float) name = db.Column(db.String(100)) description = db.Column(db.String(300)) date = db.Column(db.String(100)) in_stock = db.Column(db.Integer) discontinued = db.Column(db.Boolean) selling_price = db.Column(db.Float) category_name = db.Column(db.String(100), db.ForeignKey("category.name"), nullable=False)
class LightHomeworkEvaluation(db.Model): __tablename__ = 'light_homework_evaluations' id = db.Column(db.Integer, primary_key=True) course_taker_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) chapter_id = db.Column(db.Integer, db.ForeignKey('light_chapters.id'), nullable=False) notes = db.Column(db.String(100)) filename = db.Column(db.String(100)) def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class LightQuizHistory(db.Model): ''' chapter quiz completed ''' __tablename__ = 'light_quiz_histories' id = db.Column(db.Integer, primary_key=True) person_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) light_course_id = db.Column(db.Integer, db.ForeignKey('light_courses.id'), nullable=False) completed = db.Column(db.Boolean, default=True, nullable=True) def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class SubCategory(PkModel): __tablename__ = "subcategories" name = db.Column(db.String(100), nullable=False) category_id = db.Column(db.Integer, db.ForeignKey("categories.id")) products = db.relationship("Product", backref="subcategory", lazy=True) resources = db.relationship("Resource", backref="resource_subcategory", lazy=True) @classmethod def category_exists(cls, name): return db.session.query( exists().where(cls.name == name.lower())).scalar() @validates("name") def convert_lower(self, key, value): return value.lower() def get_num_products(self): return len(self.products) def get_one_image_url(self): if len(self.products) > 0: product = self.products[0] if len(product.resources) == 0: if len(self.resources) == 0: return url_for('static', filename='default/default_subcategory.jpg') else: resource = self.resources[0] return url_for('static', filename='uploads/subcategory/{}'.format( resource.filename)) else: resource = product.resources[0] return url_for('static', filename='uploads/products/{}'.format( resource.filename)) else: if len(self.resources) == 0: return url_for('static', filename='default/default_subcategory.jpg') else: resource = self.resources[0] return url_for('static', filename='uploads/subcategory/{}'.format( resource.filename))
class LightHomework(db.Model): __tablename__ = 'light_homeworks' id = db.Column(db.Integer, primary_key=True) chapter_id = db.Column(db.Integer, db.ForeignKey('light_chapters.id'), nullable=False) filename = db.Column(db.String(100)) # uploads/homework/ def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class Answer(db.Model): __tablename__ = 'answers' id = db.Column(db.Integer, primary_key=True) string = db.Column(db.String(100)) correct = db.Column(db.Boolean) quizz_id = db.Column(db.Integer, db.ForeignKey('quizes.id'), nullable=False) def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class PaymentOption(db.Model): __tablename__ = "paymentoptions" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(300)) text = db.Column(db.String(300)) order_id = db.Column(db.Integer, db.ForeignKey("orders.id")) def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class DeliveryOption(db.Model): __tablename__ = "deliveryoptions" id = db.Column(db.Integer, primary_key=True) option = db.Column(db.String(300)) price = db.Column(db.Float) order_id = db.Column(db.Integer, db.ForeignKey("orders.id")) def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class Coupon(db.Model): __tablename__ = "coupons" id = db.Column(db.Integer, primary_key=True) string = db.Column(db.String(300)) type = db.Column(db.String(300)) # percentage, value value = db.Column(db.String(300)) order_id = db.Column(db.Integer, db.ForeignKey("orders.id")) def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class Resource(db.Model): __tablename__ = 'resources' id = db.Column(db.Integer, primary_key=True) type = db.Column(db.String(100), default='text') filename = db.Column(db.String(100)) path = db.Column(db.String(100)) text = db.Column(db.Text) sub_section_id = db.Column(db.Integer, db.ForeignKey('sub_sections.id'), nullable=False) def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class User(UserMixin, db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(100)) password = db.Column(db.String(128)) name = db.Column(db.String(120)) role = db.Column(db.String(120)) pass_changed = db.Column(db.Boolean, default=False) courses = db.relationship("Course", secondary=course_subs, cascade = "all, delete")# !subs- teacher, students light_courses = db.relationship("LightCourse", secondary=light_course_subs, cascade = "all, delete")# !subs- teacher, students quiz_histories = db.relationship('QuizHistory', backref='person', lazy=True, cascade="all, delete, delete-orphan") grade_id = db.Column(db.Integer, db.ForeignKey('grades.id')) def set_hash(self, password): self.password = generate_password_hash(password, method="sha256") def check_hash(self, password): return check_password_hash(self.password, password) def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class SubSection(db.Model): __tablename__ = 'sub_sections' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100)) created_date = db.Column(db.DateTime, default=datetime.now()) section_id = db.Column(db.Integer, db.ForeignKey('sections.id'), nullable=False) resources = db.relationship('Resource', backref='sub_section', lazy=True, cascade="all, delete, delete-orphan") homeworks = db.relationship('Homework', backref='sub_section', lazy=True, cascade="all, delete, delete-orphan") homework_submissions = db.relationship( 'HomeworkSubmission', backref='sub_section', lazy=True, cascade="all, delete, delete-orphan") homework_evaluations = db.relationship( 'HomeworkEvaluation', backref='sub_section', lazy=True, cascade="all, delete, delete-orphan") def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
from shopyoapi.init import db from shopyoapi.models import PkModel from flask import url_for # from modules.box__ecommerce.pos.models import Transaction transaction_helpers = db.Table( "transaction_helpers", db.Column("product_barcode", db.Integer, db.ForeignKey("product.id")), db.Column("transaction_id", db.Integer, db.ForeignKey("transactions.id")), ) class Product(PkModel): __tablename__ = "product" barcode = db.Column(db.String(100)) price = db.Column(db.Float) name = db.Column(db.String(100)) description = db.Column(db.String(300)) date = db.Column(db.String(100)) in_stock = db.Column(db.Integer) discontinued = db.Column(db.Boolean) selling_price = db.Column(db.Float) is_onsale = db.Column(db.Boolean, default=False) is_featured = db.Column(db.Boolean, default=False) subcategory_name = db.relationship("SubCategory", backref=db.backref("subcategory", uselist=False)) transactions = db.relationship(
from flask_login import AnonymousUserMixin from flask_login import UserMixin from flask_login import login_manager from itsdangerous import URLSafeTimedSerializer from werkzeug.security import check_password_hash from werkzeug.security import generate_password_hash from shopyoapi.init import db from shopyoapi.models import PkModel role_user_link = db.Table( "role_user_link", db.Column( "user_id", db.Integer, db.ForeignKey("users.id", ondelete="CASCADE"), primary_key=True, ), db.Column( "role_id", db.Integer, db.ForeignKey("roles.id", ondelete="CASCADE"), primary_key=True, ), ) class AnonymousUser(AnonymousUserMixin): def set_password(self, password): return False
class Product(PkModel): __tablename__ = "product" barcode = db.Column(db.String(100)) price = db.Column(db.Float) name = db.Column(db.String(100)) description = db.Column(db.String(300)) date = db.Column(db.String(100)) in_stock = db.Column(db.Integer) discontinued = db.Column(db.Boolean) selling_price = db.Column(db.Float) is_onsale = db.Column(db.Boolean, default=False) is_featured = db.Column(db.Boolean, default=False) subcategory_name = db.relationship("SubCategory", backref=db.backref("subcategory", uselist=False)) transactions = db.relationship( "Transaction", secondary=transaction_helpers, backref="products", cascade="all, delete", ) resources = db.relationship("Resource", backref="resources", lazy=True, cascade="all, delete") colors = db.relationship('Color', backref='color_product', lazy=True, cascade="all, delete, delete-orphan") sizes = db.relationship('Size', backref='size_product', lazy=True, cascade="all, delete, delete-orphan") # subcategory_id = db.Column(db.Integer, db.ForeignKey('subcategories.id'), nullable=False) def get_color_string(self): return '\n'.join([c.name for c in self.colors]) def get_size_string(self): return '\n'.join([s.name for s in self.sizes]) def get_one_image_url(self): if len(self.resources) == 0: return url_for('static', filename='default/default_product.jpg') else: resource = self.resources[0] return url_for('static', filename='uploads/products/{}'.format( resource.filename)) def get_page_url(self): return url_for('shop.product', product_barcode=self.barcode) def add(self): db.session.add(self) def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
from werkzeug.security import generate_password_hash, check_password_hash from shopyoapi.init import db from flask_login import UserMixin from modules.course.models import Course from modules.lightcourse.models import LightCourse from modules.course.models import QuizHistory course_subs = db.Table('course_subs', db.Column('user_id', db.Integer, db.ForeignKey('users.id')), db.Column('course_id', db.Integer, db.ForeignKey('courses.id')) ) light_course_subs = db.Table('light_course_subs', db.Column('user_id', db.Integer, db.ForeignKey('users.id')), db.Column('light_course_id', db.Integer, db.ForeignKey('light_courses.id')) ) class User(UserMixin, db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(100)) password = db.Column(db.String(128)) name = db.Column(db.String(120)) role = db.Column(db.String(120)) pass_changed = db.Column(db.Boolean, default=False) courses = db.relationship("Course", secondary=course_subs, cascade = "all, delete")# !subs- teacher, students light_courses = db.relationship("LightCourse", secondary=light_course_subs,
def insert(self): db.session.add(self) db.session.commit() def update(self): db.session.commit() def delete(self): db.session.delete(self) db.session.commit() learningpath_subs = db.Table( 'learningpath_subs', db.Column('learningpath_id', db.Integer, db.ForeignKey('learning_paths.id')), db.Column('course_id', db.Integer, db.ForeignKey('courses.id'))) class LearningPath(db.Model): __tablename__ = 'learning_paths' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100)) courses = db.relationship("Course", secondary=learningpath_subs, cascade="all, delete") def insert(self): db.session.add(self) db.session.commit()
""" .. module:: AdminModels :synopsis: Contains model of a user Record """ from werkzeug.security import generate_password_hash, check_password_hash from shopyoapi.init import db from flask_login import UserMixin from uuid import uuid4 role_helpers = db.Table( 'role_helpers', db.Column('user_id', db.Integer, db.ForeignKey('users.id')), db.Column('role_id', db.Integer, db.ForeignKey('roles.id'))) class User(UserMixin, db.Model): """ User model """ __tablename__ = "users" id = db.Column(db.String(10), primary_key=True) username = db.Column(db.String(100), unique=True) password = db.Column(db.String(128)) admin_user = db.Column(db.Boolean, default=False) roles = db.relationship("Role", secondary=role_helpers, cascade="all, delete") def __init__(self, **kwargs):