1
0
mirror of https://gitlab.crans.org/mediatek/med.git synced 2025-07-06 03:23:55 +02:00

Simplify user profile

This commit is contained in:
Alexandre Iooss
2019-08-08 16:18:15 +02:00
parent ef0bd78af5
commit 8a1af4c2b3
15 changed files with 102 additions and 412 deletions

View File

@ -5,7 +5,6 @@
from django.contrib import messages
from django.contrib.auth.decorators import login_required, permission_required
from django.core.mail import send_mail
from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
from django.core.urlresolvers import reverse
from django.db import transaction
from django.shortcuts import get_object_or_404, redirect, render
@ -15,11 +14,11 @@ from django.utils import timezone
from reversion import revisions as reversion
from med.settings import ASSO_EMAIL, ASSO_NAME, EMAIL_FROM, \
PAGINATION_NUMBER, REQ_EXPIRE_STR, SITE_NAME
REQ_EXPIRE_STR, SITE_NAME
from media.models import Emprunt
from users.forms import BaseInfoForm, InfoForm
from users.forms import BaseInfoForm
from users.forms import PassForm
from users.models import Adhesion, Clef, Request, Right, User
from users.models import Adhesion, Request, Right, User
def form(ctx, template, request):
@ -64,7 +63,7 @@ def reset_passwd_mail(req, request):
@login_required
@permission_required('bureau')
@permission_required('users.add_user')
def new_user(request):
"""
Vue de création d'un nouvel utilisateur
@ -89,26 +88,11 @@ def new_user(request):
@login_required
def edit_info(request, userid):
def edit_info(request):
"""
Edite un utilisateur à partir de son id,
si l'id est différent de request.user,
vérifie la possession du droit admin
Edite son utilisateur
"""
try:
user = User.objects.get(pk=userid)
except User.DoesNotExist:
messages.error(request, "Utilisateur inexistant")
return redirect("/users/")
if not request.user.has_perms(('bureau',)) and user != request.user:
messages.error(request,
"Vous ne pouvez pas modifier un autre user que vous "
"sans droit admin")
return redirect("/users/profil/" + str(request.user.id))
if not request.user.has_perms(('bureau',)):
user = BaseInfoForm(request.POST or None, instance=user)
else:
user = InfoForm(request.POST or None, instance=user)
user = BaseInfoForm(request.POST or None, instance=request.user)
if user.is_valid():
with transaction.atomic(), reversion.create_revision():
user.save()
@ -116,99 +100,33 @@ def edit_info(request, userid):
reversion.set_comment("Champs modifié(s) : %s" % ', '.join(
field for field in user.changed_data))
messages.success(request, "L'user a bien été modifié")
return redirect("/users/profil/" + userid)
return redirect("/users/profil/")
return form({'userform': user}, 'users/user.html', request)
@login_required
def password(request, userid):
""" Reinitialisation d'un mot de passe à partir de l'userid,
pour self par défaut, pour tous sans droit si droit admin,
pour tous si droit bureau """
try:
user = User.objects.get(pk=userid)
except User.DoesNotExist:
messages.error(request, "Utilisateur inexistant")
return redirect("/users/")
if not request.user.has_perms(('bureau',)) and user != request.user:
messages.error(request,
"Vous ne pouvez pas modifier un autre user que vous "
"sans droit admin")
return redirect("/users/profil/" + str(request.user.id))
def password(request):
"""
Reinitialisation d'un mot de passe
"""
u_form = PassForm(request.POST or None)
if u_form.is_valid():
return password_change_action(u_form, user, request)
return password_change_action(u_form, request.user, request)
return form({'userform': u_form}, 'users/user.html', request)
@login_required
@permission_required('perm')
def index_clef(request):
clef_list = Clef.objects.all().order_by('nom')
return render(request, 'users/index_clef.html', {'clef_list': clef_list})
@login_required
@permission_required('perm')
def index(request):
""" Affiche l'ensemble des users, need droit admin """
users_list = User.objects.order_by('first_name')
paginator = Paginator(users_list, PAGINATION_NUMBER)
page = request.GET.get('page')
try:
users_list = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
users_list = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
users_list = paginator.page(paginator.num_pages)
return render(request, 'users/index.html', {'users_list': users_list})
@login_required
@permission_required('perm')
def index_ajour(request):
""" Affiche l'ensemble des users, need droit admin """
users_list = Adhesion.objects.all().order_by(
'annee_debut').reverse().first().adherent.all().order_by('first_name')
paginator = Paginator(users_list, PAGINATION_NUMBER)
page = request.GET.get('page')
try:
users_list = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
users_list = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
users_list = paginator.page(paginator.num_pages)
return render(request, 'users/index.html', {'users_list': users_list})
@login_required
def mon_profil(request):
return redirect("/users/profil/" + str(request.user.id))
@login_required
def profil(request, userid):
try:
users = User.objects.get(pk=userid)
except User.DoesNotExist:
messages.error(request, "Utilisateur inexistant")
return redirect("/users/")
if not request.user.has_perms(('perm',)) and users != request.user:
messages.error(request,
"Vous ne pouvez pas afficher un autre user "
"que vous sans droit perm")
return redirect("/users/profil/" + str(request.user.id))
emprunts_list = Emprunt.objects.filter(user=users)
list_droits = Right.objects.filter(user=users)
def profil(request):
"""
Voir son profil
"""
emprunts_list = Emprunt.objects.filter(user=request.user)
list_droits = Right.objects.filter(user=request.user)
return render(
request,
'users/profil.html',
{
'user': users,
'user': request.user,
'emprunts_list': emprunts_list,
'list_droits': list_droits,
}
@ -216,7 +134,7 @@ def profil(request, userid):
@login_required
@permission_required('bureau')
@permission_required('users.add_adhesion')
def adherer(request, userid):
try:
users = User.objects.get(pk=userid)