class Usuario(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(64), unique=True) password_hash = db.Column(db.String(128)) active = db.Column(db.Boolean()) last_login_at = db.Column(db.String(255)) current_login_at = db.Column(db.String(255)) last_login_ip = db.Column(db.String(255)) current_login_ip = db.Column(db.String(255)) login_count = db.Column(db.String(255)) confirmed_at = db.Column(db.DateTime()) roles = db.relationship('Rol', secondary=roles_usuarios, backref=db.backref('users', lazy='dynamic')) @property def password(self): raise AttributeError('password is not a readable attribute') @password.setter def password(self, password): self.password_hash = generate_password_hash(password) def verify_password(self, password): return check_password_hash(self.password_hash, password)
class Rol(db_sql.Model, RoleMixin): id = db_sql.Column(db_sql.Integer(), primary_key=True) name = db_sql.Column(db_sql.String(80), unique=True) description = db_sql.Column(db_sql.String(255)) def __unicode__(self): return self.name def __hash__(self): return hash(self.name)
class Ocupacion(db.Model): id = db.Column(db.Integer, primary_key=True) nombre = db.Column(db.String(20), nullable=False, unique=True) descripcion = db.Column(db.String(127)) usuarios = db.relationship('Usuario', backref='ocupacion', lazy=True) def __unicode__(self): return self.nombre def __hash__(self): return hash(self.nombre)
class Lugar(db.Model): id = db.Column(db.Integer, primary_key=True) nombre = db.Column(db.String(20), nullable=False, unique=True) asignacion_automatica = db.Column(db.Boolean, nullable=False, default=False) coordenadas = db.Column(Geometry("POLYGON")) key = db.Column(db.String(15), default=generate_key) hora_apertura = db.Column(db.Time) hora_cierre = db.Column(db.Time) privado = db.Column(db.Boolean, nullable=False, default=False) id_lugar_padre = db.Column(db.Integer, db.ForeignKey('lugar.id'), nullable=True) computadoras = db.relationship('Computadora', backref='Lugar', lazy=True) lugar_padre = db.relationship('Lugar', remote_side=[id]) registros = db.relationship('Registro', backref='Lugar', lazy=True) usuarios = db.relationship("Usuario", secondary='lugares_usuarios') def __unicode__(self): return self.nombre def __hash__(self): return hash(self.nombre) @property def serialize(self): return { 'id': self.id, 'nombre': self.nombre, 'asignacion_automatica': self.asignacion_automatica, 'coordenadas': str(self.coordenadas), 'hora_apertura': self.hora_apertura, 'hora_cierre': self.hora_cierre, 'privado': self.privado, }
class Detalle_registro(db.Model): id = db.Column(db.Integer, primary_key=True) fecha_hora_toma = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) fecha_hora_entrega = db.Column(db.DateTime, nullable=True) id_computadora = db.Column(db.Integer, db.ForeignKey('computadora.id'), nullable=False) id_registro_entrada = db.Column(db.Integer, db.ForeignKey('registro.id'), nullable=False) id_registro_salida = db.Column(db.Integer, db.ForeignKey('registro.id'), nullable=False) registro_entrada = db.relationship('Registro', foreign_keys=[id_registro_entrada]) registro_salida = db.relationship('Registro', foreign_keys=[id_registro_salida]) def __unicode__(self): return self.id def __hash__(self): return hash(self.id) def __repr__(self): return '<Detalle_registro %d | %d>' % (self.id, self.id_registro_entrada) @property def serialize(self): return { 'id': self.id, 'fecha_hora_toma': self.fecha_hora_toma, 'fecha_hora_entrega': self.fecha_hora_entrega, }
class Usuario(db.Model, UserMixin): # Datos indizados id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(64), unique=True) # Datos de login password = db.Column(db.String(512)) # Datos extra codigo = db.Column(db.String(15), unique=True) nip = db.Column(db.String(4)) apellido_paterno = db.Column(db.String(20)) apellido_materno = db.Column(db.String(20)) nombres = db.Column(db.String(30)) token = db.Column(db.String(32), nullable=True) # Datos de seguridad active = db.Column(db.Boolean()) last_login_at = db.Column(db.String(255)) current_login_at = db.Column(db.String(255)) last_login_ip = db.Column(db.String(255)) current_login_ip = db.Column(db.String(255)) login_count = db.Column(db.String(255)) confirmed_at = db.Column(db.DateTime()) # Relaciones id_ocupacion = db.Column(db.Integer, db.ForeignKey('ocupacion.id')) registros = db.relationship('Registro', backref='Usuario', lazy=True) roles = db.relationship('Rol', secondary=roles_usuarios, backref=db.backref('usuarios', lazy='dynamic')) lugares = db.relationship("Lugar", secondary='lugares_usuarios') def __unicode__(self): return self.email def __hash__(self): return hash(self.email) # @property # def password(self): # # raise AttributeError('password is not a readable attribute') # return self.password_hash # # @password.setter # def password(self, password): # self.password_hash = generate_password_hash(password) # # def verify_password(self, password): # return check_password_hash(self.password_hash, password) @property def serialize(self): return { 'id': self.id, 'email': self.email, # Datos extra 'codigo': self.codigo, 'apellido_paterno': self.apellido_paterno, 'apellido_materno': self.apellido_materno, 'nombres': self.nombres, 'active': self.active, }
class Rol(db_sql.Model, RoleMixin): id = db_sql.Column(db_sql.Integer(), primary_key=True) name = db_sql.Column(db_sql.String(80), unique=True) description = db_sql.Column(db_sql.String(255))