8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-11-24 20:33:11 +00:00

Pylint compliance on users

This commit is contained in:
Maël Kervella 2018-04-14 23:16:49 +00:00
parent 4a1b97bbe3
commit 1469c7d6a6
7 changed files with 180 additions and 102 deletions

View file

@ -20,5 +20,12 @@
# You should have received a copy of the GNU General Public License along # You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc., # with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
"""users
The app managing everything related to the users such as personal
informations or the right groups.
This is probably the most central app. It is strongly linked with
all the other because a user has devices (machines), a cotisation
(cotisations), a room (topologie)
"""
from .acl import * from .acl import *

View file

@ -132,7 +132,7 @@ class UserAdmin(VersionAdmin, BaseUserAdmin):
) )
# Need to reset the settings from BaseUserAdmin # Need to reset the settings from BaseUserAdmin
# They are using fields we don't use like 'is_staff' # They are using fields we don't use like 'is_staff'
list_filter=() list_filter = ()
fieldsets = ( fieldsets = (
(None, {'fields': ('pseudo', 'password')}), (None, {'fields': ('pseudo', 'password')}),
( (

View file

@ -41,6 +41,10 @@ from django.utils import timezone
from django.contrib.auth.models import Group, Permission from django.contrib.auth.models import Group, Permission
from preferences.models import OptionalUser from preferences.models import OptionalUser
from re2o.utils import remove_user_room
from re2o.mixins import FormRevMixin
from re2o.field_permissions import FieldPermissionFormMixin
from .models import ( from .models import (
User, User,
ServiceUser, ServiceUser,
@ -52,9 +56,6 @@ from .models import (
Adherent, Adherent,
Club Club
) )
from re2o.utils import remove_user_room
from re2o.mixins import FormRevMixin
from re2o.field_permissions import FieldPermissionFormMixin
class PassForm(FormRevMixin, FieldPermissionFormMixin, forms.ModelForm): class PassForm(FormRevMixin, FieldPermissionFormMixin, forms.ModelForm):
@ -97,8 +98,8 @@ class PassForm(FormRevMixin, FieldPermissionFormMixin, forms.ModelForm):
def clean_selfpasswd(self): def clean_selfpasswd(self):
"""Verifie si il y a lieu que le mdp self est correct""" """Verifie si il y a lieu que le mdp self est correct"""
if not self.instance.check_password( if not self.instance.check_password(
self.cleaned_data.get("selfpasswd") self.cleaned_data.get("selfpasswd")
): ):
raise forms.ValidationError("Le mot de passe actuel est incorrect") raise forms.ValidationError("Le mot de passe actuel est incorrect")
return return

View file

@ -187,6 +187,8 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
(2, 'STATE_ARCHIVE'), (2, 'STATE_ARCHIVE'),
) )
# TODO : Use only one of auto_uid and get_fresh_user_uid
@staticmethod
def auto_uid(): def auto_uid():
"""Renvoie un uid libre""" """Renvoie un uid libre"""
return get_fresh_user_uid() return get_fresh_user_uid()
@ -278,10 +280,14 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
@cached_property @cached_property
def is_class_club(self): def is_class_club(self):
""" Returns True if the object is a Club (subclassing User) """
# TODO : change to isinstance (cleaner)
return hasattr(self, 'club') return hasattr(self, 'club')
@cached_property @cached_property
def is_class_adherent(self): def is_class_adherent(self):
""" Returns True if the object is a Adherent (subclassing User) """
# TODO : change to isinstance (cleaner)
return hasattr(self, 'adherent') return hasattr(self, 'adherent')
@property @property
@ -607,8 +613,8 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
une machine inconnue sur le compte de l'user""" une machine inconnue sur le compte de l'user"""
all_interfaces = self.user_interfaces(active=False) all_interfaces = self.user_interfaces(active=False)
if all_interfaces.count() > OptionalMachine.get_cached_value( if all_interfaces.count() > OptionalMachine.get_cached_value(
'max_lambdauser_interfaces' 'max_lambdauser_interfaces'
): ):
return False, "Maximum de machines enregistrees atteinte" return False, "Maximum de machines enregistrees atteinte"
if not nas_type: if not nas_type:
return False, "Re2o ne sait pas à quel machinetype affecter cette\ return False, "Re2o ne sait pas à quel machinetype affecter cette\
@ -686,8 +692,8 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
num += 1 num += 1
return composed_pseudo(num) return composed_pseudo(num)
def can_edit(self, user_request, *args, **kwargs): def can_edit(self, user_request, *_args, **_kwargs):
"""Check if an user can edit an user object. """Check if a user can edit a user object.
:param self: The user which is to be edited. :param self: The user which is to be edited.
:param user_request: The user who requests to edit self. :param user_request: The user who requests to edit self.
@ -722,7 +728,15 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
return False, (u"Vous ne pouvez éditer un autre utilisateur " return False, (u"Vous ne pouvez éditer un autre utilisateur "
"que vous même") "que vous même")
def can_change_password(self, user_request, *args, **kwargs): def can_change_password(self, user_request, *_args, **_kwargs):
"""Check if a user can change a user's password
:param self: The user which is to be edited
:param user_request: The user who request to edit self
:returns: a message and a boolean which is True if self is a club
and user_request one of it's admins, or if user_request is self,
or if user_request has the right to change other's password
"""
if self.is_class_club and user_request.is_class_adherent: if self.is_class_club and user_request.is_class_adherent:
if (self == user_request or if (self == user_request or
user_request.has_perm('users.change_user_password') or user_request.has_perm('users.change_user_password') or
@ -743,38 +757,65 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
return False, (u"Vous ne pouvez éditer un autre utilisateur " return False, (u"Vous ne pouvez éditer un autre utilisateur "
"que vous même") "que vous même")
def check_selfpasswd(self, user_request, *args, **kwargs): def check_selfpasswd(self, user_request, *_args, **_kwargs):
""" Returns (True, None) if user_request is self, else returns
(False, None)
"""
return user_request == self, None return user_request == self, None
@staticmethod @staticmethod
def can_change_state(user_request, *args, **kwargs): def can_change_state(user_request, *_args, **_kwargs):
""" Check if a user can change a state
:param user_request: The user who request
:returns: a message and a boolean which is True if the user has
the right to change a state
"""
return ( return (
user_request.has_perm('users.change_user_state'), user_request.has_perm('users.change_user_state'),
"Droit requis pour changer l'état" "Droit requis pour changer l'état"
) )
@staticmethod @staticmethod
def can_change_shell(user_request, *args, **kwargs): def can_change_shell(user_request, *_args, **_kwargs):
""" Check if a user can change a shell
:param user_request: The user who request
:returns: a message and a boolean which is True if the user has
the right to change a shell
"""
return ( return (
user_request.has_perm('users.change_user_shell'), user_request.has_perm('users.change_user_shell'),
"Droit requis pour changer le shell" "Droit requis pour changer le shell"
) )
@staticmethod @staticmethod
def can_change_force(user_request, *args, **kwargs): def can_change_force(user_request, *_args, **_kwargs):
""" Check if a user can change a force
:param user_request: The user who request
:returns: a message and a boolean which is True if the user has
the right to change a force
"""
return ( return (
user_request.has_perm('users.change_user_force'), user_request.has_perm('users.change_user_force'),
"Droit requis pour forcer le déménagement" "Droit requis pour forcer le déménagement"
) )
@staticmethod @staticmethod
def can_change_groups(user_request, *args, **kwargs): def can_change_groups(user_request, *_args, **_kwargs):
""" Check if a user can change a group
:param user_request: The user who request
:returns: a message and a boolean which is True if the user has
the right to change a group
"""
return ( return (
user_request.has_perm('users.change_user_groups'), user_request.has_perm('users.change_user_groups'),
"Droit requis pour éditer les groupes de l'user" "Droit requis pour éditer les groupes de l'user"
) )
def can_view(self, user_request, *args, **kwargs): def can_view(self, user_request, *_args, **_kwargs):
"""Check if an user can view an user object. """Check if an user can view an user object.
:param self: The targeted user. :param self: The targeted user.
@ -798,7 +839,8 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
return False, (u"Vous ne pouvez voir un autre utilisateur " return False, (u"Vous ne pouvez voir un autre utilisateur "
"que vous même") "que vous même")
def can_view_all(user_request, *args, **kwargs): @staticmethod
def can_view_all(user_request, *_args, **_kwargs):
"""Check if an user can access to the list of every user objects """Check if an user can access to the list of every user objects
:param user_request: The user who wants to view the list. :param user_request: The user who wants to view the list.
@ -810,7 +852,7 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
u"Vous n'avez pas accès à la liste des utilisateurs." u"Vous n'avez pas accès à la liste des utilisateurs."
) )
def can_delete(self, user_request, *args, **kwargs): def can_delete(self, user_request, *_args, **_kwargs):
"""Check if an user can delete an user object. """Check if an user can delete an user object.
:param self: The user who is to be deleted. :param self: The user who is to be deleted.
@ -836,6 +878,8 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
class Adherent(User): class Adherent(User):
""" A class representing a member (it's a user with special
informations) """
PRETTY_NAME = "Adhérents" PRETTY_NAME = "Adhérents"
name = models.CharField(max_length=255) name = models.CharField(max_length=255)
room = models.OneToOneField( room = models.OneToOneField(
@ -845,15 +889,17 @@ class Adherent(User):
null=True null=True
) )
def get_instance(adherentid, *args, **kwargs): @classmethod
def get_instance(cls, adherentid, *_args, **_kwargs):
"""Try to find an instance of `Adherent` with the given id. """Try to find an instance of `Adherent` with the given id.
:param adherentid: The id of the adherent we are looking for. :param adherentid: The id of the adherent we are looking for.
:return: An adherent. :return: An adherent.
""" """
return Adherent.objects.get(pk=adherentid) return cls.objects.get(pk=adherentid)
def can_create(user_request, *args, **kwargs): @staticmethod
def can_create(user_request, *_args, **_kwargs):
"""Check if an user can create an user object. """Check if an user can create an user object.
:param user_request: The user who wants to create a user object. :param user_request: The user who wants to create a user object.
@ -875,6 +921,8 @@ class Adherent(User):
class Club(User): class Club(User):
""" A class representing a club (it is considered as a user
with special informations) """
PRETTY_NAME = "Clubs" PRETTY_NAME = "Clubs"
room = models.ForeignKey( room = models.ForeignKey(
'topologie.Room', 'topologie.Room',
@ -896,7 +944,8 @@ class Club(User):
default=False default=False
) )
def can_create(user_request, *args, **kwargs): @staticmethod
def can_create(user_request, *_args, **_kwargs):
"""Check if an user can create an user object. """Check if an user can create an user object.
:param user_request: The user who wants to create a user object. :param user_request: The user who wants to create a user object.
@ -914,7 +963,8 @@ class Club(User):
u"Vous n'avez pas le droit de créer un club" u"Vous n'avez pas le droit de créer un club"
) )
def can_view_all(user_request, *args, **kwargs): @staticmethod
def can_view_all(user_request, *_args, **_kwargs):
"""Check if an user can access to the list of every user objects """Check if an user can access to the list of every user objects
:param user_request: The user who wants to view the list. :param user_request: The user who wants to view the list.
@ -930,22 +980,23 @@ class Club(User):
return True, None return True, None
return False, u"Vous n'avez pas accès à la liste des utilisateurs." return False, u"Vous n'avez pas accès à la liste des utilisateurs."
def get_instance(clubid, *args, **kwargs): @classmethod
def get_instance(cls, clubid, *_args, **_kwargs):
"""Try to find an instance of `Club` with the given id. """Try to find an instance of `Club` with the given id.
:param clubid: The id of the adherent we are looking for. :param clubid: The id of the adherent we are looking for.
:return: A club. :return: A club.
""" """
return Club.objects.get(pk=clubid) return cls.objects.get(pk=clubid)
@receiver(post_save, sender=Adherent) @receiver(post_save, sender=Adherent)
@receiver(post_save, sender=Club) @receiver(post_save, sender=Club)
@receiver(post_save, sender=User) @receiver(post_save, sender=User)
def user_post_save(sender, **kwargs): def user_post_save(_sender, **kwargs):
""" Synchronisation post_save : envoie le mail de bienvenue si creation """ Synchronisation post_save : envoie le mail de bienvenue si creation
Synchronise le ldap""" Synchronise le ldap"""
is_created = kwargs['created'] # is_created = kwargs['created']
user = kwargs['instance'] user = kwargs['instance']
# TODO : remove if unnecessary # TODO : remove if unnecessary
# if is_created: # if is_created:
@ -962,7 +1013,7 @@ def user_post_save(sender, **kwargs):
@receiver(post_delete, sender=Adherent) @receiver(post_delete, sender=Adherent)
@receiver(post_delete, sender=Club) @receiver(post_delete, sender=Club)
@receiver(post_delete, sender=User) @receiver(post_delete, sender=User)
def user_post_delete(sender, **kwargs): def user_post_delete(_sender, **kwargs):
"""Post delete d'un user, on supprime son instance ldap""" """Post delete d'un user, on supprime son instance ldap"""
user = kwargs['instance'] user = kwargs['instance']
user.ldap_del() user.ldap_del()
@ -1005,6 +1056,14 @@ class ServiceUser(RevMixin, AclMixin, AbstractBaseUser):
("view_serviceuser", "Peut voir un objet serviceuser"), ("view_serviceuser", "Peut voir un objet serviceuser"),
) )
def get_full_name(self):
""" Renvoie le nom complet du serviceUser formaté nom/prénom"""
return "ServiceUser <{name}>".format(name=self.pseudo)
def get_short_name(self):
""" Renvoie seulement le nom"""
return self.pseudo
def ldap_sync(self): def ldap_sync(self):
""" Synchronisation du ServiceUser dans sa version ldap""" """ Synchronisation du ServiceUser dans sa version ldap"""
try: try:
@ -1041,14 +1100,14 @@ class ServiceUser(RevMixin, AclMixin, AbstractBaseUser):
@receiver(post_save, sender=ServiceUser) @receiver(post_save, sender=ServiceUser)
def service_user_post_save(sender, **kwargs): def service_user_post_save(_sender, **kwargs):
""" Synchronise un service user ldap après modification django""" """ Synchronise un service user ldap après modification django"""
service_user = kwargs['instance'] service_user = kwargs['instance']
service_user.ldap_sync() service_user.ldap_sync()
@receiver(post_delete, sender=ServiceUser) @receiver(post_delete, sender=ServiceUser)
def service_user_post_delete(sender, **kwargs): def service_user_post_delete(_sender, **kwargs):
""" Supprime un service user ldap après suppression django""" """ Supprime un service user ldap après suppression django"""
service_user = kwargs['instance'] service_user = kwargs['instance']
service_user.ldap_del() service_user.ldap_del()
@ -1123,14 +1182,14 @@ class ListRight(RevMixin, AclMixin, Group):
@receiver(post_save, sender=ListRight) @receiver(post_save, sender=ListRight)
def listright_post_save(sender, **kwargs): def listright_post_save(_sender, **kwargs):
""" Synchronise le droit ldap quand il est modifié""" """ Synchronise le droit ldap quand il est modifié"""
right = kwargs['instance'] right = kwargs['instance']
right.ldap_sync() right.ldap_sync()
@receiver(post_delete, sender=ListRight) @receiver(post_delete, sender=ListRight)
def listright_post_delete(sender, **kwargs): def listright_post_delete(_sender, **kwargs):
"""Suppression d'un groupe ldap après suppression coté django""" """Suppression d'un groupe ldap après suppression coté django"""
right = kwargs['instance'] right = kwargs['instance']
right.ldap_del() right.ldap_del()
@ -1203,7 +1262,7 @@ class Ban(RevMixin, AclMixin, models.Model):
"""Ce ban est-il actif?""" """Ce ban est-il actif?"""
return self.date_end > timezone.now() return self.date_end > timezone.now()
def can_view(self, user_request, *args, **kwargs): def can_view(self, user_request, *_args, **_kwargs):
"""Check if an user can view a Ban object. """Check if an user can view a Ban object.
:param self: The targeted object. :param self: The targeted object.
@ -1223,7 +1282,7 @@ class Ban(RevMixin, AclMixin, models.Model):
@receiver(post_save, sender=Ban) @receiver(post_save, sender=Ban)
def ban_post_save(sender, **kwargs): def ban_post_save(_sender, **kwargs):
""" Regeneration de tous les services après modification d'un ban""" """ Regeneration de tous les services après modification d'un ban"""
ban = kwargs['instance'] ban = kwargs['instance']
is_created = kwargs['created'] is_created = kwargs['created']
@ -1240,7 +1299,7 @@ def ban_post_save(sender, **kwargs):
@receiver(post_delete, sender=Ban) @receiver(post_delete, sender=Ban)
def ban_post_delete(sender, **kwargs): def ban_post_delete(_sender, **kwargs):
""" Regen de tous les services après suppression d'un ban""" """ Regen de tous les services après suppression d'un ban"""
user = kwargs['instance'].user user = kwargs['instance'].user
user.ldap_sync(base=False, access_refresh=True, mac_refresh=False) user.ldap_sync(base=False, access_refresh=True, mac_refresh=False)
@ -1266,9 +1325,10 @@ class Whitelist(RevMixin, AclMixin, models.Model):
) )
def is_active(self): def is_active(self):
""" Is this whitelisting active ? """
return self.date_end > timezone.now() return self.date_end > timezone.now()
def can_view(self, user_request, *args, **kwargs): def can_view(self, user_request, *_args, **_kwargs):
"""Check if an user can view a Whitelist object. """Check if an user can view a Whitelist object.
:param self: The targeted object. :param self: The targeted object.
@ -1288,7 +1348,7 @@ class Whitelist(RevMixin, AclMixin, models.Model):
@receiver(post_save, sender=Whitelist) @receiver(post_save, sender=Whitelist)
def whitelist_post_save(sender, **kwargs): def whitelist_post_save(_sender, **kwargs):
"""Après modification d'une whitelist, on synchronise les services """Après modification d'une whitelist, on synchronise les services
et on lui permet d'avoir internet""" et on lui permet d'avoir internet"""
whitelist = kwargs['instance'] whitelist = kwargs['instance']
@ -1305,7 +1365,7 @@ def whitelist_post_save(sender, **kwargs):
@receiver(post_delete, sender=Whitelist) @receiver(post_delete, sender=Whitelist)
def whitelist_post_delete(sender, **kwargs): def whitelist_post_delete(_sender, **kwargs):
"""Après suppression d'une whitelist, on supprime l'accès internet """Après suppression d'une whitelist, on supprime l'accès internet
en forçant la régénration""" en forçant la régénration"""
user = kwargs['instance'].user user = kwargs['instance'].user

View file

@ -22,11 +22,17 @@
# Maël Kervella # Maël Kervella
"""users.serializers
Serializers for the User app
"""
from rest_framework import serializers from rest_framework import serializers
from users.models import Club, Adherent from users.models import Club, Adherent
class MailingSerializer(serializers.ModelSerializer): class MailingSerializer(serializers.ModelSerializer):
""" Serializer to build Mailing objects """
name = serializers.CharField(source='pseudo') name = serializers.CharField(source='pseudo')
class Meta: class Meta:
@ -35,6 +41,9 @@ class MailingSerializer(serializers.ModelSerializer):
class MailingMemberSerializer(serializers.ModelSerializer): class MailingMemberSerializer(serializers.ModelSerializer):
""" Serializer fot the Adherent objects (who belong to a
Mailing) """
class Meta: class Meta:
model = Adherent model = Adherent
fields = ('email',) fields = ('email',)

View file

@ -19,7 +19,10 @@
# You should have received a copy of the GNU General Public License along # You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc., # with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
"""users.tests
The tests for the Users module.
"""
from django.test import TestCase # from django.test import TestCase
# Create your tests here. # Create your tests here.

View file

@ -39,22 +39,37 @@ from django.urls import reverse
from django.shortcuts import get_object_or_404, render, redirect from django.shortcuts import get_object_or_404, render, redirect
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.decorators import login_required, permission_required from django.contrib.auth.decorators import login_required, permission_required
from django.db.models import ProtectedError, Q from django.db.models import ProtectedError
from django.db import IntegrityError
from django.utils import timezone from django.utils import timezone
from django.db import transaction from django.db import transaction
from django.http import HttpResponse from django.http import HttpResponse
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.views.decorators.csrf import csrf_exempt from django.views.decorators.csrf import csrf_exempt
from rest_framework.renderers import JSONRenderer from rest_framework.renderers import JSONRenderer
from reversion.models import Version
from reversion import revisions as reversion from reversion import revisions as reversion
from users.serializers import MailingSerializer, MailingMemberSerializer
from users.models import ( from cotisations.models import Facture
from machines.models import Machine
from preferences.models import OptionalUser, GeneralOption, AssoOption
from re2o.views import form
from re2o.utils import (
all_has_access,
SortTable,
re2o_paginator
)
from re2o.acl import (
can_create,
can_edit,
can_delete_set,
can_delete,
can_view,
can_view_all,
can_change
)
from .serializers import MailingSerializer, MailingMemberSerializer
from .models import (
User, User,
Ban, Ban,
Whitelist, Whitelist,
@ -66,7 +81,7 @@ from users.models import (
Club, Club,
ListShell, ListShell,
) )
from users.forms import ( from .forms import (
BanForm, BanForm,
WhitelistForm, WhitelistForm,
DelSchoolForm, DelSchoolForm,
@ -86,25 +101,6 @@ from users.forms import (
ClubAdminandMembersForm, ClubAdminandMembersForm,
GroupForm GroupForm
) )
from cotisations.models import Facture
from machines.models import Machine
from preferences.models import OptionalUser, GeneralOption, AssoOption
from re2o.views import form
from re2o.utils import (
all_has_access,
SortTable,
re2o_paginator
)
from re2o.acl import (
can_create,
can_edit,
can_delete_set,
can_delete,
can_view,
can_view_all,
can_change
)
@can_create(Adherent) @can_create(Adherent)
@ -162,7 +158,7 @@ def new_club(request):
@login_required @login_required
@can_edit(Club) @can_edit(Club)
def edit_club_admin_members(request, club_instance, clubid): def edit_club_admin_members(request, club_instance, _clubid):
"""Vue d'edition de la liste des users administrateurs et """Vue d'edition de la liste des users administrateurs et
membres d'un club""" membres d'un club"""
club = ClubAdminandMembersForm( club = ClubAdminandMembersForm(
@ -195,27 +191,27 @@ def edit_info(request, user, userid):
si l'id est différent de request.user, vérifie la si l'id est différent de request.user, vérifie la
possession du droit cableur """ possession du droit cableur """
if user.is_class_adherent: if user.is_class_adherent:
user = AdherentForm( user_form = AdherentForm(
request.POST or None, request.POST or None,
instance=user.adherent, instance=user.adherent,
user=request.user user=request.user
) )
elif user.is_class_club: else:
user = ClubForm( user_form = ClubForm(
request.POST or None, request.POST or None,
instance=user.club, instance=user.club,
user=request.user user=request.user
) )
if user.is_valid(): if user_form.is_valid():
if user.changed_data: if user_form.changed_data:
user.save() user_form.save()
messages.success(request, "L'user a bien été modifié") messages.success(request, "L'user a bien été modifié")
return redirect(reverse( return redirect(reverse(
'users:profil', 'users:profil',
kwargs={'userid': str(userid)} kwargs={'userid': str(userid)}
)) ))
return form( return form(
{'userform': user, 'action_name': "Editer l'utilisateur"}, {'userform': user_form, 'action_name': "Editer l'utilisateur"},
'users/user.html', 'users/user.html',
request request
) )
@ -226,21 +222,21 @@ def edit_info(request, user, userid):
def state(request, user, userid): def state(request, user, userid):
""" Changer l'etat actif/desactivé/archivé d'un user, """ Changer l'etat actif/desactivé/archivé d'un user,
need droit bureau """ need droit bureau """
state = StateForm(request.POST or None, instance=user) state_form = StateForm(request.POST or None, instance=user)
if state.is_valid(): if state_form.is_valid():
if state.changed_data: if state_form.changed_data:
if state.cleaned_data['state'] == User.STATE_ARCHIVE: if state_form.cleaned_data['state'] == User.STATE_ARCHIVE:
user.archive() user.archive()
elif state.cleaned_data['state'] == User.STATE_ACTIVE: elif state_form.cleaned_data['state'] == User.STATE_ACTIVE:
user.unarchive() user.unarchive()
state.save() state_form.save()
messages.success(request, "Etat changé avec succès") messages.success(request, "Etat changé avec succès")
return redirect(reverse( return redirect(reverse(
'users:profil', 'users:profil',
kwargs={'userid': str(userid)} kwargs={'userid': str(userid)}
)) ))
return form( return form(
{'userform': state, 'action_name': "Editer l'état"}, {'userform': state_form, 'action_name': "Editer l'état"},
'users/user.html', 'users/user.html',
request request
) )
@ -249,17 +245,18 @@ def state(request, user, userid):
@login_required @login_required
@can_edit(User, 'groups') @can_edit(User, 'groups')
def groups(request, user, userid): def groups(request, user, userid):
group = GroupForm(request.POST or None, instance=user) """ View to edit the groups of a user """
if group.is_valid(): group_form = GroupForm(request.POST or None, instance=user)
if group.changed_data: if group_form.is_valid():
group.save() if group_form.changed_data:
group_form.save()
messages.success(request, "Groupes changés avec succès") messages.success(request, "Groupes changés avec succès")
return redirect(reverse( return redirect(reverse(
'users:profil', 'users:profil',
kwargs={'userid': str(userid)} kwargs={'userid': str(userid)}
)) ))
return form( return form(
{'userform': group, 'action_name': 'Editer les groupes'}, {'userform': group_form, 'action_name': 'Editer les groupes'},
'users/user.html', 'users/user.html',
request request
) )
@ -278,7 +275,7 @@ def password(request, user, userid):
messages.success(request, "Le mot de passe a changé") messages.success(request, "Le mot de passe a changé")
return redirect(reverse( return redirect(reverse(
'users:profil', 'users:profil',
kwargs={'userid': str(user.id)} kwargs={'userid': str(userid)}
)) ))
return form( return form(
{'userform': u_form, 'action_name': 'Changer le mot de passe'}, {'userform': u_form, 'action_name': 'Changer le mot de passe'},
@ -289,7 +286,8 @@ def password(request, user, userid):
@login_required @login_required
@can_edit(User, 'groups') @can_edit(User, 'groups')
def del_group(request, user, userid, listrightid): def del_group(request, user, _userid, listrightid):
""" View used to delete a group """
user.groups.remove(ListRight.objects.get(id=listrightid)) user.groups.remove(ListRight.objects.get(id=listrightid))
user.save() user.save()
messages.success(request, "Droit supprimé à %s" % user) messages.success(request, "Droit supprimé à %s" % user)
@ -319,7 +317,7 @@ def new_serviceuser(request):
@login_required @login_required
@can_edit(ServiceUser) @can_edit(ServiceUser)
def edit_serviceuser(request, serviceuser, serviceuserid): def edit_serviceuser(request, serviceuser, _serviceuserid):
""" Edit a ServiceUser """ """ Edit a ServiceUser """
serviceuser = EditServiceUserForm( serviceuser = EditServiceUserForm(
request.POST or None, request.POST or None,
@ -342,7 +340,7 @@ def edit_serviceuser(request, serviceuser, serviceuserid):
@login_required @login_required
@can_delete(ServiceUser) @can_delete(ServiceUser)
def del_serviceuser(request, serviceuser, serviceuserid): def del_serviceuser(request, serviceuser, _serviceuserid):
"""Suppression d'un ou plusieurs serviceusers""" """Suppression d'un ou plusieurs serviceusers"""
if request.method == "POST": if request.method == "POST":
serviceuser.delete() serviceuser.delete()
@ -365,7 +363,7 @@ def add_ban(request, user, userid):
ban_instance = Ban(user=user) ban_instance = Ban(user=user)
ban = BanForm(request.POST or None, instance=ban_instance) ban = BanForm(request.POST or None, instance=ban_instance)
if ban.is_valid(): if ban.is_valid():
_ban_object = ban.save() ban.save()
messages.success(request, "Bannissement ajouté") messages.success(request, "Bannissement ajouté")
return redirect(reverse( return redirect(reverse(
'users:profil', 'users:profil',
@ -385,7 +383,7 @@ def add_ban(request, user, userid):
@login_required @login_required
@can_edit(Ban) @can_edit(Ban)
def edit_ban(request, ban_instance, banid): def edit_ban(request, ban_instance, _banid):
""" Editer un bannissement, nécessite au moins le droit bofh """ Editer un bannissement, nécessite au moins le droit bofh
(a fortiori bureau) (a fortiori bureau)
Syntaxe : JJ/MM/AAAA , heure optionnelle, prend effet immédiatement""" Syntaxe : JJ/MM/AAAA , heure optionnelle, prend effet immédiatement"""
@ -436,7 +434,7 @@ def add_whitelist(request, user, userid):
@login_required @login_required
@can_edit(Whitelist) @can_edit(Whitelist)
def edit_whitelist(request, whitelist_instance, whitelistid): def edit_whitelist(request, whitelist_instance, _whitelistid):
""" Editer un accès gracieux, temporaire ou permanent. """ Editer un accès gracieux, temporaire ou permanent.
Need droit cableur Need droit cableur
Syntaxe : JJ/MM/AAAA , heure optionnelle, prend effet immédiatement, Syntaxe : JJ/MM/AAAA , heure optionnelle, prend effet immédiatement,
@ -476,7 +474,7 @@ def add_school(request):
@login_required @login_required
@can_edit(School) @can_edit(School)
def edit_school(request, school_instance, schoolid): def edit_school(request, school_instance, _schoolid):
""" Editer un établissement d'enseignement à partir du schoolid dans """ Editer un établissement d'enseignement à partir du schoolid dans
la base de donnée, need cableur""" la base de donnée, need cableur"""
school = SchoolForm(request.POST or None, instance=school_instance) school = SchoolForm(request.POST or None, instance=school_instance)
@ -537,7 +535,7 @@ def add_shell(request):
@login_required @login_required
@can_edit(ListShell) @can_edit(ListShell)
def edit_shell(request, shell_instance, listshellid): def edit_shell(request, shell_instance, _listshellid):
""" Editer un shell à partir du listshellid""" """ Editer un shell à partir du listshellid"""
shell = ShellForm(request.POST or None, instance=shell_instance) shell = ShellForm(request.POST or None, instance=shell_instance)
if shell.is_valid(): if shell.is_valid():
@ -554,7 +552,7 @@ def edit_shell(request, shell_instance, listshellid):
@login_required @login_required
@can_delete(ListShell) @can_delete(ListShell)
def del_shell(request, shell, listshellid): def del_shell(request, shell, _listshellid):
"""Destruction d'un shell""" """Destruction d'un shell"""
if request.method == "POST": if request.method == "POST":
shell.delete() shell.delete()
@ -586,7 +584,7 @@ def add_listright(request):
@login_required @login_required
@can_edit(ListRight) @can_edit(ListRight)
def edit_listright(request, listright_instance, listrightid): def edit_listright(request, listright_instance, _listrightid):
""" Editer un groupe/droit, necessite droit bureau, """ Editer un groupe/droit, necessite droit bureau,
à partir du listright id """ à partir du listright id """
listright = ListRightForm( listright = ListRightForm(
@ -800,7 +798,7 @@ def mon_profil(request):
@login_required @login_required
@can_view(User) @can_view(User)
def profil(request, users, userid): def profil(request, users, _userid):
""" Affiche un profil, self or cableur, prend un userid en argument """ """ Affiche un profil, self or cableur, prend un userid en argument """
machines = Machine.objects.filter(user=users).select_related('user')\ machines = Machine.objects.filter(user=users).select_related('user')\
.prefetch_related('interface_set__domain__extension')\ .prefetch_related('interface_set__domain__extension')\
@ -924,7 +922,7 @@ class JSONResponse(HttpResponse):
@csrf_exempt @csrf_exempt
@login_required @login_required
@permission_required('machines.serveur') @permission_required('machines.serveur')
def ml_std_list(request): def ml_std_list(_request):
""" API view sending all the available standard mailings""" """ API view sending all the available standard mailings"""
return JSONResponse([ return JSONResponse([
{'name': 'adherents'} {'name': 'adherents'}
@ -950,7 +948,7 @@ def ml_std_members(request, ml_name):
@csrf_exempt @csrf_exempt
@login_required @login_required
@permission_required('machines.serveur') @permission_required('machines.serveur')
def ml_club_list(request): def ml_club_list(_request):
""" API view sending all the available club mailings""" """ API view sending all the available club mailings"""
clubs = Club.objects.filter(mailing=True).values('pseudo') clubs = Club.objects.filter(mailing=True).values('pseudo')
seria = MailingSerializer(clubs, many=True) seria = MailingSerializer(clubs, many=True)