class UserRoles(db.Model): __tablename__ = 'user_roles' id = db.Column(db.Integer(), primary_key=True) user_id = db.Column(db.Integer(), db.ForeignKey('users.id', ondelete='CASCADE')) role_id = db.Column(db.Integer(), db.ForeignKey('roles.id', ondelete='CASCADE'))
class Attend(db.Model): has_attended = db.Column(db.Boolean, default=False) student_id = db.Column(db.Integer, db.ForeignKey('students.id'), primary_key=True) lesson_id = db.Column(db.Integer, db.ForeignKey('lesson.id'), primary_key=True) student = db.relationship('Students', backref='attend') lesson = db.relationship('Lesson', backref='attend') def attend(self): self.has_attended = True if not self.has_attended else False db.session.add(self) db.session.commit()
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)
name = db.Column(db.String(50), nullable=False) addresses = db.relationship('Address', backref='person', lazy=True) 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 many-to-many tags = db.Table( 'tags', db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'), primary_key=True), db.Column('page_id', db.Integer, db.ForeignKey('page.id'), primary_key=True)) class Page(db.Model): id = db.Column(db.Integer, primary_key=True) tags = db.relationship('Tag', secondary=tags, lazy='subquery', backref=db.backref('pages', lazy=True)) class Tag(db.Model):
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()
class Lesson(db.Model): id = db.Column(db.Integer, primary_key=True) number = db.Column(db.Integer) workshop_id = db.Column(db.Integer, db.ForeignKey('workshop.id'), nullable=False)
def delete(self): self.active = False db.session.commit() def update(self, form): self.start_date = form.start_date.data self.end_date = form.end_date.data self.semesters = form.semester.data db.session.commit() workshop_students = db.Table('workshop_students', db.Column( 'workshop_id', db.Integer, db.ForeignKey('workshop.id'), primary_key=True), db.Column( 'student_id', db.Integer, db.ForeignKey('students.id'), primary_key=True), ) 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',