class Post(db.Model): id = db.Column(db.Integer,primary_key=True) tweet = db.Column(db.String(500),nullable=False) stamp = db.Column(db.String(20),nullable=False) user_id = db.Column(db.Integer,db.ForeignKey('user_mgmt.id'),nullable=False) retweets = db.relationship('Retweet',backref='ori_post',lazy=True) timeline = db.relationship('Timeline',backref='from_post',lazy=True)
class Showing(db.Model): id = db.Column(db.Integer, primary_key=True) time = db.Column(db.String(10), nullable=False) movie_id = db.Column(db.Integer, db.ForeignKey('movie.id'), nullable=False) movie = db.relationship('Movie', backref=db.backref('showing', lazy=True)) theater_id = db.Column(db.Integer, db.ForeignKey('theater.id'), nullable=False) theater = db.relationship('Theater', backref=db.backref('showing', lazy=True)) def __repr__(self): return "{} {} in Theater {}".format(self.time, self.movie, self.theater_id)
class Theater(db.Model): id=db.Column(db.Integer,primary_key=True) rowNumber=db.Column(db.Integer) #for configurable theater sizes rowSize=db.Column(db.Integer) #for configurable theater sizes location_id = db.Column(db.Integer, db.ForeignKey('location.id'), nullable=False) location = db.relationship('Location', backref=db.backref('theater', lazy=True)) seats = db.relationship('Seat', back_populates='theater', lazy=True) def __repr__(self): return "{}x{} Theater. id: {}".format(self.rowNumber, self.rowSize, self.id)
class Movie(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), unique=True, nullable=False) genre_id = db.Column(db.Integer, db.ForeignKey('genre.id'), nullable=False) genre = db.relationship('Genre', backref=db.backref('movie', lazy=True)) cast = db.relationship('Actor', secondary=movies_actors_association, lazy=True, backref=db.backref('movies', lazy=True)) def __repr__(self): return self.title
class User_mgmt(UserMixin, db.Model): id = db.Column(db.Integer,primary_key=True) username = db.Column(db.String(15),nullable=False,unique=True) email = db.Column(db.String(50),nullable=False,unique=True) password = db.Column(db.String(80),nullable=False) image_file = db.Column(db.String(20),nullable=False,default='default.jpg') bg_file = db.Column(db.String(20),nullable=False,default='default_bg.jpg') bio = db.Column(db.String(200)) date = db.Column(db.String(20)) bday = db.Column(db.String(10)) posts = db.relationship('Post',backref='author',lazy=True) retwitted = db.relationship('Retweet',backref='retwitter',lazy=True)
class Game(db.Model): __tablename__ = 'game' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(50), nullable=False, unique=True) release_date = db.Column(db.DateTime, nullable=False) posts = db.relationship('Post', backref='game', lazy=True, cascade="all,delete-orphan") followers = db.relationship('User', secondary='user_game') platforms = db.relationship('Platform', secondary='game_platform') def __repr__(self): return f'{self.title}-{self.release_date}'
class Simulation(db.Model): id = db.Column(db.Integer, primary_key=True) owner = db.Column(db.Integer, db.ForeignKey('users.id')) owner_relationship = db.relationship('User', backref=db.backref('simulations', lazy='dynamic')) parent = db.Column(db.Integer, db.ForeignKey('simulation.id'), nullable=True) # protein name * protein = db.Column(db.String(500)) # force field * force_field = db.Column(db.String(500)) # engine * engine = db.Column(db.String(255)) # title * title = db.Column(db.String(255), unique=True) # date * date = db.Column(db.DateTime) def __init__(self, owner, title, engine, force_field, protein, parent=None): self.date = datetime.utcnow() self.owner = owner self.title = title self.engine = engine self.force_field = force_field self.protein = protein if parent is not None: self.parent = parent
class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), unique=True, nullable=False) email = db.Column(db.String(64), unique=True, nullable=False) image_file = db.Column(db.String(20), nullable=False, default='default.jpg') password = db.Column(db.String(60), nullable=False) posts = db.relationship('Post', backref='author', lazy=True) def get_reset_token(self, expires_sec=1800): s = Serializer(current_app.config['SECRET_KEY'], expires_sec) return s.dumps({'user_id': self.id}).decode('utf-8') def __repr__(self): return f"User('{self.username}', '{self.email}', '{self.image_file}')" @staticmethod def verify_reset_token(token): s = Serializer(current_app.config['SECRET_KEY']) try: user_id = s.loads(token)['user_id'] except: return None return User.query.get(user_id)
class Platform(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(20), nullable=False, unique=True) games = db.relationship('Game', secondary='game_platform') def __repr__(self): return self.name
class SimFile(db.Model): id = db.Column(db.Integer, primary_key=True) filename = db.Column(db.String(255)) simulation = db.Column(db.Integer, db.ForeignKey('simulation.id')) simulation_relationship = db.relationship('Simulation', backref=db.backref('files', lazy='dynamic')) def __init__(self, filename, simulation): self.filename = filename self.simulation = simulation.id
class Seat(db.Model): id=db.Column(db.Integer,primary_key=True) number= db.Column(db.String(5), nullable=False) theater_id = db.Column(db.Integer, db.ForeignKey('theater.id'), nullable=False) theater = db.relationship('Theater', back_populates='seats') #user_id = db.Column(db.Integer, db.ForeignKey('user.id')) #user = db.relationship('User', back_populates='reservations') def __repr__(self): return self.number
class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True) first_name = db.Column(db.String(50), nullable=False) last_name = db.Column(db.String(50), nullable=False) email = db.Column(db.String(120), nullable=False, unique=True) password = db.Column(db.String(200), nullable=False) status = db.Column(db.String(10), nullable=False, default='PENDING') is_admin = db.Column(db.Boolean, nullable=False, default=True) date_created = db.Column(db.DateTime, nullable=False, default=datetime.utcnow()) address = db.Column(db.String(100), nullable=False, default='Earth') posts = db.relationship('Post', backref='author', lazy=True, cascade="all,delete-orphan") comments = db.relationship('Comment', backref='author', lazy=True, cascade="all,delete-orphan") following_games = db.relationship('Game', secondary='user_game') def generate_token(self, expire_min=30): return jwt.encode( { 'user_id': self.id, 'first_name': self.first_name, 'last_name': self.last_name, 'email': self.email, 'exp': datetime.utcnow() + timedelta(minutes=expire_min) }, application.config['SECRET_KEY']).decode('utf-8') @staticmethod def verify_token(token): try: data = jwt.decode(token, application.config['SECRET_KEY']) return data except jwt.ExpiredSignatureError: return None def __repr__(self): return f'{self.first_name} {self.last_name}, {self.email}'
class Category(db.Model): __tablename__ = 'categories' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255)) products = db.relationship('Product', backref='category', lazy='select') def __init__(self, name): self.name = name def __repr__(self): return '<Category %r' % (self.name)
class Users(UserMixin, db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(50), unique=True, index=True) email = db.Column(db.String(100), unique=True, index=True) password_hash = db.Column(db.String(200)) posts = db.relationship("Posts", backref="author", lazy="dynamic") def __repr__(self): return f"<id : { self.id }>\n<username : { self.username }>\n<email : { self.email }>" 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)
class User(db.Model, UserMixin): __tablename__ = "users" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255)) email = db.Column(db.String(255), unique=True) password = db.Column(db.String(255)) active = db.Column(db.Boolean()) confirmed_at = db.Column(db.DateTime()) roles = db.relationship('Role', secondary=roles_users, backref=db.backref('users', lazy='dynamic')) def __str__(self): return '<User id=%s email=%s>' % (self.id, self.email)
class Post(db.Model): __tablename__ = 'post' id = db.Column(db.Integer, primary_key=True) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow()) title = db.Column(db.String(100), nullable=False) content = db.Column(db.Text, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) game_id = db.Column(db.Integer, db.ForeignKey('game.id'), nullable=False) comments = db.relationship('Comment', backref='post', lazy=True, cascade="all,delete-orphan") def __repr__(self): return f'{self.title}, {self.author.first_name+" "+self.author.last_name}'
class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) first_name = db.Column(db.String(255)) last_name = db.Column(db.String(255)) email = db.Column(db.String(255), unique=True) password = db.Column(db.String(255)) active = db.Column(db.Boolean()) confirmed_at = db.Column(db.DateTime()) roles = db.relationship('Role', secondary=roles_users, backref=db.backref('users', lazy='dynamic')) #reservations = db.relationship('Seat',back_populates='user', lazy=True) @classmethod def find_by_username(cls, username): return cls.query.filter_by(email=username).first() def __str__(self): return self.email
# date * date = db.Column(db.DateTime) def __init__(self, owner, title, engine, force_field, protein, parent=None): self.date = datetime.utcnow() self.owner = owner self.title = title self.engine = engine self.force_field = force_field self.protein = protein if parent is not None: self.parent = parent Simulation.parent_relationship = db.relationship( "Simulation", backref=db.backref("child", lazy="dynamic"), remote_side=Simulation.id ) @app.route("/simulations/new/", methods=["GET", "POST"]) def new_sim(): if request.method == "POST": owner = current_user title = request.form.get("title", None) engine = request.form.get("engine", None) force_field = request.form.get("force_field", None) protein = request.form.get("protein", None) if title is None or engine is None or force_field is None or protein is None: abort(401) sim = Simulation(owner=owner.id, title=title, engine=engine, force_field=force_field, protein=protein) db.session.add(sim)
# title * title = db.Column(db.String(255), unique=True) # date * date = db.Column(db.DateTime) def __init__(self, owner, title, engine, force_field, protein, parent=None): self.date = datetime.utcnow() self.owner = owner self.title = title self.engine = engine self.force_field = force_field self.protein = protein if parent is not None: self.parent = parent Simulation.parent_relationship = db.relationship('Simulation', backref=db.backref('child', lazy='dynamic'), remote_side=Simulation.id) @app.route('/simulations/new/', methods=['GET', 'POST']) def new_sim(): if request.method == 'POST': owner = current_user title = request.form.get('title', None) engine = request.form.get('engine', None) force_field = request.form.get('force_field', None) protein = request.form.get('protein', None) if title is None or engine is None or force_field is None or protein is None: abort(401) sim = Simulation(owner=owner.id, title=title, engine=engine, force_field=force_field, protein=protein) db.session.add(sim)