Example #1
0
def editarTema(request, idTema):
    FabricaEjercicios = formset_factory(FormaEjercicios, extra=0, formset=FormSetRequerido)
    FabricaFormulas = formset_factory(FormaFormulas, extra=0, formset=FormSetRequerido)
        
    if request.method == 'POST':
        if 'anadirEjercicio' in request.POST:
            copiaPost = request.POST.copy()
            copiaPost['ejercicios-TOTAL_FORMS'] = int(copiaPost['ejercicios-TOTAL_FORMS'])+1
            formTema = FormaTema(request.POST, prefix='tema')
            conjuntoEjercicios = FabricaEjercicios(copiaPost, prefix='ejercicios')
            conjuntoFormulas = FabricaFormulas(request.POST, prefix='formulas')
            
            carreraUsuario = request.user.usuario.carrera
            relMateriasCarrera = Materias_Carrera.objects.filter(carrera=carreraUsuario)
            materias = []
            for relacion in relMateriasCarrera:
                materias.append(Materia.objects.get(materia=relacion.materia))
            noErrores = True

            return render(request, 'temas/editarTema.html', {
                'formTema': formTema, 
                'conjuntoEjercicios': conjuntoEjercicios,
                'conjuntoFormulas': conjuntoFormulas,
                'materias': materias,
                'noErrores': noErrores,
                'idTema': idTema,  
                'idEjercicios': request.POST['idEjercicios'],
                'idFormulas': request.POST['idFormulas'],
            })

        elif 'anadirFormula' in request.POST:
            copiaPost = request.POST.copy()
            copiaPost['formulas-TOTAL_FORMS'] = int(copiaPost['formulas-TOTAL_FORMS'])+1
            formTema = FormaTema(request.POST, prefix='tema')
            conjuntoEjercicios = FabricaEjercicios(request.POST, prefix='ejercicios')
            conjuntoFormulas = FabricaFormulas(copiaPost, prefix='formulas')
            
            carreraUsuario = request.user.usuario.carrera
            relMateriasCarrera = Materias_Carrera.objects.filter(carrera=carreraUsuario)
            materias = []
            for relacion in relMateriasCarrera:
                materias.append(Materia.objects.get(materia=relacion.materia))
            noErrores = True

            return render(request, 'temas/editarTema.html', {
                'formTema': formTema, 
                'conjuntoEjercicios': conjuntoEjercicios,
                'conjuntoFormulas': conjuntoFormulas,
                'materias': materias,
                'noErrores': noErrores,
                'idTema': idTema, 
                'idEjercicios': request.POST['idEjercicios'],
                'idFormulas': request.POST['idFormulas'],
            })

        elif 'submit' in request.POST:
            formTema = FormaTema(request.POST, prefix='tema')
            conjuntoEjercicios = FabricaEjercicios(request.POST, prefix='ejercicios')
            conjuntoFormulas = FabricaFormulas(request.POST, prefix='formulas')
            

            if formTema.is_valid() and conjuntoEjercicios.is_valid() and conjuntoFormulas.is_valid():
                idEjercicios=ast.literal_eval(request.POST['idEjercicios'])
                idFormulas=ast.literal_eval(request.POST['idFormulas'])
                
                tema = Tema.objects.get(id=idTema)
                tema.tema=formTema.cleaned_data['tema']
                tema.resumenTeorico=formTema.cleaned_data['resumenTeorico']
                tema.referencias=formTema.cleaned_data['referencias']
                tema.save()

                for i in range(0, len(idEjercicios)):
                    ejercicio=Ejercicio.objects.get(id=idEjercicios[i])
                    ejercicio.problema=conjuntoEjercicios[i].cleaned_data['problema']
                    ejercicio.solucion=conjuntoEjercicios[i].cleaned_data['solucion']
                    ejercicio.save()

                print("5.1\n")
                for i in range(0, len(idFormulas)):
                    print("5.1.1\n")
                    formula=Formula.objects.get(id=idFormulas[i])
                    print("5.1.2\n")
                    formula.formula=conjuntoFormulas[i].cleaned_data['formula']
                    print("5.1.3\n")
                    formula.save()

                print("5.2\n")
                for i in range (len(idEjercicios), len(conjuntoEjercicios)):
                    ejercicio = conjuntoEjercicios[i].save()
                    relEjerciciosTema = Ejercicios_Tema()
                    relEjerciciosTema.ejercicio=ejercicio
                    relEjerciciosTema.tema=tema
                    relEjerciciosTema.save()

                print("5.3\n")
                for i in range (len(idFormulas), len(conjuntoFormulas)):
                    formula = conjuntoFormulas[i].save()
                    relFormulasTema = Formulas_Tema()
                    relFormulasTema.tema = tema
                    relFormulasTema.formula = formula
                    relFormulasTema.save()

                print("6\n")

                return HttpResponseRedirect(paginaPrincipal)
            else:
                print("7\n")
                carreraUsuario = request.user.usuario.carrera
                relMateriasCarrera = Materias_Carrera.objects.filter(carrera=carreraUsuario)
                materias = []
                for relacion in relMateriasCarrera:
                    materias.append(Materia.objects.get(materia=relacion.materia))
                idEjercicios=request.POST['idEjercicios']
                idFormulas=request.POST['idFormulas']
                
    else:
        temaActual=Tema.objects.get(id=idTema)

        formulas = []
        idFormulas = []
        relFormulasTema = Formulas_Tema.objects.filter(tema=temaActual)
        for relacion in relFormulasTema:
            formulas.append(relacion.formula.__dict__)
            idFormulas.append(relacion.formula.id)

        ejercicios = []
        idEjercicios = []
        relEjerciciosTema = Ejercicios_Tema.objects.filter(tema=temaActual)
        for relacion in relEjerciciosTema:
            ejercicios.append(relacion.ejercicio.__dict__)
            idEjercicios.append(relacion.ejercicio.id)

        conjuntoEjercicios = FabricaEjercicios(prefix='ejercicios', initial=ejercicios)
        conjuntoFormulas = FabricaFormulas(prefix='formulas', initial=formulas)

        carreraUsuario = request.user.usuario.carrera
        relMateriasCarrera = Materias_Carrera.objects.filter(carrera=carreraUsuario)
        materias = []
        for relacion in relMateriasCarrera:
            materias.append(Materia.objects.get(materia=relacion.materia))
        
        formTema = FormaTema(initial=temaActual.__dict__, prefix='tema')

    print("8\n")
    return render(request, 'temas/editarTema.html', {
        'formTema': formTema, 
        'conjuntoEjercicios': conjuntoEjercicios,
        'conjuntoFormulas': conjuntoFormulas,
        'materias': materias,
        'idTema': idTema,
        'idEjercicios': idEjercicios,
        'idFormulas': idFormulas,
    })
