示例#1
0
 def get_one(self, id_trabajo):
     rm = RepositorioMateria()
     trabajos_sql = "SELECT id, titulo, descripcion, fecha_publicada, \
             fecha_entrega, archivo, id_materia, es_url FROM material \
             WHERE id = ?;"
     self.cursor.execute(trabajos_sql, [id_trabajo])
     f = self.cursor.fetchone()
     materia = rm.get_one(f[6])
     trabajo = Trabajo(f[0], f[1],f[2],f[3], f[4], f[5], materia, f[7])
     return trabajo
示例#2
0
def delete_materia(id_materia):
    # Hace el delete, verificando antes que no tenga trabajos guardados
    rm = RepositorioMateria()
    if rm.cuantos_trabajos(id_materia) == 0:
        if rm.delete(id_materia):
            mensaje = "Materia eliminada"
        else:
            mensaje = "Error al eliminar la materia"
    else:
        mensaje = "Error: la materia tiene trabajos asignados"

    #Redirigir a materias:
    return redirect(url_for('materias', mensaje=mensaje))
示例#3
0
    def get_all(self):
        rm = RepositorioMateria()
        trabajos_sql = "SELECT id, titulo, descripcion, fecha_publicada, \
            fecha_entrega, archivo, id_materia, es_url FROM material \
            order by id_materia, fecha_publicada;"
        self.cursor.execute(trabajos_sql)
        
        trabajos = []
        for f in self.cursor.fetchall():
            materia = rm.get_one(f[6])
            trabajos.append(Trabajo(f[0], f[1],f[2],f[3], f[4], f[5], materia, 
                                    f[7]))

        return trabajos
示例#4
0
 def get_all_materia(self, materia):
     # Si me pasan un id_materia
     rm = RepositorioMateria()
     if type(materia) is not Materia:
         materia = rm.get_one(int(materia))
     
     trabajos_sql = "SELECT id, titulo, descripcion, fecha_publicada, \
         fecha_entrega, archivo, id_materia, es_url FROM material \
         WHERE id_materia = ? order by fecha_publicada;"
     self.cursor.execute(trabajos_sql, [ materia.id ])
     
     trabajos = []
     for f in self.cursor.fetchall():
         trabajos.append(Trabajo(f[0], f[1],f[2],f[3], f[4], f[5], materia, 
                                 f[7]))
     return trabajos
示例#5
0
def update_materia(id_materia):
    rm = RepositorioMateria()
    rc = RepositorioCurso()
    if request.method == "GET":
        cursos = rc.get_all()
        materia = rm.get_one(int(id_materia))
        if not materia:
            return "Error: materia no encontrada. id_materia: " + str(
                id_materia)
        form = FlaskForm()
        return render_template("nueva_materia.html",
                               mensaje=None,
                               form=form,
                               materia=materia,
                               cursos=cursos)
    else:
        # Capturar los datos del request
        idm = request.form["id_materia"]
        nombre = request.form["nombre"]
        id_curso = request.form["curso"]
        docente = request.form["docente"]
        mail = request.form["mail"]
        if request.form.get("sticky"):
            sticky = True
        else:
            sticky = False
        if request.form.get("cambiar_logo"):
            logo = request.form["logo"]
        else:
            logo = None
        rc = RepositorioCurso()
        curso = rc.get_one(id_curso)
        materia = Materia(idm, nombre, curso, logo, sticky, docente, mail)

        #HACER EL UPDATE
        if materia.logo:
            resultado = rm.update(materia)
        else:
            resultado = rm.update(materia, cambiar_logo=False)
        if resultado:
            mensaje = "Datos de la materia modificados"
        else:
            mensaje = "Error al modificar los datos de la materia"
        #Redirigir a cursos:
        return redirect(url_for('materias', mensaje=mensaje))
示例#6
0
def materias(id_curso=None):
    rc = RepositorioCurso()
    cursos = rc.get_all()
    if request.args.get("mensaje"):
        mensaje = request.args.get("mensaje")
    else:
        mensaje = None
    rm = RepositorioMateria()
    if id_curso and int(id_curso) > 0:
        materias = rm.get_all_curso(id_curso)
        curso = rc.get_one(id_curso)
    else:
        materias = rm.get_all()
        curso = None
    form = FlaskForm()
    return render_template("materias.html",
                           mensaje=mensaje,
                           materias=materias,
                           form=form,
                           cursos=cursos,
                           curso=curso)
示例#7
0
def trabajos(id_materia=None):
    if request.args.get("mensaje"):
        mensaje = request.args.get("mensaje")
    else:
        mensaje = None
    rm = RepositorioMateria()
    rt = RepositorioTrabajo()
    if id_materia and int(id_materia) > 0:
        ts = rt.get_all_materia(id_materia)
        materia = rm.get_one(id_materia)
    else:
        ts = rt.get_all()
        materia = None
    materias = rm.get_all()
    form = FlaskForm()

    return render_template("trabajos.html",
                           mensaje=mensaje,
                           trabajos=ts,
                           materias=materias,
                           form=form,
                           materia=materia)
