Ejemplo n.º 1
0
class Configurations(db.Model):
    """
    Crear modelo de configuariones
    """
    __tablename__ = 'configurations'
    id = db.Column(db.Integer, primary_key=True)
    active = db.Column(db.Boolean, default=True)
    description = db.Column(db.String(200))
    title = db.Column(db.String(60), index=True)
    email = db.Column(db.String(60), index=True)
    offset_paginator = db.Column(db.Integer, default=20)

    def update(self,data):
        offset = data.get('offset')
        active = data.get('active')
        title = data.get('title')
        description = data.get('description')
        email = data.get('email')
        if title:
            self.title = title
        if description:
            self.description = description
        if email:
            self.email = email
        if offset:
            self.offset_paginator = int(offset)
        self.active = True if active else False
        db.session.commit()
Ejemplo n.º 2
0
class Instrument(db.Model):
    __tablename__ = 'instruments'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(60))
    type = db.Column(db.String(60))
    inventory_number = db.Column(db.String(60))
    img_path = db.Column(db.String(120))
    cant = 0

    def __repr__(self):
        return '<Instrumento: %r>' % self.name

    @classmethod
    def set_inventory_number(cls, type):
        year = datetime.datetime.now().year
        month = datetime.datetime.now().month
        cls.cant += 1
        c = cls.cant
        return type + str(year) + str(month) + str(c)

    @classmethod
    def create(cls, form, path):
        name = form.name.data
        type = form.type.data
        inventory_number = cls.set_inventory_number(type)
        img_path = path
        instance = cls(name=name,
                       type=type,
                       inventory_number=inventory_number,
                       img_path=img_path)

        db.session.add(instance)
        try:
            db.session.commit()
        except:
            db.session.rollback()
        return instance

    @classmethod
    def delete(cls, instrument_id):
        instrument = cls.query.filter_by(id=instrument_id).first_or_404()
        os.remove('%s/flaskps' % BASE_DIR + instrument.img_path)
        db.session.delete(instrument)
        db.session.commit()

    def update(self, form, path):
        self.name = form.name.data
        self.type = form.type.data
        self.img_path = path
        db.session.commit()
Ejemplo n.º 3
0
class Rol(db.Model):
    """
    Create a Role table
    """
    __tablename__ = 'roles'
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(60), unique=True, nullable=False)
    permisos = db.Column(db.String(60000), nullable=False)

    def __init__(self, name, permisos):
        super().__init__
        self.name = name
        self.permisos = ','.join(permisos)

    def __repr__(self):
        return '<Rol: {}>'.format(self.name)
