diff --git a/preferences/migrations/0024_optionaluser_all_can_create.py b/preferences/migrations/0024_optionaluser_all_can_create.py
new file mode 100644
index 00000000..3f7cf56e
--- /dev/null
+++ b/preferences/migrations/0024_optionaluser_all_can_create.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.7 on 2017-11-21 04:42
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('preferences', '0023_auto_20171015_2033'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='optionaluser',
+ name='all_can_create',
+ field=models.BooleanField(default=False, help_text="Tous les users peuvent en créer d'autres"),
+ ),
+ ]
diff --git a/preferences/models.py b/preferences/models.py
index dc1412e7..6a793a24 100644
--- a/preferences/models.py
+++ b/preferences/models.py
@@ -42,6 +42,10 @@ class OptionalUser(models.Model):
default=0
)
gpg_fingerprint = models.BooleanField(default=True)
+ all_can_create = models.BooleanField(
+ default=False,
+ help_text="Tous les users peuvent en créer d'autres",
+ )
def clean(self):
"""Creation du mode de paiement par solde"""
diff --git a/preferences/templates/preferences/display_preferences.html b/preferences/templates/preferences/display_preferences.html
index 9a2abe08..4858e414 100644
--- a/preferences/templates/preferences/display_preferences.html
+++ b/preferences/templates/preferences/display_preferences.html
@@ -52,6 +52,10 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{{ useroptions.solde_negatif }} |
{% endif %}
+
+ Creations d'users par tous |
+ {{ useroptions.all_can_create }} |
+
Préférences machines
{% if is_bureau %}
diff --git a/users/models.py b/users/models.py
index 110531d3..ac767bd3 100644
--- a/users/models.py
+++ b/users/models.py
@@ -758,16 +758,23 @@ class User(AbstractBaseUser):
num += 1
return composed_pseudo(num)
+ def can_create(user):
+ options, _created = OptionalUser.objects.get_or_create()
+ if options.all_can_create:
+ return True
+ else:
+ return user.has_perms(('cableur',))
+
def can_edit(self, user):
if self.is_class_club and user.is_class_adherent:
- return self == user or user.has_perms(('cableur',))or\
+ return self == user or user.has_perms(('cableur',)) or\
user.adherent in self.club.administrators.all()
else:
return self == user or user.has_perms(('cableur',))
def can_view(self, user):
if self.is_class_club and user.is_class_adherent:
- return self == user or user.has_perms(('cableur',))or\
+ return self == user or user.has_perms(('cableur',)) or\
user.adherent in self.club.administrators.all() or\
user.adherent in self.club.members.all()
else:
diff --git a/users/templates/users/sidebar.html b/users/templates/users/sidebar.html
index 7c5f05f5..d6b31acd 100644
--- a/users/templates/users/sidebar.html
+++ b/users/templates/users/sidebar.html
@@ -26,21 +26,20 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% block sidebar %}
{% if is_cableur %}
-
-
- Créer un adhérent
-
Créer un club/association
{% endif %}
- {% if is_cableur %}
+
+
+ Créer un adhérent
+
Clubs et assos
-
+ {% if is_cableur %}
Adherents
diff --git a/users/views.py b/users/views.py
index 6250db75..e0c71157 100644
--- a/users/views.py
+++ b/users/views.py
@@ -111,10 +111,15 @@ def password_change_action(u_form, user, request, req=False):
@login_required
-@permission_required('cableur')
def new_user(request):
""" Vue de création d'un nouvel utilisateur,
envoie un mail pour le mot de passe"""
+ if not User.can_create(request.user):
+ messages.error(request, "Vous ne pouvez pas accéder à ce menu")
+ return redirect(reverse(
+ 'users:profil',
+ kwargs={'userid':str(request.user.id)}
+ ))
user = AdherentForm(request.POST or None)
if user.is_valid():
user = user.save(commit=False)