Gestion des admins d'école
This commit is contained in:
parent
1ccbd0cea9
commit
1721c95925
3 changed files with 65 additions and 11 deletions
|
@ -7,6 +7,7 @@
|
||||||
<i class="fa fa-edit"></i>
|
<i class="fa fa-edit"></i>
|
||||||
Éditer
|
Éditer
|
||||||
</a>
|
</a>
|
||||||
|
{% if manager_right in perms %}
|
||||||
<h2>Membres</h2>
|
<h2>Membres</h2>
|
||||||
<table class="table table-striped">
|
<table class="table table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -17,18 +18,28 @@
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for member in members %}
|
{% for member in members %}
|
||||||
<td>{{member.last_name}}</td>
|
<tr>
|
||||||
<td>{{member.first_name}}</td>
|
<td>{{member.last_name}}</td>
|
||||||
<td>{{member.username}}</td>
|
<td>{{member.first_name}}</td>
|
||||||
<td>
|
<td>{{member.username}}</td>
|
||||||
<a class="btn btn-outline-warning btn-sm" href="">
|
<td>
|
||||||
<i class="fa fa-trash"></i>
|
{% if member in manager_group.user_set.all %}
|
||||||
Supprimer
|
<a class="btn btn-outline-danger btn-sm" href="{% url 'users:degrade-user' object.pk member.pk %}">
|
||||||
</a>
|
<i class="fa fa-trash"></i>
|
||||||
</td>
|
Enlever le privilège Administrateur
|
||||||
|
</a>
|
||||||
|
{% else %}
|
||||||
|
<a class="btn btn-outline-warning btn-sm" href="{% url 'users:promote-user' object.pk member.pk %}">
|
||||||
|
<i class="fa fa-star"></i>
|
||||||
|
Promouvoir administrateur
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
{% endif %}
|
||||||
<h2>Contenus</h2>
|
<h2>Contenus</h2>
|
||||||
<a class="btn btn-success btn-sm" href="{% url 'content:content-new' %}">
|
<a class="btn btn-success btn-sm" href="{% url 'content:content-new' %}">
|
||||||
<i class="fa fa-plus"></i>
|
<i class="fa fa-plus"></i>
|
||||||
|
|
|
@ -10,6 +10,8 @@ from .views import (
|
||||||
PasswordChange,
|
PasswordChange,
|
||||||
Profile,
|
Profile,
|
||||||
School,
|
School,
|
||||||
|
promote_user,
|
||||||
|
degrade_user
|
||||||
)
|
)
|
||||||
|
|
||||||
app_name = 'users'
|
app_name = 'users'
|
||||||
|
@ -54,6 +56,16 @@ urlpatterns = [
|
||||||
School.as_view(),
|
School.as_view(),
|
||||||
name='school'
|
name='school'
|
||||||
),
|
),
|
||||||
|
path(
|
||||||
|
'school/<int:school_pk>/degrade/<int:user_pk>',
|
||||||
|
degrade_user,
|
||||||
|
name='degrade-user'
|
||||||
|
),
|
||||||
|
path(
|
||||||
|
'school/<int:school_pk>/promote/<int:user_pk>',
|
||||||
|
promote_user,
|
||||||
|
name='promote-user'
|
||||||
|
),
|
||||||
path(
|
path(
|
||||||
'school/<int:pk>/edit',
|
'school/<int:pk>/edit',
|
||||||
EditSchool.as_view(),
|
EditSchool.as_view(),
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
from django.contrib.auth.models import User, Group
|
from django.contrib.auth.models import User, Group
|
||||||
from django.contrib.auth.mixins import PermissionRequiredMixin, LoginRequiredMixin
|
from django.contrib.auth.mixins import PermissionRequiredMixin, LoginRequiredMixin
|
||||||
from django.views.generic import CreateView, UpdateView, DeleteView, DetailView
|
from django.views.generic import CreateView, UpdateView, DeleteView, DetailView
|
||||||
from django.contrib.auth.views import LoginView, LogoutView, PasswordChangeView
|
from django.contrib.auth.views import LoginView, LogoutView, PasswordChangeView, login_required
|
||||||
from django.contrib.auth.hashers import make_password
|
from django.contrib.auth.hashers import make_password
|
||||||
from django.contrib.messages.views import SuccessMessageMixin
|
from django.contrib.messages.views import SuccessMessageMixin
|
||||||
|
from django.contrib import messages
|
||||||
from django.urls import reverse, reverse_lazy
|
from django.urls import reverse, reverse_lazy
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404, redirect
|
||||||
|
|
||||||
from .models import UserProfile, SchoolProfile
|
from .models import UserProfile, SchoolProfile
|
||||||
from content.models import Content
|
from content.models import Content
|
||||||
|
@ -140,6 +141,8 @@ class School(LoginRequiredMixin, PermissionRequiredMixin, DetailView):
|
||||||
context['contents'] = Content.objects.filter(school_owner=self.object.school)
|
context['contents'] = Content.objects.filter(school_owner=self.object.school)
|
||||||
context['school'] = True
|
context['school'] = True
|
||||||
context['members'] = User.objects.filter(userprofile__school=self.object.school)
|
context['members'] = User.objects.filter(userprofile__school=self.object.school)
|
||||||
|
context['manager_right'] = 'auth.manage_' + str(self.object.pk)
|
||||||
|
context['manager_group'],_ = Group.objects.get_or_create(name=str(self.object.pk)+'_admins')
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def has_permission(self):
|
def has_permission(self):
|
||||||
|
@ -167,3 +170,31 @@ class PasswordChange(SuccessMessageMixin, PasswordChangeView):
|
||||||
'title' : "Changer le mot de passe",
|
'title' : "Changer le mot de passe",
|
||||||
'validate' : "Changer",
|
'validate' : "Changer",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
def promote_user(request, school_pk, user_pk):
|
||||||
|
school = get_object_or_404(Group, pk=school_pk)
|
||||||
|
user = get_object_or_404(User, pk=user_pk)
|
||||||
|
if request.user.has_perm('manage_'+str(school.pk)):
|
||||||
|
admins,_ = Group.objects.get_or_create(name=str(school.pk)+'_admins')
|
||||||
|
user.groups.add(admins)
|
||||||
|
user.save()
|
||||||
|
messages.success(request, user.username + ' a été ajouté aux administrateurs de ' + school.name)
|
||||||
|
return redirect(reverse('users:school', kwargs={'pk':school.pk}))
|
||||||
|
messages.error(request, "Vous n'aves pas ce droit.")
|
||||||
|
return redirect('home')
|
||||||
|
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
def degrade_user(request, school_pk, user_pk):
|
||||||
|
school = get_object_or_404(Group, pk=school_pk)
|
||||||
|
user = get_object_or_404(User, pk=user_pk)
|
||||||
|
if request.user.has_perm('manage_'+str(school.pk)):
|
||||||
|
admins,_ = Group.objects.get_or_create(name=str(school.pk)+'_admins')
|
||||||
|
user.groups.remove(admins)
|
||||||
|
user.save()
|
||||||
|
messages.success(request, user.username + ' a été enlevé des administrateurs de ' + school.name)
|
||||||
|
return redirect(reverse('users:school', kwargs={'pk':school.pk}))
|
||||||
|
messages.error(request, "Vous n'aves pas ce droit.")
|
||||||
|
return redirect('home')
|
||||||
|
|
Loading…
Reference in a new issue