refactor Coordinadores

parent 8781a12a
Pipeline #513 failed with stage
in 0 seconds
......@@ -123,7 +123,7 @@
}
},
{ "model": "indo.tipoparticipacion", "pk": "coordinador", "fields": {} },
{ "model": "indo.tipoparticipacion", "pk": "coordinador_principal", "fields": {} },
{ "model": "indo.tipoparticipacion", "pk": "coordinador_2", "fields": {} },
{ "model": "indo.tipoparticipacion", "pk": "invitacion_rehusada", "fields": {} },
{ "model": "indo.tipoparticipacion", "pk": "invitado", "fields": {} },
{ "model": "indo.tipoparticipacion", "pk": "participante", "fields": {} }
......
......@@ -188,10 +188,10 @@ class ParticipanteProyecto(models.Model):
def get_cargo(self):
if self.tipo_participacion.nombre == "coordinador":
return _("Coordinadora") if self.usuario.sexo == "F" else _("Coordinador")
if self.tipo_participacion.nombre == "coordinador_principal":
if self.tipo_participacion.nombre == "coordinador_2":
if self.usuario.sexo == "F":
return _("Coordinadora principal")
return _("Coordinador principal")
return _("Coordinadora auxiliar")
return _("Coordinador auxiliar")
return _("Participante")
......@@ -486,12 +486,20 @@ class Proyecto(models.Model):
except ParticipanteProyecto.DoesNotExist:
return None
# TODO: Soporte para coordinador_principal
def get_usuario_coordinador(self):
pp = ParticipanteProyecto.objects.get(
proyecto_id=self.id, tipo_participacion_id="coordinador"
)
return pp.usuario
def get_coordinador(self):
"""Devuelve el usuario coordinador del proyecto"""
coordinador = self.get_participante_or_none("coordinador")
return coordinador.usuario if coordinador else None
def get_coordinador_2(self):
"""Devuelve el segundo coordinador del proyecto (los PIET pueden tener 2)."""
coordinador_2 = self.get_participante_or_none("coordinador_2")
return coordinador_2.usuario if coordinador_2 else None
def get_coordinadores(self):
"""Devuelve los usuarios coordinadores del proyecto."""
coordinadores = [self.get_coordinador(), self.get_coordinador_2()]
return list(filter(None, coordinadores))
def get_usuarios_vinculados(self):
"""
......
......@@ -37,7 +37,7 @@ class ChecksMixin(UserPassesTestMixin):
proyecto = get_object_or_404(Proyecto, pk=proyecto_id)
usuario_actual = self.request.user
coordinadores_participantes = proyecto.participantes.filter(
tipo_participacion__in=["coordinador", "coordinador_principal"]
tipo_participacion__in=["coordinador", "coordinador_2"]
).all()
usuarios_coordinadores = list(
map(lambda p: p.usuario, coordinadores_participantes)
......@@ -292,16 +292,9 @@ class ProyectoCreateView(LoginRequiredMixin, ChecksMixin, CreateView):
return form
def _guardar_coordinador(self, proyecto):
# Los PIET debe solicitarlos uno de los coordinadores del estudio
# ("coordinador principal") quien podrá nombrar a otro coordinador.
if proyecto.programa.nombre_corto == "PIET":
tipo_participacion = "coordinador_principal"
else:
tipo_participacion = "coordinador"
pp = ParticipanteProyecto(
proyecto=proyecto,
tipo_participacion=TipoParticipacion(nombre=tipo_participacion),
tipo_participacion=TipoParticipacion(nombre="coordinador"),
usuario=self.request.user,
)
pp.save()
......@@ -352,13 +345,11 @@ class ProyectoDetailView(LoginRequiredMixin, ChecksMixin, DetailView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
coordinador_principal = self.object.get_participante_or_none(
"coordinador_principal"
)
context["coordinador_principal"] = coordinador_principal
pp_coordinador = self.object.get_participante_or_none("coordinador")
context["pp_coordinador"] = pp_coordinador
coordinador = self.object.get_participante_or_none("coordinador")
context["coordinador"] = coordinador
pp_coordinador_2 = self.object.get_participante_or_none("coordinador_2")
context["pp_coordinador_2"] = pp_coordinador_2
participantes = (
self.object.participantes.filter(tipo_participacion="participante")
......@@ -586,7 +577,7 @@ class ProyectosUsuarioView(LoginRequiredMixin, TemplateView):
participantes__usuario=usuario,
participantes__tipo_participacion_id__in=[
"coordinador",
"coordinador_principal",
"coordinador_2",
],
)
.exclude(estado="ANULADO")
......
......@@ -47,18 +47,18 @@
<td>{{ proyecto.estudio.nombre }}</td>
</tr>
{% endif %}
{% if coordinador_principal %}
<tr>
<th scope="row"><strong>{{ coordinador_principal.get_cargo }}</strong>:</th>
<td>{{ coordinador_principal.usuario.get_full_name }}</td>
</tr>
{% endif %}
{% if coordinador %}
{% if pp_coordinador %}
<tr>
<th scope="row"><strong>{{ coordinador.get_cargo }}</strong>:</th>
<td>{{ coordinador.usuario.get_full_name }}</td>
<th scope="row"><strong>{{ pp_coordinador.get_cargo }}</strong>:</th>
<td>{{ pp_coordinador.usuario.get_full_name }}</td>
</tr>
{% endif %}
{% if pp_coordinador_2 %}
<tr>
<th scope="row"><strong>{{ pp_coordinador_2.get_cargo }}</strong>:</th>
<td>{{ pp_coordinador_2.usuario.get_full_name }}</td>
</tr>
{% endif %}
<tr>
<th scope="row"><strong>{% trans 'Estado' %}</strong>:</th>
<td>{{ proyecto.get_estado_display }}</td>
......
......@@ -56,7 +56,7 @@
<td>{{proyecto.programa.nombre_corto}}</td>
<td>{{proyecto.linea.nombre}}</td>
<td><a href="{% url 'proyecto_detail' proyecto.id %}">{{ proyecto.titulo }}</a></td>
<td>{{proyecto.get_usuario_coordinador.get_full_name}}</td>
<td>{{proyecto.get_coordinador.get_full_name}}</td>
<td>{{proyecto.get_estado_display}}</td>
<td>
<button
......@@ -100,7 +100,7 @@
<td>{{proyecto.programa.nombre_corto}}</td>
<td>{{proyecto.linea.nombre}}</td>
<td><a href="{% url 'proyecto_detail' proyecto.id %}">{{ proyecto.titulo }}</a></td>
<td>{{proyecto.get_usuario_coordinador.get_full_name}}</td>
<td>{{proyecto.get_coordinador.get_full_name}}</td>
<td>{{proyecto.get_estado_display}}</td>
<td>
<form action="{% url 'participante_aceptar' proyecto_id=proyecto.id %}" id="aceptar-form" method="post">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment