コード例 #1
0
def cambiar_alias(request):
    template_name = "dashboard/perfil/perfil.html"
    usuario = utils.reconstruir_usuario(request)

    if usuario:
        mensaje_error = None
        mensaje_ok = None
        form = AliasForm(request.POST or None, request.FILES or None)
        if form.is_valid():
            cd = form.cleaned_data
            alias = cd.get("alias")
            usuario.alias = alias
            usuario.save()
            mensaje_ok = "El alias se cambió exitosamente por: " + alias
        else:
            mensaje_error = "No se pudo cambiar el alias del usuario"

        context = {
            "usuario": usuario,
            "forma_avatar": AvatarForm(),
            "forma_password": PasswordForm(),
            "forma_alias": AliasForm(initial={'alias': usuario.alias}),
            "mensaje_error": mensaje_error,
            "mensaje_ok": mensaje_ok
        }
        return utils.render_page(request, template_name, context)
    else:
        return home(request)
コード例 #2
0
def cambiar_password(request):
    template_name = "dashboard/perfil/perfil.html"
    usuario = utils.reconstruir_usuario(request)

    if usuario:
        mensaje_error = None
        mensaje_ok = None
        form = PasswordForm(request.POST or None, request.FILES or None)
        if form.is_valid():
            cd = form.cleaned_data
            actual = cd.get("actual")
            nuevo = cd.get("nuevo")
            confirmacion = cd.get("confirmacion")

            correcto = usuario.verificar_password(actual)
            if correcto:
                mensaje_error = validar_nuevo_password(nuevo, confirmacion)
                if mensaje_error is None:
                    usuario.cambiar_password(nuevo)
                    mensaje_ok = "El password se cambió exitosamente"
            else:
                mensaje_error = "El password actual no es correcto"

        context = {
            "usuario": usuario,
            "forma_avatar": AvatarForm(),
            "forma_password": PasswordForm(),
            "forma_alias": AliasForm(initial={'alias': usuario.alias}),
            "mensaje_error": mensaje_error,
            "mensaje_ok": mensaje_ok
        }
        return utils.render_page(request, template_name, context)
    else:
        return home(request)
コード例 #3
0
def notificaciones(request):
    usuario = utils.reconstruir_usuario(request)
    template_name = "dashboard/notificaciones.html"
    context = {
        "notificaciones_completas":
        Notificacion.buscar_notificaciones_usuario(usuario)
    }
    return utils.render_page(request, template_name, context)
コード例 #4
0
def solucion_referencia(request, slug):
    problema = get_object_or_404(Problema, slug=slug)
    usuario = utils.reconstruir_usuario(request)
    tipo_forma = str(request.POST.get("tipo_forma", None))

    if request.POST.get("guardar", None) is not None:
        return guardar_solucion_referencia(request, problema)

    elif request.POST.get("correr", None) is not None:
        return correr_solucion_referencia(request, problema)

    else:
        return mostrar_solucion_referencia(request, problema)
コード例 #5
0
ファイル: retos.py プロジェクト: nbellol/calificador_prueba
def retos(request, nivel=1):

    lista_problemas = Problema.buscar_retos_nivel(nivel)
    usuario = utils.reconstruir_usuario(request)

    num_avance = 0
    num_total = len(lista_problemas)

    lista_parejas_b = []
    lista_parejas_m = []
    lista_parejas_a = []
    for pr in lista_problemas:
        resultado = pr.buscar_resultado_problema_estudiante(usuario.id)
        if resultado is not None and resultado.resuelto:
            num_avance += 1

        if pr.nivel_reto == BASICO:
            lista_parejas_b.append((pr, resultado))
        elif pr.nivel_reto == MEDIO:
            lista_parejas_m.append((pr, resultado))
        elif pr.nivel_reto == AVANZADO:
            lista_parejas_a.append((pr, resultado))

    if usuario.tipo != ESTUDIANTE:
        avance = None
    elif num_total > 0:
        avance = str(int(round(num_avance / num_total *  100, 0))) + "%"
    else:
        avance = "0%"

    template_name = "dashboard/retos/retos.html"
    context = {"lista_problemas_b": lista_parejas_b,
               "lista_problemas_m": lista_parejas_m,
               "lista_problemas_a": lista_parejas_a,
               "nivel": nivel,
               "tipo_busqueda": "",
               "num_avance": num_avance,
               "num_total": num_total,
               "avance": avance}

    return utils.render_page(request, template_name, context)
