Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
AE UTBM
Sith
Commits
dc37e79f
Commit
dc37e79f
authored
Dec 08, 2015
by
Skia
Browse files
WIP: Refactor permissions
parent
f7bfd6da
Changes
2
Hide whitespace changes
Inline
Side-by-side
core/models.py
View file @
dc37e79f
...
...
@@ -251,7 +251,7 @@ class Page(models.Model):
raise
AlreadyLocked
(
"The page is already locked by someone else"
)
Page
.
lock_mutex
[
self
.
pk
]
=
{
'user'
:
user
,
'time'
:
timezone
.
now
()}
#
print("Locking page")
print
(
"Locking page"
)
def
set_lock_recursive
(
self
,
user
):
"""
...
...
@@ -264,7 +264,7 @@ class Page(models.Model):
def
unset_lock
(
self
):
"""Always try to unlock, even if there is no lock"""
Page
.
lock_mutex
.
pop
(
self
.
pk
,
None
)
#
print("Unlocking page")
print
(
"Unlocking page"
)
def
get_lock
(
self
):
"""
...
...
core/views/__init__.py
View file @
dc37e79f
from
django.shortcuts
import
render
from
django.http
import
HttpResponseForbidden
from
django.core.exceptions
import
PermissionDenied
from
django.core.exceptions
import
PermissionDenied
,
ObjectDoesNotExist
from
django.views.generic.base
import
View
from
core.models
import
Group
...
...
@@ -31,6 +31,8 @@ class CanEditPropMixin(View):
# all objects of a class if they are in the right group
if
user
.
is_superuser
or
user
.
groups
.
filter
(
name
=
obj
.
owner_group
.
name
).
exists
():
return
res
print
(
"Guyuy"
)
self
.
object
.
unset_lock
()
raise
PermissionDenied
return
HttpResponseForbidden
(
"403, Forbidden"
)
...
...
@@ -43,19 +45,19 @@ class CanEditMixin(CanEditPropMixin):
# TODO: WIP: fix permissions with exceptions!
try
:
res
=
super
(
CanEditMixin
,
self
).
dispatch
(
request
,
*
arg
,
**
kwargs
)
return
res
except
PermissionDenied
:
pass
except
:
return
res
res
=
super
(
CanEditPropMixin
,
self
).
dispatch
(
request
,
*
arg
,
**
kwargs
)
obj
=
self
.
object
user
=
self
.
request
.
user
if
obj
is
None
:
return
res
for
g
in
obj
.
edit_group
.
all
():
if
user
.
groups
.
filter
(
name
=
g
.
name
).
exists
():
return
super
(
CanEditPropMixin
,
self
).
dispatch
(
request
,
*
arg
,
**
kwargs
)
return
res
if
isinstance
(
obj
,
User
)
and
obj
==
user
:
return
super
(
CanEditPropMixin
,
self
).
dispatch
(
request
,
*
arg
,
**
kwargs
)
return
res
raise
PermissionDenied
return
HttpResponseForbidden
(
"403, Forbidden"
)
...
...
@@ -67,19 +69,18 @@ class CanViewMixin(CanEditMixin):
def
dispatch
(
self
,
request
,
*
arg
,
**
kwargs
):
try
:
res
=
super
(
CanViewMixin
,
self
).
dispatch
(
request
,
*
arg
,
**
kwargs
)
return
res
except
PermissionDenied
:
pass
except
:
return
res
res
=
super
(
CanEditPropMixin
,
self
).
dispatch
(
request
,
*
arg
,
**
kwargs
)
obj
=
self
.
object
user
=
self
.
request
.
user
if
obj
is
None
:
return
res
for
g
in
obj
.
view_group
.
all
():
if
user
.
groups
.
filter
(
name
=
g
.
name
).
exists
():
return
super
(
CanEditPropMixin
,
self
).
dispatch
(
request
,
*
arg
,
**
kwargs
)
return
res
raise
PermissionDenied
return
HttpResponseForbidden
(
"403, Forbidden"
)
from
.user
import
*
from
.page
import
*
...
...
Write
Preview
Supports
Markdown
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