2018-01-31 09:15:51 +00:00
|
|
|
from django.contrib.auth.models import User, Group
|
2018-03-01 10:25:34 +00:00
|
|
|
from django.contrib.auth.mixins import PermissionRequiredMixin, LoginRequiredMixin
|
2018-02-28 20:25:44 +00:00
|
|
|
from django.views.generic import CreateView, UpdateView, DeleteView, DetailView
|
2018-02-28 17:11:47 +00:00
|
|
|
from django.contrib.auth.views import LoginView, LogoutView, PasswordChangeView
|
|
|
|
from django.contrib.auth.hashers import make_password
|
|
|
|
from django.contrib.messages.views import SuccessMessageMixin
|
2018-01-31 09:15:51 +00:00
|
|
|
from django.urls import reverse, reverse_lazy
|
|
|
|
from django.shortcuts import get_object_or_404
|
2018-01-14 12:19:11 +00:00
|
|
|
|
2018-01-31 10:53:37 +00:00
|
|
|
from .models import UserProfile, SchoolProfile
|
2018-02-28 20:25:44 +00:00
|
|
|
from content.models import Content
|
2018-01-31 09:15:51 +00:00
|
|
|
|
|
|
|
|
|
|
|
class CreateUser(CreateView):
|
|
|
|
model = User
|
|
|
|
fields = [
|
|
|
|
'first_name',
|
|
|
|
'last_name',
|
|
|
|
'email',
|
|
|
|
'username',
|
|
|
|
'password',
|
|
|
|
]
|
|
|
|
template_name = 'edit.html'
|
|
|
|
|
|
|
|
def get_success_url(self):
|
|
|
|
return reverse(
|
|
|
|
'users:create-userprofile',
|
|
|
|
kwargs={'pk': self.object.pk}
|
|
|
|
)
|
|
|
|
|
|
|
|
def get_context_data(self, **kwargs):
|
|
|
|
context = super().get_context_data(**kwargs)
|
|
|
|
context['title'] = "Inscription"
|
|
|
|
context['validate'] = "S'inscrire"
|
|
|
|
return context
|
|
|
|
|
2018-02-28 17:11:47 +00:00
|
|
|
def form_valid(self, form):
|
|
|
|
r = super().form_valid(form)
|
|
|
|
self.object.set_password(form.cleaned_data['password'])
|
|
|
|
self.object.save()
|
|
|
|
return r
|
|
|
|
|
2018-03-01 10:25:34 +00:00
|
|
|
class Profile(LoginRequiredMixin, UpdateView):
|
2018-02-28 17:11:47 +00:00
|
|
|
model = User
|
|
|
|
template_name = 'users/profile.html'
|
|
|
|
fields = [
|
|
|
|
'username',
|
|
|
|
'first_name',
|
|
|
|
'last_name',
|
|
|
|
'email'
|
|
|
|
]
|
|
|
|
|
|
|
|
def get_context_data(self, **kwargs):
|
|
|
|
context = super().get_context_data(**kwargs)
|
|
|
|
context['title'] = self.object.username
|
|
|
|
context['validate'] = "Modifier"
|
|
|
|
return context
|
|
|
|
|
|
|
|
def get_success_url(self):
|
|
|
|
return reverse(
|
2018-03-01 10:25:34 +00:00
|
|
|
'users:profile',
|
2018-02-28 17:11:47 +00:00
|
|
|
kwargs={'pk': self.object.pk}
|
|
|
|
)
|
|
|
|
|
2018-01-31 09:15:51 +00:00
|
|
|
|
|
|
|
class CreateUserProfile(CreateView):
|
|
|
|
model = UserProfile
|
|
|
|
fields = ['school']
|
|
|
|
template_name = 'edit.html'
|
|
|
|
|
|
|
|
success_url = reverse_lazy('home')
|
|
|
|
|
|
|
|
def get_context_data(self, **kwargs):
|
|
|
|
context = super().get_context_data(**kwargs)
|
|
|
|
context['title'] = "Choix de l'école"
|
|
|
|
context['validate'] = "Choisir"
|
|
|
|
return context
|
|
|
|
|
|
|
|
def form_valid(self, form):
|
|
|
|
form.instance.user = get_object_or_404(User, pk=self.kwargs['pk'])
|
|
|
|
return super(CreateUserProfile, self).form_valid(form)
|
2018-01-31 10:53:37 +00:00
|
|
|
|
|
|
|
|
2018-03-01 10:25:34 +00:00
|
|
|
class CreateSchool(LoginRequiredMixin, PermissionRequiredMixin, CreateView):
|
|
|
|
permission_required = 'users.add_schoolprofile'
|
2018-01-31 10:53:37 +00:00
|
|
|
model = Group
|
2018-01-31 12:01:04 +00:00
|
|
|
fields = ['name']
|
2018-01-31 10:53:37 +00:00
|
|
|
template_name = 'edit.html'
|
2018-01-31 12:01:04 +00:00
|
|
|
success_url = reverse_lazy('settings:index')
|
2018-01-31 10:53:37 +00:00
|
|
|
|
|
|
|
def get_context_data(self, **kwargs):
|
|
|
|
context = super().get_context_data(**kwargs)
|
|
|
|
context['title'] = "Création de l'école"
|
|
|
|
context['validate'] = "Créer"
|
|
|
|
return context
|
|
|
|
|
|
|
|
def form_valid(self, form):
|
|
|
|
response = super(CreateSchool, self).form_valid(form)
|
|
|
|
profile = SchoolProfile()
|
|
|
|
profile.group = form.instance
|
|
|
|
profile.save()
|
|
|
|
return response
|
2018-01-31 12:01:04 +00:00
|
|
|
|
|
|
|
|
2018-03-01 10:25:34 +00:00
|
|
|
class EditSchool(LoginRequiredMixin, PermissionRequiredMixin, UpdateView):
|
2018-01-31 12:01:04 +00:00
|
|
|
model = Group
|
|
|
|
fields = ['name']
|
|
|
|
template_name = 'edit.html'
|
2018-03-01 10:25:34 +00:00
|
|
|
queryset = Group.objects.filter(school__isnull=False)
|
|
|
|
|
|
|
|
def get_success_url(self):
|
|
|
|
return reverse('users:school', kwargs={'pk':self.object.pk})
|
2018-01-31 12:01:04 +00:00
|
|
|
|
|
|
|
def get_context_data(self, **kwargs):
|
|
|
|
context = super().get_context_data(**kwargs)
|
|
|
|
context['title'] = "Édition de l'école"
|
|
|
|
context['validate'] = "Modifier"
|
|
|
|
return context
|
2018-02-28 14:06:55 +00:00
|
|
|
|
2018-03-01 10:25:34 +00:00
|
|
|
def has_permission(self):
|
|
|
|
return self.request.user.has_perm('users.manage_'+str(self.kwargs['pk']))
|
|
|
|
|
|
|
|
def form_valid(self, *args, **kwargs):
|
|
|
|
r = super().form_valid(*args, **kwargs)
|
|
|
|
self.object.school.save()
|
|
|
|
return r
|
|
|
|
|
2018-02-28 14:06:55 +00:00
|
|
|
|
2018-03-01 10:25:34 +00:00
|
|
|
class DeleteSchool(LoginRequiredMixin, PermissionRequiredMixin, DeleteView):
|
2018-02-28 14:06:55 +00:00
|
|
|
model = Group
|
2018-03-01 10:25:34 +00:00
|
|
|
permission_required = 'users.delete_schoolprofile'
|
2018-02-28 14:06:55 +00:00
|
|
|
|
2018-02-28 17:11:47 +00:00
|
|
|
|
2018-03-01 10:25:34 +00:00
|
|
|
class School(LoginRequiredMixin, PermissionRequiredMixin, DetailView):
|
|
|
|
model = Group
|
2018-02-28 20:25:44 +00:00
|
|
|
template_name = "users/school.html"
|
|
|
|
|
|
|
|
def get_context_data(self, **kwargs):
|
|
|
|
context = super().get_context_data()
|
2018-03-01 10:25:34 +00:00
|
|
|
context['contents'] = Content.objects.filter(school_owner=self.object.school)
|
2018-02-28 21:16:53 +00:00
|
|
|
context['school'] = True
|
2018-03-01 10:25:34 +00:00
|
|
|
context['members'] = User.objects.filter(userprofile__school=self.object.school)
|
2018-02-28 20:25:44 +00:00
|
|
|
return context
|
|
|
|
|
2018-03-01 10:25:34 +00:00
|
|
|
def has_permission(self):
|
|
|
|
return self.request.user.has_perm('users.view_'+str(self.kwargs['pk']))
|
|
|
|
|
2018-02-28 20:25:44 +00:00
|
|
|
|
2018-02-28 17:11:47 +00:00
|
|
|
class Logout(SuccessMessageMixin, LogoutView):
|
|
|
|
success_message = "Vous vous êtes bien déconnecté."
|
|
|
|
|
|
|
|
|
|
|
|
class Login(SuccessMessageMixin, LoginView):
|
|
|
|
template_name = "edit.html"
|
|
|
|
success_message = "Bienvenue !"
|
|
|
|
extra_context = {
|
|
|
|
'title' : "Connexion",
|
|
|
|
'validate' : "Se connecter",
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
class PasswordChange(SuccessMessageMixin, PasswordChangeView):
|
|
|
|
template_name = "edit.html"
|
|
|
|
success_url = reverse_lazy("home")
|
|
|
|
success_message = "Le mot de passe a été changé."
|
|
|
|
extra_context = {
|
|
|
|
'title' : "Changer le mot de passe",
|
|
|
|
'validate' : "Changer",
|
|
|
|
}
|