コード例 #6
0
def mostrar_problemas(request,
                      lista_problemas,
                      forma_simple,
                      forma_avanzada,
                      busqueda=None):
    usuario = utils.reconstruir_usuario(request)

    if usuario.tipo == ESTUDIANTE:
        lista_problemas = list(
            filter(lambda prob: prob.publico, lista_problemas))

    lista_parejas = []
    for pr in lista_problemas:
        resultado = pr.buscar_resultado_problema_estudiante(usuario.id)
        lista_parejas.append((pr, resultado))

    tags = Tag.objects.all().order_by('texto')

    paginator = Paginator(lista_parejas, 10)
    if request.method == 'POST':
        page = request.POST.get('page')
    else:
        page = request.GET.get('page')

    lista_parejas = paginator.get_page(page)

    template_name = "dashboard/problemas_estudiante.html"
    context = {
        "lista_problemas": lista_parejas,
        "form": forma_simple,
        "forma_avanzada": forma_avanzada,
        "tags": tags,
        "tipo_busqueda": busqueda,
        "es_admin": usuario.tipo == ADMINISTRADOR,
        "es_profesor": usuario.tipo == PROFESOR
    }

    return utils.render_page(request, template_name, context)
コード例 #7
0
def perfil(request):
    template_name = "dashboard/perfil/perfil.html"
    usuario = utils.reconstruir_usuario(request)
    if usuario:
        mensaje_error = None
        mensaje_ok = None

        form = AvatarForm(request.POST or None, request.FILES or None)
        if form.is_valid():
            extension = str(request.FILES['avatar']).lower()[-4:]
            size = request.FILES['avatar'].size
            print("Size:", size)
            if extension not in constantes.EXTENSIONES:
                mensaje_error = "Las imágenes de perfil sólo pueden estar en los siguientes formatos: jpg, png o gif"
            elif size > 1024 * 200:
                mensaje_error = "Las imágenes de perfil no pueden tener más de 200 kb."
            else:
                noise = uuid.uuid4().hex[:16]
                filename = usuario.login + noise + ".png"
                utils.handle_uploaded_avatar(request.FILES['avatar'],
                                             usuario.login, filename)
                usuario.avatar = "avatars/" + filename
                usuario.save()
                mensaje_ok = "Se cambió exitosamente la imagen de perfil"

        context = {
            "usuario": usuario,
            "forma_avatar": AvatarForm(),
            "forma_password": PasswordForm(),
            "forma_alias": AliasForm(initial={'alias': usuario.alias}),
            "mensaje_error": mensaje_error,
            "mensaje_ok": mensaje_ok
        }

        return utils.render_page(request, template_name, context)
    else:
        return home(request)
コード例 #8
0
def problema(request, slug):
    problema = get_object_or_404(Problema, slug=slug)
    usuario = utils.reconstruir_usuario(request)

    tipo_formulario = str(request.POST.get("tipo_formulario", None))
    if tipo_formulario == "pregunta":
        form = PreguntaForm(request.POST or None, request.FILES or None)
        mensaje = agregar_pregunta_problema(form, usuario, problema)
    elif tipo_formulario == "respuesta":
        form = ComentarioForm(request.POST or None, request.FILES or None)
        mensaje = agregar_respuesta_problema(form, usuario)
    else:
        mensaje = None

    resultado_problema = None
    envios = None
    permiso_envio = True

    if usuario.tipo == ESTUDIANTE:
        resultado_problema = problema.buscar_resultado_problema_estudiante(
            usuario.id)
        envios = problema.buscar_envios_problema(usuario.id)
    else:
        permiso_envio = False

    template_name = "dashboard/problema_es.html"
    context = {
        "problema": problema,
        "form_pregunta": PreguntaForm(),
        "form_respuesta": ComentarioForm(),
        "resultado_problema": resultado_problema,
        "permiso_envio": permiso_envio,
        "mensaje": mensaje,
        "envios": envios
    }
    return utils.render_page(request, template_name, context)
コード例 #9
0
def logros(request):
    usuario = utils.reconstruir_usuario(request)
    medallas = Logro.buscar_medallas_usuario(usuario.id)
    template_name = "dashboard/medallas.html"
    context = {"medallas": medallas}
    return utils.render_page(request, template_name, context)
コード例 #10
0
def marcar_leidas(request):
    usuario = utils.reconstruir_usuario(request)
    Notificacion.marcar_todas_leidas(usuario.id)
    return redirect(reverse('notificaciones'))