class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(255), nullable=True, default="User") email = db.Column(db.String(255), index=True, unique=True, nullable=False) password = db.Column(db.String(255), nullable=False) registered_on = db.Column(db.DateTime, nullable=False) admin = db.Column(db.Boolean, nullable=False, default=False) concepts = db.relationship('Concepts', backref="users", cascade="all, delete-orphan", lazy="dynamic") def __init__(self, name, email, password, admin=False): self.name = name self.email = email self.password = bcrypt.generate_password_hash(password) self.registered_on = datetime.datetime.now() self.admin = admin def is_authenticated(self): return True def is_active(self): return True def is_anonymous(self): return False def get_id(self): return self.id def __repr__(self): return '<id {}>'.format(self.id)
class Concepts(db.Model, CRUD): __tablename__ = 'concepts' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(255), nullable=False, unique=True) help_text = db.Column(db.String(255)) created_on = db.Column(db.DateTime, nullable=False) edited_on = db.Column(db.DateTime, nullable=False) creator_id = db.Column(db.Integer, db.ForeignKey('users.id')) creator = db.relationship("User", back_populates="concepts") creator_name = db.Column(db.String(255), nullable=False) concept_type = db.Column(db.String(20), default='bipolar', nullable=False) input_terms = db.Column(JSON) def __init__(self, name, creator_id, concept_type, input_terms, creator_name): self.name = name self.creator_id = creator_id self.concept_type = concept_type self.input_terms = input_terms self.created_on = datetime.datetime.now() self.edited_on = datetime.datetime.now() self.creator_name = creator_name def get_id(self): return self.id def __repr__(self): return '<id {}>'.format(self.id)
class Assignment(db.Model, CRUD): __tablename__ = 'assignments' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(255), nullable=False, unique=True) title = db.Column(db.String(255)) description = db.Column(db.Text) created_on = db.Column(db.DateTime, nullable=False) edited_on = db.Column(db.DateTime, nullable=False) creator_id = db.Column(db.Integer, db.ForeignKey('users.id')) creator = db.relationship("User", back_populates="assignments") creator_name = db.Column(db.String(255), nullable=False) submissions = db.relationship('Submission', backref='assignments') #lazy=True themes = db.relationship('Theme', backref='assignments') #submissions = db.relationship('Address', lazy='select', backref=db.backref('person', lazy='joined')) def __init__(self, name, title, desc, creator_id, creator_name): self.name = name self.title = title self.description = desc self.creator_id = creator_id self.created_on = datetime.datetime.now() self.edited_on = datetime.datetime.now() self.creator_name = creator_name def get_id(self): return self.id def __repr__(self): return '<id {}>'.format(self.id)