Interfaces et scolarité

This commit is contained in:
Evarin 2018-12-28 00:20:14 +01:00
parent 9bdc6c277f
commit 52f574678d
4 changed files with 61 additions and 22 deletions

View file

@ -2,6 +2,9 @@
from __future__ import unicode_literals
from allauth.account.models import EmailAddress
from allauth.socialaccount.models import SocialAccount
from django.db import models
from django.db.models.signals import post_save
from django.contrib.auth.models import User
@ -9,6 +12,7 @@ from django.contrib.gis.db import models as geomodels
from django.template.defaultfilters import slugify
from django.forms.widgets import DateInput
from django.urls import reverse
from django.utils import timezone
from django.utils.html import strip_tags
@ -47,6 +51,18 @@ class Normalien(models.Model):
def stages_publics(self):
return self.stages.filter(public=True).order_by('-date_debut')
@property
def en_scolarite(self):
return SocialAccount.objects.filter(user_id=self.user_id,
provider="clipper").exists()
def has_nonENS_email(self):
a = EmailAddress.objects.filter(user_id=self.user_id,
verified=True) \
.exclude(email__endswith="ens.fr")
print(a)
return a.exists()
# Hook à la création d'un nouvel utilisateur : récupération de ses infos par LDAP
def create_user_profile(sender, instance, created, **kwargs):
if created:

View file

@ -7,21 +7,25 @@
<h1>Bonjour {{ user.profil.nom }} !</h1>
<article>
<h2>Mes stages</h2>
<ul class="condensed-stages">
{% for stage in user.profil.stages.all %}
<li class="stage-{{ stage.public|yesno:"publie,brouillon" }}">
<a href="{% url "avisstage:stage" stage.id %}">
{{ stage.sujet }}
</a>
</li>
{% endfor %}
<li class="stage-ajout">
<a href="{% url "avisstage:stage_ajout" %}">
Ajouter un stage
</a>
</li>
</ul>
<h2>Mon compte</h2>
<section class="profil">
{% if user.profil.en_scolarite %}
<p class="scolarite">Statut : En scolarité</p>
<p>Vous pouvez accéder à l'ensemble du site, et aux fiches de stages.</p>
<p>Quand vous n'aurez plus de compte clipper (après votre scolarité), votre accès sera restreint à vos propres expériences, que vous pourrez ajouter, modifier, supprimer.</p>
<p>Pensez à renseigner une adresse e-mail non-ENS pour conserver cet accès, et permettre aux futur⋅e⋅s normalien⋅ne⋅s de toujours vous contacter !</p>
{% else %}
<p class="scolarite">Statut : Archicube</p>
<p>Vous ne pouvez plus accéder qu'à vos propres expériences pour les modifier, et tenir à jour votre profil.</p>
<p>Si vous êtes encore en scolarité, merci de vous <a href="{% url "clipper_login" %}">reconnecter en passant par le serveur d'authentification de l'ENS</a> pour mettre à jour votre statut.</p>
{% endif %}
</section>
<p class="help_text">Le statut est mis à jour automatiquement chaque année selon le mode de connexion que vous utilisez.</p>
{% if not user.profil.has_nonENS_email %}<p class="warning">Vous n'avez pas renseigné d'adresse mail autre que celle de l'ENS. Pensez à le faire !</p>{% endif %}
<p><a href="{% url "account_email" %}">Gérer les adresses e-mail liées à mon compte</a></p>
{% if not user.password %}<p class="warning">Vous n'avez pas créé de mot de passe interne à ExperiENS. Pensez-y pour garder l'accès au site quand vous n'aurez plus de compte clipper !</p>{% endif %}
<p><a href="{% url "account_change_password" %}">Changer mon mot de passe ExperiENS</a></p>
<p>Votre nom d'utilisateur pour la connexion directement sur ExperiENS est <tt>{{ user.username }}</tt>.</p>
</article>
<article>
@ -44,4 +48,22 @@
</section>
{% endwith %}
</article>
<article>
<h2>Mes stages</h2>
<ul class="condensed-stages">
{% for stage in user.profil.stages.all %}
<li class="stage-{{ stage.public|yesno:"publie,brouillon" }}">
<a href="{% url "avisstage:stage" stage.id %}">
{{ stage.sujet }}
</a>
</li>
{% endfor %}
<li class="stage-ajout">
<a href="{% url "avisstage:stage_ajout" %}">
Ajouter un stage
</a>
</li>
</ul>
</article>
{% endblock %}

View file

@ -127,7 +127,7 @@ SOCIALACCOUNT_ADAPTER='allauth_ens.adapter.LongTermClipperAccountAdapter'
LOGIN_URL = reverse_lazy('account_login')
LOGOUT_URL = reverse_lazy('account_logout')
LOGIN_REDIRECT_URL = reverse_lazy('avisstage:perso')
LOGGING = {
'version': 1,

View file

@ -9,3 +9,4 @@ pytz==2018.*
django-tastypie==0.14.*
lxml==4.2.*
django-elasticsearch-dsl==0.4.*
django-allauth-ens==1.1.*