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
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))
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
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
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))
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)
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)
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)
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))
def create_trabajos_materia(id_materia): rm = RepositorioMateria() m = rm.get_one(id_materia) return create_trabajos(m)
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))