Example #2
0
def crearTema(request):
    FabricaEjercicios = formset_factory(FormaEjercicios, formset=FormSetRequerido)
    FabricaFormulas = formset_factory(FormaFormulas, extra=0, formset=FormSetRequerido)
        
    if request.method == 'POST':
        if 'anadirEjercicio' in request.POST:
            copiaPost = request.POST.copy()
            copiaPost['ejercicios-TOTAL_FORMS'] = int(copiaPost['ejercicios-TOTAL_FORMS'])+1
            formTema = FormaTema(request.POST, prefix='tema')
            conjuntoEjercicios = FabricaEjercicios(copiaPost, prefix='ejercicios')
            conjuntoFormulas = FabricaFormulas(request.POST, prefix='formulas')
            
            carreraUsuario = request.user.usuario.carrera
            relMateriasCarrera = Materias_Carrera.objects.filter(carrera=carreraUsuario)
            materias = []
            for relacion in relMateriasCarrera:
                materias.append(Materia.objects.get(materia=relacion.materia))
            noErrores = True

            return render(request, 'temas/crearTema.html', {
                'formTema': formTema, 
                'conjuntoEjercicios': conjuntoEjercicios,
                'conjuntoFormulas': conjuntoFormulas,
                'materias': materias,
                'noErrores': noErrores,
            })

        elif 'anadirFormula' in request.POST:
            copiaPost = request.POST.copy()
            copiaPost['formulas-TOTAL_FORMS'] = int(copiaPost['formulas-TOTAL_FORMS'])+1
            formTema = FormaTema(request.POST, prefix='tema')
            conjuntoEjercicios = FabricaEjercicios(request.POST, prefix='ejercicios')
            conjuntoFormulas = FabricaFormulas(copiaPost, prefix='formulas')
            
            carreraUsuario = request.user.usuario.carrera
            relMateriasCarrera = Materias_Carrera.objects.filter(carrera=carreraUsuario)
            materias = []
            for relacion in relMateriasCarrera:
                materias.append(Materia.objects.get(materia=relacion.materia))
            noErrores = True

            return render(request, 'temas/crearTema.html', {
                'formTema': formTema, 
                'conjuntoEjercicios': conjuntoEjercicios,
                'conjuntoFormulas': conjuntoFormulas,
                'materias': materias,
                'noErrores': noErrores,
            })

        elif 'submit' in request.POST:
            formTema = FormaTema(request.POST, prefix='tema')
            conjuntoEjercicios = FabricaEjercicios(request.POST, prefix='ejercicios')
            conjuntoFormulas = FabricaFormulas(request.POST, prefix='formulas')
            

            if formTema.is_valid() and conjuntoEjercicios.is_valid() and conjuntoFormulas.is_valid():
                tema = formTema.save()
                materia = Materia.objects.get(materia=request.POST['selectorMateria'])
                relTemasMateria = Temas_Materia()
                relTemasMateria.materia=materia
                relTemasMateria.tema=tema
                relTemasMateria.save()

                for formaEjercicio in conjuntoEjercicios:
                    ejercicio = formaEjercicio.save()
                    relEjerciciosTema = Ejercicios_Tema()
                    relEjerciciosTema.ejercicio=ejercicio
                    relEjerciciosTema.tema=tema
                    relEjerciciosTema.save()

                for formaFormula in conjuntoFormulas:
                    formula = formaFormula.save()
                    relFormulasTema = Formulas_Tema()
                    relFormulasTema.tema = tema
                    relFormulasTema.formula = formula
                    relFormulasTema.save()

                return HttpResponseRedirect(paginaPrincipal)
            else:
                carreraUsuario = request.user.usuario.carrera
                relMateriasCarrera = Materias_Carrera.objects.filter(carrera=carreraUsuario)
                materias = []
                for relacion in relMateriasCarrera:
                    materias.append(Materia.objects.get(materia=relacion.materia))
                
    else:
        conjuntoEjercicios = FabricaEjercicios(prefix='ejercicios')
        conjuntoFormulas = FabricaFormulas(prefix='formulas')
        formTema = FormaTema(prefix='tema')

        carreraUsuario = request.user.usuario.carrera
        relMateriasCarrera = Materias_Carrera.objects.filter(carrera=carreraUsuario)
        materias = []
        for relacion in relMateriasCarrera:
            materias.append(Materia.objects.get(materia=relacion.materia))

    return render(request, 'temas/crearTema.html', {
        'formTema': formTema, 
        'conjuntoEjercicios': conjuntoEjercicios,
        'conjuntoFormulas': conjuntoFormulas,
        'materias': materias,
    })