class Password(db.Model): ''' El objeto Password contiene la estructura de la tabla Log de la base de datos hereda de db.Model de SQLALCHEMY, por lo que permite hacer querys a la BD al ser instanciado''' id = db.Column(db.Integer, primary_key=True) pwd = db.Column(db.String(30), nullable=False) question = db.Column(db.String(50), nullable=False) answer = db.Column(db.String(50), nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
class Ploteo(db.Model, UserMixin): plo_id=db.Column(db.Integer, primary_key=True) plo_fecha_creacion=db.Column(db.DateTime, default=func.now()) plo_lat=db.Column(db.String(15), nullable=False) plo_lon=db.Column(db.String(15), nullable=False) plo_fecha=db.Column(db.DateTime, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) def _repr_(self): return f'Post({self.plo_lat}, {self.plo_lon})'
class Metadata(db.Model): ''' El objeto Metadata contiene la estructura de la tabla Log de la base de datos hereda de db.Model de SQLALCHEMY''' id = db.Column(db.Integer, primary_key=True) creationDate = db.Column(db.DateTime, default=datetime.datetime.now) updateDate = db.Column(db.DateTime, default=datetime.datetime.now) description = db.Column(db.String(30), nullable=False) right = db.Column(db.String(50), nullable=False) imagePath = db.Column(db.String(50), nullable=False) users = db.relationship('User', backref="team") logs = db.relationship('Log', backref="team")
class User(db.Model, UserMixin): #"UserMixin", es para facilitar la implementación de una clase de usuario, como: is_authenticated, is_active, is_anonymous, get_id() id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), unique=True, nullable=False) email = db.Column(db.String(40), unique=True, nullable=False) password = db.Column(db.String(60), nullable=False) posts = db.relationship('Post',backref='author',lazy=True) songs = db.relationship('Songs',backref='author',lazy=True) ploteos = db.relationship('Ploteo',backref='author',lazy=True) def _repr_(self): return f'User({self.username}, {self.email})'
class Songs(db.Model, UserMixin): son_id=db.Column(db.Integer, primary_key=True) son_fecha=db.Column(db.DateTime, default=func.now()) son_busqueda=db.Column(db.String(60), nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) def _repr_(self): return f'Post({self.son_fecha}, {self.son_busqueda})'
class Post(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(60), nullable=False) description = db.Column(db.Text, nullable=False) date_posted = db.Column(db.DateTime, default=datetime.utcnow()) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) def _repr_(self): return f'Post({self.title}, {self.description})'
class User(UserMixin, db.Model): ''' El objeto log contiene la estructura de la tabla Log de la base de datos con cada una de su llave foranea de la tabla metadata hereda de db.Model de SQLALCHEMY , por lo que permite hacer querys a la BD al ser instanciado ''' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) right = db.Column(db.String(50), db.ForeignKey('metadata.right'), nullable=False) passwords = db.relationship('Password', backref="user", uselist=False) @login_manager.user_loader def load_user(user_id): if user_id is not None: user = User.query.get(user_id) return user return None
class Log(db.Model): ''' El objeto log contiene la estructura de la tabla Log de la base de datos con cada una de su llave foranea de la tabla metadata hereda de db.Model de SQLALCHEMY , por lo que permite hacer querys a la BD al ser instanciado ''' id = db.Column(db.Integer, primary_key=True) date = db.Column(db.DateTime, default=datetime.datetime.utcnow()) log = db.Column(db.JSON, nullable=False) team_id = db.Column(db.String(50), db.ForeignKey('metadata.right'), nullable=False)