示例#8
0
def create_materia(curso=None):
    if request.method == "GET":
        form = FlaskForm()
        rc = RepositorioCurso()
        cursos = rc.get_all()
        return render_template("nueva_materia.html",
                               form=form,
                               mensaje=None,
                               materia=None,
                               cursos=cursos,
                               curso=curso)
    else:
        # Capturar los datos del request
        nombre = request.form["nombre"]
        id_curso = request.form["curso"]
        docente = request.form["docente"]
        mail = request.form["mail"]

        if request.form.get("sticky"):
            sticky = True
        else:
            sticky = False
        logo = request.form["logo"]
        rc = RepositorioCurso()
        curso = rc.get_one(id_curso)
        materia = Materia(None, nombre, curso, logo, sticky, docente, mail)
        #GUARDAR EL NUEVO CURSO
        rm = RepositorioMateria()
        id_materia = rm.create(materia)
        if id_materia:
            mensaje = "Materia creada correctamente"
        else:
            mensaje = "Error al crear la materia"

        #Redirigir a cursos:
        flash(mensaje)
        return materias(id_curso)
示例#9
0
def update_trabajos(id_trabajo):
    rm = RepositorioMateria()
    rt = RepositorioTrabajo()
    trabajo_actual = rt.get_one(int(id_trabajo))

    if request.method == "GET":
        if not trabajo_actual:
            return "Error: trabajo no encontrada. id_trabajo: " + str(
                id_trabajo)
        hoy = datetime.date.today()
        form = FlaskForm()
        materias = rm.get_all()
        return render_template("nuevo_trabajo.html",
                               form=form,
                               mensaje=None,
                               trabajo=trabajo_actual,
                               materias=materias,
                               hoy=hoy)
    else:
        # Capturar los datos del request
        idt = request.form["id_trabajo"]
        titulo = request.form["titulo"]
        descripcion = request.form["descripcion"]
        id_materia = request.form["materia"]
        fecha_publicada = request.form["publicado"]
        if request.form.get("se_entrega"):
            fecha_entrega = request.form["entrega"]
        else:
            fecha_entrega = None
        es_url = request.form["opcion_archivo"] == "url"
        materia = rm.get_one(id_materia)

        # Manejo de archivos:
        if 'archivo_real' in request.files and \
                request.form["archivo"] != trabajo_actual.archivo:
            archivo_real = request.files['archivo_real']

            # FIXME: ¿Habría que advertir si eligen archivo pero no suben nada?
            # (ya está hecho por js)
            # if archivo_real.filename == '':
            if archivo_real and allowed_file(archivo_real.filename):
                filename = secure_filename(archivo_real.filename)
                archivo = filename
                try:
                    archivo_real.save(
                        os.path.join(app.config['UPLOAD_FOLDER'], filename))
                except:
                    #FIXME: Manejar esta excepción. TODO
                    raise
            else:
                # FIXME: Manejar esta excepción
                raise
        else:
            archivo = request.form["archivo"]

        trabajo = Trabajo(idt, titulo, descripcion, fecha_publicada,
                          fecha_entrega, archivo, materia, es_url)

        #HACER EL UPDATE
        resultado = rt.update(trabajo)
        if resultado:
            mensaje = "Datos del trabajo/actividad/material modificados"
        else:
            mensaje = "Error al modificar los datos del trabajo/material"
        #Redirigir a cursos:
        return redirect(url_for('trabajos', mensaje=mensaje))
示例#10
0
def create_trabajos_materia(id_materia):
    rm = RepositorioMateria()
    m = rm.get_one(id_materia)
    return create_trabajos(m)
示例#11
0
def create_trabajos(materia=None):
    rm = RepositorioMateria()
    if request.method == "GET":
        hoy = datetime.date.today()
        form = FlaskForm()
        materias = rm.get_all()
        return render_template("nuevo_trabajo.html",
                               form=form,
                               mensaje=None,
                               trabajo=None,
                               materias=materias,
                               materia=materia,
                               hoy=hoy,
                               tipos=", ".join(ALLOWED_EXTENSIONS))
    else:
        # Capturar los datos del request
        titulo = request.form["titulo"]
        descripcion = request.form["descripcion"]
        id_materia = request.form["materia"]
        # TODO: Las fechas tienen que ser "2020-04-30", revisar eso
        fecha_publicada = request.form["publicado"]
        if request.form.get("se_entrega"):
            fecha_entrega = request.form["entrega"]
        else:
            fecha_entrega = None
        es_url = request.form["opcion_archivo"] == "url"
        materia = rm.get_one(id_materia)

        # Manejo de archivos:
        # print("################### ARCHIVOS ##########################")
        # print(request.files.get("archivo_real").filename)
        if 'archivo_real' in request.files:
            archivo_real = request.files['archivo_real']

            # FIXME: ¿Habría que advertir si eligen archivo pero no suben nada?
            # (ya está hecho por js)
            # if archivo_real.filename == '':
            if archivo_real and allowed_file(archivo_real.filename):
                filename = secure_filename(archivo_real.filename)
                archivo = filename
                try:
                    archivo_real.save(
                        os.path.join(app.config['UPLOAD_FOLDER'], filename))
                except:
                    #FIXME: Manejar esta excepción. TODO
                    raise
            else:
                # FIXME: Manejar esta excepción
                raise
        else:
            archivo = request.form["archivo"]

        trabajo = Trabajo(None, titulo, descripcion, fecha_publicada,
                          fecha_entrega, archivo, materia, es_url)

        #GUARDAR EL NUEVO TRABAJO
        rt = RepositorioTrabajo()
        id_trabajo = rt.create(trabajo)
        if id_trabajo:
            mensaje = "Trabajo/Material/Actividad creada correctamente"
        else:
            mensaje = "Error al crear el trabajo"

        #Redirigir a trabajos:
        return redirect(url_for('trabajos', mensaje=mensaje))