Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Gutyán Gábor
/
circlestack
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
c0aea736
authored
May 06, 2014
by
Kálmán Viktor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dashboard: acl delete access
parent
68a128a5
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
95 additions
and
36 deletions
+95
-36
circle/dashboard/static/dashboard/dashboard.css
+5
-0
circle/dashboard/templates/dashboard/template-edit.html
+36
-18
circle/dashboard/templates/dashboard/vm-detail/access.html
+32
-15
circle/dashboard/views.py
+22
-3
No files found.
circle/dashboard/static/dashboard/dashboard.css
View file @
c0aea736
...
@@ -499,3 +499,8 @@ footer a, footer a:hover, footer a:visited {
...
@@ -499,3 +499,8 @@ footer a, footer a:hover, footer a:visited {
.table-sorting
{
.table-sorting
{
display
:
none
;
display
:
none
;
}
}
#vm-access-table
th
:last-child
,
#vm-access-table
td
:last-child
,
#template-access-table
th
:last-child
,
#template-access-table
td
:last-child
{
text-align
:
center
;
}
circle/dashboard/templates/dashboard/template-edit.html
View file @
c0aea736
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
{% block content %}
{% block content %}
<div
class=
"row"
>
<div
class=
"row"
>
<div
class=
"col-md-
8
"
>
<div
class=
"col-md-
7
"
>
<div
class=
"panel panel-default"
>
<div
class=
"panel panel-default"
>
<div
class=
"panel-heading"
>
<div
class=
"panel-heading"
>
<a
class=
"pull-right btn btn-default btn-xs"
href=
"{% url "
dashboard
.
views
.
template-list
"
%}"
>
{% trans "Back" %}
</a>
<a
class=
"pull-right btn btn-default btn-xs"
href=
"{% url "
dashboard
.
views
.
template-list
"
%}"
>
{% trans "Back" %}
</a>
...
@@ -23,33 +23,51 @@
...
@@ -23,33 +23,51 @@
</div>
</div>
</div>
</div>
<div
class=
"col-md-
4
"
>
<div
class=
"col-md-
5
"
>
<div
class=
"panel panel-default"
>
<div
class=
"panel panel-default"
>
<div
class=
"panel-heading"
>
<div
class=
"panel-heading"
>
<h4
class=
"no-margin"
><i
class=
"icon-group"
></i>
{% trans "Manage access" %}
</h4>
<h4
class=
"no-margin"
><i
class=
"icon-group"
></i>
{% trans "Manage access" %}
</h4>
</div>
</div>
<div
class=
"panel-body"
>
<div
class=
"panel-body"
>
<form
action=
"{% url "
dashboard
.
views
.
template-acl
"
pk=
object.pk
%}"
method=
"post"
>
{% csrf_token %}
<form
action=
"{% url "
dashboard
.
views
.
template-acl
"
pk=
object.pk
%}"
method=
"post"
>
{% csrf_token %}
<table
class=
"table table-striped table-with-form-fields"
>
<table
class=
"table table-striped table-with-form-fields"
id=
"template-access-table"
>
<thead><tr><th></th><th>
{% trans "Who" %}
</th><th>
{% trans "What" %}
</th><th></th></tr></thead>
<thead>
<tr>
<th></th>
<th>
{% trans "Who" %}
</th>
<th>
{% trans "What" %}
</th>
<th><i
class=
"icon-remove"
></i></th>
</tr></thead>
<tbody>
<tbody>
{% for i in acl.users %}
{% for i in acl.users %}
<tr><td><i
class=
"icon-user"
></i></td><td>
{{i.user}}
</td>
<tr>
<td><select
class=
"form-control"
name=
"perm-u-{{i.user.id}}"
>
<td><i
class=
"icon-user"
></i></td><td>
{{i.user}}
</td>
{% for id, name in acl.levels %}
<td>
<option
{%
if
id =
i.level%}
selected=
"selected"
{%
endif
%}
value=
"{{id}}"
>
{{name}}
</option>
<select
class=
"form-control"
name=
"perm-u-{{i.user.id}}"
>
{% endfor %}
{% for id, name in acl.levels %}
</select></td>
<option
{%
if
id =
i.level%}
selected=
"selected"
{%
endif
%}
value=
"{{id}}"
>
{{name}}
</option>
<td><a
href=
"#"
class=
"btn btn-link btn-xs"
><i
class=
"icon-remove"
><span
class=
"sr-only"
>
{% trans "remove" %}
</span></i></a></td></tr>
{% endfor %}
</select>
</td>
<td>
<input
type=
"checkbox"
name=
"remove-u-{{i.user.id}}"
title=
"{% trans "
Remove
"
%}"
/>
</td>
</tr>
{% endfor %}
{% endfor %}
{% for i in acl.groups %}
{% for i in acl.groups %}
<tr><td><i
class=
"icon-group"
></i></td><td>
{{i.group}}
</td>
<tr>
<td><select
class=
"form-control"
name=
"perm-g-{{i.group.id}}"
>
<td><i
class=
"icon-group"
></i></td><td>
{{i.group}}
</td>
{% for id, name in acl.levels %}
<td>
<option
{%
if
id =
i.level%}
selected=
"selected"
{%
endif
%}
value=
"{{id}}"
>
{{name}}
</option>
<select
class=
"form-control"
name=
"perm-g-{{i.group.id}}"
>
{% endfor %}
{% for id, name in acl.levels %}
</select></td>
<option
{%
if
id =
i.level%}
selected=
"selected"
{%
endif
%}
value=
"{{id}}"
>
{{name}}
</option>
<td><a
href=
"#"
class=
"btn btn-link btn-xs"
><i
class=
"icon-remove"
><span
class=
"sr-only"
>
{% trans "remove" %}
</span></i></a></td></tr>
{% endfor %}
</select>
</td>
<td>
<input
type=
"checkbox"
name=
"remove-g-{{i.group.id}}"
title=
"{% trans "
Remove
"
%}"
/>
</td>
</tr>
{% endfor %}
{% endfor %}
<tr><td><i
class=
"icon-plus"
></i></td>
<tr><td><i
class=
"icon-plus"
></i></td>
<td><input
type=
"text"
class=
"form-control"
name=
"perm-new-name"
<td><input
type=
"text"
class=
"form-control"
name=
"perm-new-name"
...
...
circle/dashboard/templates/dashboard/vm-detail/access.html
View file @
c0aea736
...
@@ -15,26 +15,43 @@
...
@@ -15,26 +15,43 @@
</p>
</p>
<h3>
{% trans "Permissions"|capfirst %}
</h3>
<h3>
{% trans "Permissions"|capfirst %}
</h3>
<form
action=
"{{acl.url}}"
method=
"post"
>
{% csrf_token %}
<form
action=
"{{acl.url}}"
method=
"post"
>
{% csrf_token %}
<table
class=
"table table-striped table-with-form-fields"
>
<table
class=
"table table-striped table-with-form-fields"
id=
"vm-access-table"
>
<thead><tr><th></th><th>
{% trans "Who" %}
</th><th>
{% trans "What" %}
</th><th></th></tr></thead>
<thead><tr>
<th></th>
<th>
{% trans "Who" %}
</th>
<th>
{% trans "What" %}
</th>
<th>
{% trans "Remove" %}
</th>
</tr></thead>
<tbody>
<tbody>
{% for i in acl.users %}
{% for i in acl.users %}
<tr><td><i
class=
"icon-user"
></i></td><td>
{{i.user}}
</td>
<tr>
<td><select
class=
"form-control"
name=
"perm-u-{{i.user.id}}"
>
<td><i
class=
"icon-user"
></i></td>
{% for id, name in acl.levels %}
<td>
{{i.user}}
</td>
<option
{%
if
id =
i.level%}
selected=
"selected"
{%
endif
%}
value=
"{{id}}"
>
{{name}}
</option>
<td>
{% endfor %}
<select
class=
"form-control"
name=
"perm-u-{{i.user.id}}"
>
</select></td>
{% for id, name in acl.levels %}
<td><a
href=
"#"
class=
"btn btn-link btn-xs"
><i
class=
"icon-remove"
><span
class=
"sr-only"
>
{% trans "remove" %}
</span></i></a></td></tr>
<option
{%
if
id =
i.level%}
selected=
"selected"
{%
endif
%}
value=
"{{id}}"
>
{{name}}
</option>
{% endfor %}
</select>
</td>
<td>
<input
type=
"checkbox"
name=
"remove-u-{{i.user.id}}"
/>
</td>
</tr>
{% endfor %}
{% endfor %}
{% for i in acl.groups %}
{% for i in acl.groups %}
<tr><td><i
class=
"icon-group"
></i></td><td>
{{i.group}}
</td>
<tr>
<td><select
class=
"form-control"
name=
"perm-g-{{i.group.id}}"
>
<td><i
class=
"icon-group"
></i></td><td>
{{i.group}}
</td>
{% for id, name in acl.levels %}
<td>
<option
{%
if
id =
i.level%}
selected=
"selected"
{%
endif
%}
value=
"{{id}}"
>
{{name}}
</option>
<select
class=
"form-control"
name=
"perm-g-{{i.group.id}}"
>
{% endfor %}
{% for id, name in acl.levels %}
<option
{%
if
id =
i.level%}
selected=
"selected"
{%
endif
%}
value=
"{{id}}"
>
{{name}}
</option>
{% endfor %}
</select></td>
</select></td>
<td><a
href=
"#"
class=
"btn btn-link btn-xs"
><i
class=
"icon-remove"
><span
class=
"sr-only"
>
{% trans "remove" %}
</span></i></a></td></tr>
<td>
<input
type=
"checkbox"
name=
"remove-g-{{i.group.id}}"
/>
</td>
</tr>
{% endfor %}
{% endfor %}
<tr><td><i
class=
"icon-plus"
></i></td>
<tr><td><i
class=
"icon-plus"
></i></td>
<td><input
type=
"text"
class=
"form-control"
name=
"perm-new-name"
<td><input
type=
"text"
class=
"form-control"
name=
"perm-new-name"
...
...
circle/dashboard/views.py
View file @
c0aea736
...
@@ -714,8 +714,9 @@ class AclUpdateView(LoginRequiredMixin, View, SingleObjectMixin):
...
@@ -714,8 +714,9 @@ class AclUpdateView(LoginRequiredMixin, View, SingleObjectMixin):
unicode
(
instance
),
unicode
(
request
.
user
))
unicode
(
instance
),
unicode
(
request
.
user
))
raise
PermissionDenied
()
raise
PermissionDenied
()
self
.
set_levels
(
request
,
instance
)
self
.
set_levels
(
request
,
instance
)
self
.
remove_levels
(
request
,
instance
)
self
.
add_levels
(
request
,
instance
)
self
.
add_levels
(
request
,
instance
)
return
redirect
(
instance
)
return
redirect
(
"
%
s#access"
%
instance
.
get_absolute_url
()
)
def
set_levels
(
self
,
request
,
instance
):
def
set_levels
(
self
,
request
,
instance
):
for
key
,
value
in
request
.
POST
.
items
():
for
key
,
value
in
request
.
POST
.
items
():
...
@@ -732,6 +733,24 @@ class AclUpdateView(LoginRequiredMixin, View, SingleObjectMixin):
...
@@ -732,6 +733,24 @@ class AclUpdateView(LoginRequiredMixin, View, SingleObjectMixin):
unicode
(
entity
),
unicode
(
instance
),
unicode
(
entity
),
unicode
(
instance
),
value
,
unicode
(
request
.
user
))
value
,
unicode
(
request
.
user
))
def
remove_levels
(
self
,
request
,
instance
):
for
key
,
value
in
request
.
POST
.
items
():
if
key
.
startswith
(
"remove"
):
typ
=
key
[
7
:
8
]
# len("remove-")
id
=
key
[
9
:]
# len("remove-x-")
entity
=
{
'u'
:
User
,
'g'
:
Group
}[
typ
]
.
objects
.
get
(
id
=
id
)
if
getattr
(
instance
,
"owner"
,
None
)
==
entity
:
logger
.
info
(
"Tried to remove owner from
%
s by
%
s."
,
unicode
(
instance
),
unicode
(
request
.
user
))
msg
=
_
(
"The original owner cannot be removed, however "
"you can transfer ownership!"
)
messages
.
warning
(
request
,
msg
)
continue
instance
.
set_level
(
entity
,
None
)
logger
.
info
(
"Revoked
%
s's access to
%
s by
%
s."
,
unicode
(
entity
),
unicode
(
instance
),
unicode
(
request
.
user
))
def
add_levels
(
self
,
request
,
instance
):
def
add_levels
(
self
,
request
,
instance
):
name
=
request
.
POST
[
'perm-new-name'
]
name
=
request
.
POST
[
'perm-new-name'
]
value
=
request
.
POST
[
'perm-new'
]
value
=
request
.
POST
[
'perm-new'
]
...
@@ -772,6 +791,7 @@ class TemplateAclUpdateView(AclUpdateView):
...
@@ -772,6 +791,7 @@ class TemplateAclUpdateView(AclUpdateView):
else
:
else
:
self
.
set_levels
(
request
,
template
)
self
.
set_levels
(
request
,
template
)
self
.
add_levels
(
request
,
template
)
self
.
add_levels
(
request
,
template
)
self
.
remove_levels
(
request
,
template
)
post_for_disk
=
request
.
POST
.
copy
()
post_for_disk
=
request
.
POST
.
copy
()
post_for_disk
[
'perm-new'
]
=
'user'
post_for_disk
[
'perm-new'
]
=
'user'
...
@@ -779,8 +799,7 @@ class TemplateAclUpdateView(AclUpdateView):
...
@@ -779,8 +799,7 @@ class TemplateAclUpdateView(AclUpdateView):
for
d
in
template
.
disks
.
all
():
for
d
in
template
.
disks
.
all
():
self
.
add_levels
(
request
,
d
)
self
.
add_levels
(
request
,
d
)
return
redirect
(
reverse
(
"dashboard.views.template-detail"
,
return
redirect
(
template
)
kwargs
=
self
.
kwargs
))
class
GroupAclUpdateView
(
AclUpdateView
):
class
GroupAclUpdateView
(
AclUpdateView
):
...
...
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