Ejemplo n.º 4
0
class Teachers(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    surname = db.Column(db.String(60))
    name = db.Column(db.String(60))
    birth_date = db.Column(db.Date())
    locality = db.Column(db.String(60))
    address = db.Column(db.String(60))
    document_type = db.Column(db.String(60))
    document_number = db.Column(db.String(60))
    phone = db.Column(db.String(60))

    def __repr__(self):
        return '<Docente: %r>' % self.name

    @classmethod
    def delete(cls, teacher_id):
        teacher = Teachers.query.filter_by(id=teacher_id).first_or_404()
        db.session.delete(teacher)
        db.session.commit()

    @classmethod
    def create(cls, form):
        teacher = Teachers(
            name=form.name.data,
            surname=form.surname.data,
            birth_date=form.birth_date.data,
            locality=form.locality.data,
            address=form.address.data,
            document_type=form.document_type.data,
            document_number=form.document_number.data,
            phone=form.phone.data,
        )
        db.session.add(teacher)
        try:
            db.session.commit()
        except:
            db.session.rollback()

        return teacher

    def update(self, form):
        self.name = form.name.data
        self.surname = form.surname.data
        self.birth_date = form.birth_date.data
        self.locality = form.locality.data
        self.address = form.address.data
        self.document_type = form.document_type.data
        self.document_number = form.document_number.data
        self.phone = form.phone.data

        db.session.commit()
Ejemplo n.º 5
0
class User(db.Model, TimeStampedModel, UserMixin):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    is_admin = db.Column(db.Boolean, default=False)
    username = db.Column(db.String(60), unique=True, nullable=False)
    email = db.Column(db.String(60), unique=True, nullable=False)
    name = db.Column(db.String(60))
    surname = db.Column(db.String(60))
    active = db.Column(db.Boolean, default=True)
    password_hash = db.Column(db.String(128))
    # Define the relationship to Role via UserRoles
    roles = db.relationship('Rol', secondary='user_roles')

    def __repr__(self):
        return '<Usuario: %r>' % self.username

    @classmethod
    def create(cls, form):
        username = form.username.data
        name = form.name.data
        surname = form.surname.data
        email = form.email.data
        password = form.password.data
        roles = form.roles.raw_data
        roles = Rol.query.filter(Rol.name.in_(roles)).all()

        instance = cls(
            name=name,
            surname=surname,
            username=username,
            email=email,
            password=password,
            roles=roles,
        )
        db.session.add(instance)
        try:
            db.session.commit()
        except:
            db.session.rollback()
        return instance

    def update(self, form):
        self.name = form.name.data
        self.surname = form.surname.data
        self.username = form.username.data
        self.email = form.email.data
        self.active = form.active.data

        roles = form.roles.raw_data
        roles = Rol.query.filter(Rol.name.in_(roles)).all()
        self.roles = roles

        if not self.verify_password(form.password.data):
            self.password = form.password.data

        db.session.commit()

    @classmethod
    def delete(cls, user_id):
        user = User.query.filter_by(id=user_id).first_or_404()
        db.session.delete(user)
        db.session.commit()

    def have_permissions(self, permission):
        perm = []
        for rol in self.roles:
            perm += rol.permisos.split(',')
        if permission in perm:
            return True
        return False

    @property
    def is_active(self):
        return self.active

    @property
    def password(self):
        """
        Impide que se pueda leer la clave de usuario
        """
        raise AttributeError('password: no es un atributo de lectura. :D')

    @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)
Ejemplo n.º 6
0
class Person(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), nullable=False)
    addresses = db.relationship('Address', backref='person', lazy=True)
Ejemplo n.º 7
0
class Address(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(120), nullable=False)
    person_id = db.Column(db.Integer,
                          db.ForeignKey('person.id'),
                          nullable=False)
Ejemplo n.º 8
0
class Workshop(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(120))
    short_name = db.Column(db.String(60))
    semester_id = db.Column(
        db.Integer, db.ForeignKey('school_year.id'), nullable=False)
    teacher_id = db.Column(
        db.Integer, db.ForeignKey('teachers.id'), nullable=True)
    students = db.relationship(
                    'Students',
                    secondary=workshop_students,
                    lazy='subquery',
                    backref=db.backref('workshops', lazy=True)
                )

    cant_lessons = db.Column(db.Integer, default=0)
    lessons = db.relationship('Lesson', backref='workshop', lazy=True)
    nucleo = db.Column(db.String(120))
    address = db.Column(db.String(214))
    days = db.Column(db.String(520))
    horario = db.Column(db.String(20))

    @classmethod
    def create(cls, form, sy):
        name = form.name.data
        short_name = form.short_name.data
        teacher_id = form.teacher.data
        nucleo = form.nucleo.data
        address = form.address.data
        days = form.days.data
        horario = form.horario.data
        cant = form.clases.data

        instance = cls(
            name=name,
            short_name=short_name,
            teacher_id=teacher_id,
            semester_id=sy.id,
            cant_lessons=cant,
            nucleo=nucleo,
            address=address,
            days=days,
            horario=horario,
        )

        n = 1
        for lesson in range(cant+1):
            l = Lesson(number=n, workshop_id=instance.id)
            n += 1
            instance.lessons.append(l)

        db.session.add(instance)
        try:
            db.session.commit()
        except:
            db.session.rollback()
        return instance

    def update(self, form):
        pass

    def add_student(self, student):
        self.students.append(student)
        for lesson in self.lessons:
            attend = Attend(lesson=lesson, student=student)
            db.session.add(attend)
        db.session.add(self)
        try:
            db.session.commit()
        except:
            db.session.rollback()
Ejemplo n.º 9
0
class Nucleos(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(60))
    longitud = db.Column(db.Float)
    latitude = db.Column(db.Float)