Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
re2o
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nounous
re2o
Commits
b22b15ee
Commit
b22b15ee
authored
Nov 28, 2017
by
LEVY-FALK Hugo
Committed by
root
Jan 06, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
décorateur can_create
parent
09157a6a
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
19 additions
and
13 deletions
+19
-13
users/models.py
users/models.py
+3
-4
users/views.py
users/views.py
+16
-9
No files found.
users/models.py
View file @
b22b15ee
...
...
@@ -762,17 +762,17 @@ class User(AbstractBaseUser):
num
+=
1
return
composed_pseudo
(
num
)
def
can_create
(
user
):
def
can_create
(
user
,
perms
=
(
'cableur'
,)
):
options
,
_created
=
OptionalUser
.
objects
.
get_or_create
()
if
options
.
all_can_create
:
return
True
else
:
return
user
.
has_perms
(
(
'cableur'
,)
)
return
user
.
has_perms
(
perms
)
def
can_edit
(
self
,
user
):
if
self
.
is_class_club
and
user
.
is_class_adherent
:
return
self
==
user
or
user
.
has_perms
((
'cableur'
,))
or
\
user
.
adherent
in
self
.
club
.
administrators
.
all
()
user
.
adherent
in
self
.
club
.
administrators
.
all
()
else
:
return
self
==
user
or
user
.
has_perms
((
'cableur'
,))
...
...
@@ -846,7 +846,6 @@ def user_post_delete(sender, **kwargs):
user
.
ldap_del
()
regen
(
'mailing'
)
class
ServiceUser
(
AbstractBaseUser
):
""" Classe des users daemons, règle leurs accès au ldap"""
readonly
=
'readonly'
...
...
users/views.py
View file @
b22b15ee
...
...
@@ -63,7 +63,7 @@ from users.models import (
Request
,
ServiceUser
,
Adherent
,
Club
Club
,
)
from
users.forms
import
(
DelRightForm
,
...
...
@@ -109,17 +109,24 @@ def password_change_action(u_form, user, request, req=False):
kwargs
=
{
'userid'
:
str
(
user
.
id
)}
))
def
can_create
(
perms
=
(
'cableur'
,)):
"""Décorateur qui vérifie si l'utilisateur peut créer un objet."""
def
decorator
(
view
):
def
wrapper
(
request
,
*
args
,
**
kwargs
):
if
not
request
.
user
.
can_create
(
perms
=
perms
):
messages
.
error
(
request
,
"Vous ne pouvez pas accéder à ce menu"
)
return
redirect
(
reverse
(
'users:profil'
,
kwargs
=
{
'userid'
:
str
(
request
.
user
.
id
)}
))
return
view
(
request
,
*
args
,
**
kwargs
)
return
wrapper
return
decorator
@
login_required
@
can_create
()
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
)
...
...
@@ -138,7 +145,7 @@ def new_user(request):
@
login_required
@
permission_required
(
'cableur'
)
@
can_create
(
)
def
new_club
(
request
):
""" Vue de création d'un nouveau club,
envoie un mail pour le mot de passe"""
...
...
@@ -303,7 +310,7 @@ def password(request, userid):
@
login_required
@
permission_required
(
'infra'
)
@
can_create
((
'infra'
,)
)
def
new_serviceuser
(
request
):
""" Vue de création d'un nouvel utilisateur service"""
user
=
ServiceUserForm
(
request
.
POST
or
None
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment