Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
converse.js
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
converse.js
Commits
cfd8991f
Commit
cfd8991f
authored
Apr 17, 2015
by
Michal Čihař
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Share code for lock permission checking
Signed-off-by:
Michal Čihař
<
michal@cihar.com
>
parent
8889a250
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
44 additions
and
16 deletions
+44
-16
weblate/html/js/git-status.html
weblate/html/js/git-status.html
+2
-1
weblate/trans/permissions.py
weblate/trans/permissions.py
+8
-0
weblate/trans/templatetags/permissions.py
weblate/trans/templatetags/permissions.py
+5
-0
weblate/trans/views/lock.py
weblate/trans/views/lock.py
+29
-15
No files found.
weblate/html/js/git-status.html
View file @
cfd8991f
...
@@ -7,6 +7,7 @@
...
@@ -7,6 +7,7 @@
{% can_update_translation user project as user_can_update_translation %}
{% can_update_translation user project as user_can_update_translation %}
{% can_push_translation user project as user_can_push_translation %}
{% can_push_translation user project as user_can_push_translation %}
{% can_reset_translation user project as user_can_reset_translation %}
{% can_reset_translation user project as user_can_reset_translation %}
{% can_lock_subproject user project as user_can_lock_subproject %}
<div
class=
"row"
>
<div
class=
"row"
>
...
@@ -158,7 +159,7 @@
...
@@ -158,7 +159,7 @@
{% endif %}
{% endif %}
{% if
perms.trans.
lock_subproject and object.is_lockable %}
{% if
user_can_
lock_subproject and object.is_lockable %}
{% if object.locked %}
{% if object.locked %}
<tr>
<tr>
<td>
<td>
...
...
weblate/trans/permissions.py
View file @
cfd8991f
...
@@ -192,3 +192,11 @@ def can_reset_translation(user, project):
...
@@ -192,3 +192,11 @@ def can_reset_translation(user, project):
Checks whether user can reset translation repository.
Checks whether user can reset translation repository.
"""
"""
return
check_permission
(
user
,
project
,
'trans.reset_translation'
)
return
check_permission
(
user
,
project
,
'trans.reset_translation'
)
@
cache_permission
def
can_lock_subproject
(
user
,
project
):
"""
Checks whether user can lock translation subproject.
"""
return
check_permission
(
user
,
project
,
'trans.lock_subproject'
)
weblate/trans/templatetags/permissions.py
View file @
cfd8991f
...
@@ -86,3 +86,8 @@ def can_push_translation(user, project):
...
@@ -86,3 +86,8 @@ def can_push_translation(user, project):
@
register
.
assignment_tag
@
register
.
assignment_tag
def
can_reset_translation
(
user
,
project
):
def
can_reset_translation
(
user
,
project
):
return
weblate
.
trans
.
permissions
.
can_reset_translation
(
user
,
project
)
return
weblate
.
trans
.
permissions
.
can_reset_translation
(
user
,
project
)
@
register
.
assignment_tag
def
can_lock_subproject
(
user
,
project
):
return
weblate
.
trans
.
permissions
.
can_lock_subproject
(
user
,
project
)
weblate/trans/views/lock.py
View file @
cfd8991f
...
@@ -22,38 +22,44 @@ from django.utils.translation import ugettext as _
...
@@ -22,38 +22,44 @@ from django.utils.translation import ugettext as _
from
django.http
import
HttpResponse
from
django.http
import
HttpResponse
from
django.shortcuts
import
redirect
from
django.shortcuts
import
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
from
django.core.exceptions
import
PermissionDenied
from
weblate.trans.views.helper
import
(
from
weblate.trans.views.helper
import
(
get_project
,
get_subproject
,
get_translation
get_project
,
get_subproject
,
get_translation
)
)
from
weblate.trans.permissions
import
can_lock_subproject
@
permission_required
(
'trans.lock_translation'
)
@
login_required
def
lock_translation
(
request
,
project
,
subproject
,
lang
):
def
update_lock
(
request
,
project
,
subproject
,
lang
):
obj
=
get_translation
(
request
,
project
,
subproject
,
lang
)
obj
=
get_translation
(
request
,
project
,
subproject
,
lang
)
if
not
obj
.
is_user_locked
(
request
.
user
):
if
not
obj
.
is_user_locked
(
request
.
user
):
obj
.
create_lock
(
request
.
user
,
True
)
obj
.
update_lock_time
()
messages
.
success
(
request
,
_
(
'Translation is now locked for you.'
))
return
redirect
(
obj
)
return
HttpResponse
(
'ok'
)
@
login_required
def
lock_translation
(
request
,
project
,
subproject
,
lang
):
def
update_lock
(
request
,
project
,
subproject
,
lang
):
obj
=
get_translation
(
request
,
project
,
subproject
,
lang
)
obj
=
get_translation
(
request
,
project
,
subproject
,
lang
)
if
not
can_lock_subproject
(
request
.
user
,
obj
.
subproject
.
project
):
raise
PermissionDenied
()
if
not
obj
.
is_user_locked
(
request
.
user
):
if
not
obj
.
is_user_locked
(
request
.
user
):
obj
.
update_lock_time
()
obj
.
create_lock
(
request
.
user
,
True
)
messages
.
success
(
request
,
_
(
'Translation is now locked for you.'
))
return
HttpResponse
(
'ok'
)
return
redirect
(
obj
)
@
permission_required
(
'trans.lock_translation'
)
def
unlock_translation
(
request
,
project
,
subproject
,
lang
):
def
unlock_translation
(
request
,
project
,
subproject
,
lang
):
obj
=
get_translation
(
request
,
project
,
subproject
,
lang
)
obj
=
get_translation
(
request
,
project
,
subproject
,
lang
)
if
not
can_lock_subproject
(
request
.
user
,
obj
.
subproject
.
project
):
raise
PermissionDenied
()
if
not
obj
.
is_user_locked
(
request
.
user
):
if
not
obj
.
is_user_locked
(
request
.
user
):
obj
.
create_lock
(
None
)
obj
.
create_lock
(
None
)
messages
.
success
(
messages
.
success
(
...
@@ -64,10 +70,12 @@ def unlock_translation(request, project, subproject, lang):
...
@@ -64,10 +70,12 @@ def unlock_translation(request, project, subproject, lang):
return
redirect
(
obj
)
return
redirect
(
obj
)
@
permission_required
(
'trans.lock_subproject'
)
def
lock_subproject
(
request
,
project
,
subproject
):
def
lock_subproject
(
request
,
project
,
subproject
):
obj
=
get_subproject
(
request
,
project
,
subproject
)
obj
=
get_subproject
(
request
,
project
,
subproject
)
if
not
can_lock_subproject
(
request
.
user
,
obj
.
project
):
raise
PermissionDenied
()
obj
.
commit_pending
(
request
)
obj
.
commit_pending
(
request
)
obj
.
do_lock
(
request
.
user
)
obj
.
do_lock
(
request
.
user
)
...
@@ -80,10 +88,12 @@ def lock_subproject(request, project, subproject):
...
@@ -80,10 +88,12 @@ def lock_subproject(request, project, subproject):
return
redirect
(
obj
)
return
redirect
(
obj
)
@
permission_required
(
'trans.lock_subproject'
)
def
unlock_subproject
(
request
,
project
,
subproject
):
def
unlock_subproject
(
request
,
project
,
subproject
):
obj
=
get_subproject
(
request
,
project
,
subproject
)
obj
=
get_subproject
(
request
,
project
,
subproject
)
if
not
can_lock_subproject
(
request
.
user
,
obj
.
project
):
raise
PermissionDenied
()
obj
.
do_unlock
(
request
.
user
)
obj
.
do_unlock
(
request
.
user
)
messages
.
success
(
messages
.
success
(
...
@@ -94,10 +104,12 @@ def unlock_subproject(request, project, subproject):
...
@@ -94,10 +104,12 @@ def unlock_subproject(request, project, subproject):
return
redirect
(
obj
)
return
redirect
(
obj
)
@
permission_required
(
'trans.lock_subproject'
)
def
lock_project
(
request
,
project
):
def
lock_project
(
request
,
project
):
obj
=
get_project
(
request
,
project
)
obj
=
get_project
(
request
,
project
)
if
not
can_lock_subproject
(
request
.
user
,
obj
):
raise
PermissionDenied
()
obj
.
commit_pending
(
request
)
obj
.
commit_pending
(
request
)
for
subproject
in
obj
.
subproject_set
.
all
():
for
subproject
in
obj
.
subproject_set
.
all
():
...
@@ -111,10 +123,12 @@ def lock_project(request, project):
...
@@ -111,10 +123,12 @@ def lock_project(request, project):
return
redirect
(
obj
)
return
redirect
(
obj
)
@
permission_required
(
'trans.lock_subproject'
)
def
unlock_project
(
request
,
project
):
def
unlock_project
(
request
,
project
):
obj
=
get_project
(
request
,
project
)
obj
=
get_project
(
request
,
project
)
if
not
can_lock_subproject
(
request
.
user
,
obj
):
raise
PermissionDenied
()
for
subproject
in
obj
.
subproject_set
.
all
():
for
subproject
in
obj
.
subproject_set
.
all
():
subproject
.
do_unlock
(
request
.
user
)
subproject
.
do_unlock
(
request
.
user
)
...
...
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