|
|
from clase.forms import ClaseForm
|
|
|
from django.db.models import Count
|
|
|
|
|
|
from usuario.functions import enviar_correo_notificacion
|
|
|
from notificacion.forms import NotificacionForm
|
|
|
from notificacion.models import Notificacion
|
|
|
from django.urls import reverse
|
|
|
|
|
|
|
|
|
|
|
|
'etiquetas':etiquetas,
|
|
|
'num_clases': clases.count(),
|
|
|
'num_examen': examenes.count(),
|
|
|
'form_notificacion': NotificacionForm()
|
|
|
}
|
|
|
return render(request, 'curso/ver_curso_interno.html', contexto)
|
|
|
|
|
|
}
|
|
|
return render(request, 'curso/inscripciones.html',contexto)
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
def enviar_notificacion(request,curso_id):
|
|
|
if request.method == 'POST':
|
|
|
|
|
|
form = NotificacionForm(request.POST)
|
|
|
if form.is_valid(): # El asunto y la descripción estan correctos
|
|
|
curso = get_object_or_404(Curso, pk=curso_id) # El curso al cual se enviara la notificación existe
|
|
|
|
|
|
# Valido que la notificación que quiere enviar el instructor sea para un curso del cual el es el dueño
|
|
|
curso_del_propietario = Curso.objects.filter( Q(id=curso_id) & Q(instructor=request.user) )
|
|
|
if not curso_del_propietario.exists() : # El instructor no es dueño del curso
|
|
|
return JsonResponse({'success': False, 'error': 'Acción no autorizada.' })
|
|
|
|
|
|
# Extraigo los correos de los alumnos a los cuales se les enviara la notificación
|
|
|
inscritos = Inscripcion.objects.filter( curso=curso )
|
|
|
subject_del_correo = "Labsol - Notificación del curso: " + str( curso.nombre )
|
|
|
recipient_list = []
|
|
|
for inscrito in inscritos:
|
|
|
recipient_list.append( inscrito.estudiante.email )
|
|
|
|
|
|
# Se envia el correo a todos los inscritos al curso y guardamos en base de datos la notificación
|
|
|
enviar_correo_notificacion(curso.nombre,recipient_list,request.POST.get('asunto'),descripcion=request.POST.get('descripcion'))
|
|
|
nueva_notificacion = Notificacion( asunto=request.POST.get('asunto'), descripcion=request.POST.get('descripcion'), curso=curso, instructor=request.user )
|
|
|
nueva_notificacion.save()
|
|
|
|
|
|
URL_destino = reverse('curso:ver_curso', args=[curso_id])
|
|
|
messages.success(request, 'Se ha enviado correctamente la notificacion')
|
|
|
return JsonResponse({'success':True,'redirectUrl': URL_destino})
|
|
|
|
|
|
else:
|
|
|
return JsonResponse({'success': False, 'errors': form.errors})
|
|
|
|
|
|
else:
|
|
|
return JsonResponse({'success': False, 'error': 'Método no autorizado.' })
|
|
|
|
|
|
|
|
|
# Muestra las notificaciones que ha enviado un instructor en un curso
|
|
|
@login_required
|
|
|
def ver_notificaciones(request,curso_id):
|
|
|
curso = get_object_or_404(Curso, pk=curso_id) # El curso al cual se enviara la notificación existe
|
|
|
|
|
|
# Valido que la notificaciones que quiere ver el instructor sean de un curso del cual el es el creador
|
|
|
curso_del_propietario = Curso.objects.filter( Q(id=curso_id) & Q(instructor=request.user) )
|
|
|
print(curso_del_propietario)
|
|
|
|
|
|
if not curso_del_propietario.exists() : # El instructor no es dueño del curso
|
|
|
return pagina_no_encontrada(request,"")
|
|
|
|
|
|
# Extraigo todas las notificaciones creadas por el profesor ordenadas por fecha de la más reciente a la más antigua
|
|
|
notificaciones = Notificacion.objects.filter(curso=curso).order_by('-fecha_creacion')
|
|
|
context = {}
|
|
|
context['curso'] = curso
|
|
|
|
|
|
paginator = Paginator(notificaciones, 15)
|
|
|
|
|
|
numero_de_pagina = request.GET.get('page')
|
|
|
page_obj = paginator.get_page(numero_de_pagina)
|
|
|
|
|
|
context = {}
|
|
|
context['pagination'] = page_obj
|
|
|
|
|
|
return render(request,'notificacion/notificaciones_instructor.html',context) |