from django.contrib import messages from django.contrib.messages.views import SuccessMessageMixin from django.contrib.auth import authenticate, login from django.contrib.auth.decorators import permission_required from django.contrib.auth.models import Group, User from django.core.urlresolvers import reverse_lazy from django.db.models import Prefetch from django.shortcuts import render from django.utils.crypto import get_random_string from django.views.generic.edit import CreateView, UpdateView from django_cas_ng.views import logout as cas_logout_view from kfet.decorators import teamkfet_required from .forms import GroupForm from .models import GenericTeamToken @teamkfet_required def login_genericteam(request): # Check si besoin de déconnecter l'utilisateur de CAS cas_logout = None if request.user.profile.login_clipper: # Récupèration de la vue de déconnexion de CAS # Ici, car request sera modifié après next_page = request.META.get('HTTP_REFERER', None) cas_logout = cas_logout_view(request, next_page=next_page) # Authentification du compte générique token = GenericTeamToken.objects.create(token=get_random_string(50)) user = authenticate(username="kfet_genericteam", token=token.token) login(request, user) messages.success(request, "Connecté en utilisateur partagé") return cas_logout or render(request, "kfet/login_genericteam.html") @permission_required('kfet.manage_perms') def account_group(request): user_pre = Prefetch( 'user_set', queryset=User.objects.select_related('profile__account_kfet'), ) groups = ( Group.objects .filter(name__icontains='K-Fêt') .prefetch_related('permissions', user_pre) ) return render(request, 'kfet/account_group.html', { 'groups': groups, }) class AccountGroupCreate(SuccessMessageMixin, CreateView): model = Group template_name = 'kfet/account_group_form.html' form_class = GroupForm success_message = 'Nouveau groupe : %(name)s' success_url = reverse_lazy('kfet.account.group') class AccountGroupUpdate(SuccessMessageMixin, UpdateView): queryset = Group.objects.filter(name__icontains='K-Fêt') template_name = 'kfet/account_group_form.html' form_class = GroupForm success_message = 'Groupe modifié : %(name)s' success_url = reverse_lazy('kfet.account.group')