Skip to content

Commit

Permalink
fix No matricular profesores inactivos o sin correo
Browse files Browse the repository at this point in the history
  • Loading branch information
quique committed Nov 10, 2021
1 parent 9ace75c commit 555ab88
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 3 deletions.
15 changes: 13 additions & 2 deletions accounts/models.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# standard library
# Standard library
import json

# third-party
# Third-party
from social_django.models import UserSocialAuth
from social_django.utils import load_strategy

Expand Down Expand Up @@ -59,6 +59,13 @@ class CustomUser(AbstractUser):
)
colectivos = models.CharField(max_length=127, blank=True, null=True)

class Meta:
ordering = (
'last_name',
'last_name_2',
'first_name',
)

@property
def full_name(self):
"""Devuelve el nombre completo (nombre y los dos apellidos)."""
Expand All @@ -75,6 +82,10 @@ def get_full_name(self):
def __str__(self):
return self.username

def actualizar(self, request):
"""Actualiza el usuario con los datos de Gestión de Identidades."""
get_identidad(load_strategy(request), None, self)

def get_colectivo_principal(self):
"""Devuelve el colectivo principal del usuario.
Expand Down
34 changes: 33 additions & 1 deletion geo/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -907,23 +907,55 @@ def get_success_url(self):


class ProfesorCursoAnyadirView(LoginRequiredMixin, ChecksMixin, View):
"""Crea una asignación profesor-curso."""
"""
Matricula a un usuario como profesor de un curso.
Crea el usuario si no existe, y crea una asignación profesor-curso.
"""

def post(self, request, *args, **kwargs):
curso_id = request.POST.get('curso_id')
curso = get_object_or_404(Curso, pk=curso_id)

# Obtenemos el usuario (si ya existe en el sistema).
User = get_user_model()
nip = request.POST.get('nip')
profesor = get_object_or_None(User, username=nip)

if not profesor:
# El usuario no existe previamente. Lo creamos con los datos de Gestión de Identidades.
try:
profesor = User.crear_usuario(request, nip)
except Exception as ex:
messages.error(request, 'ERROR: %s' % ex.args[0])
return redirect('curso_detail', curso_id)
else:
# El usuario existe. Actualizamos sus datos con los de Gestión de Identidades.
try:
profesor.actualizar(self.request)
except Exception as ex:
# Si Identidades devuelve un error, finalizamos mostrando el mensaje de error.
messages.error(request, f'ERROR: {ex}')
return redirect('curso_detail', curso_id)

# Si el usuario no está activo, finalizamos explicando esta circunstancia.
if not profesor.is_active:
messages.error(
request,
f'ERROR: {profesor.full_name} no está activo en Gestión de Identidades.',
)
return redirect('curso_detail', curso_id)

# Si el usuario no tiene email, no podrá entrar en Moodle.
if not profesor.email:
messages.error(
request,
f'ERROR: {profesor.full_name} no tiene establecida'
' ninguna dirección de correo electrónico en Gestión de Identidades.',
)
return redirect('curso_detail', curso_id)

# Añadimos al usuario como profesor del curso.
try:
curso.anyadir_profesor(profesor)
except Exception as ex:
Expand Down

0 comments on commit 555ab88

Please sign in to comment.