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
31317946
authored
Oct 14, 2014
by
Kálmán Viktor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dashboard: fix template/lease deletes
Closes #213 Closes #214
parent
345a3659
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
71 additions
and
6 deletions
+71
-6
circle/dashboard/static/dashboard/template-list.js
+28
-2
circle/dashboard/views/template.py
+43
-4
No files found.
circle/dashboard/static/dashboard/template-list.js
View file @
31317946
...
...
@@ -2,7 +2,7 @@ $(function() {
/* for template removes buttons */
$
(
'.template-delete'
).
click
(
function
()
{
var
template_pk
=
$
(
this
).
data
(
'template-pk'
);
addModalConfirmation
(
deleteTemplate
,
addModalConfirmation
OrDisplayMessage
(
deleteTemplate
,
{
'url'
:
'/dashboard/template/delete/'
+
template_pk
+
'/'
,
'data'
:
[],
'template_pk'
:
template_pk
,
...
...
@@ -13,7 +13,7 @@ $(function() {
/* for lease removes buttons */
$
(
'.lease-delete'
).
click
(
function
()
{
var
lease_pk
=
$
(
this
).
data
(
'lease-pk'
);
addModalConfirmation
(
deleteLease
,
addModalConfirmation
OrDisplayMessage
(
deleteLease
,
{
'url'
:
'/dashboard/lease/delete/'
+
lease_pk
+
'/'
,
'data'
:
[],
'lease_pk'
:
lease_pk
,
...
...
@@ -81,3 +81,29 @@ function deleteLease(data) {
}
});
}
function
addModalConfirmationOrDisplayMessage
(
func
,
data
)
{
$
.
ajax
({
type
:
'GET'
,
url
:
data
[
'url'
],
data
:
jQuery
.
param
(
data
[
'data'
]),
success
:
function
(
result
)
{
$
(
'body'
).
append
(
result
);
$
(
'#confirmation-modal'
).
modal
(
'show'
);
$
(
'#confirmation-modal'
).
on
(
'hidden.bs.modal'
,
function
()
{
$
(
'#confirmation-modal'
).
remove
();
});
$
(
'#confirmation-modal-button'
).
click
(
function
()
{
func
(
data
);
$
(
'#confirmation-modal'
).
modal
(
'hide'
);
});
},
error
:
function
(
xhr
,
textStatus
,
error
)
{
if
(
xhr
.
status
===
403
)
{
addMessage
(
gettext
(
"Only the owners can delete the selected object."
),
"warning"
);
}
else
{
addMessage
(
gettext
(
"An error occurred. ("
)
+
xhr
.
status
+
")"
,
'danger'
)
}
}
});
}
circle/dashboard/views/template.py
View file @
31317946
...
...
@@ -240,6 +240,16 @@ class TemplateDelete(LoginRequiredMixin, DeleteView):
else
:
return
[
'dashboard/confirm/base-delete.html'
]
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
if
not
self
.
get_object
()
.
has_level
(
request
.
user
,
"owner"
):
message
=
_
(
"Only the owners can delete the selected template."
)
if
request
.
is_ajax
():
raise
PermissionDenied
()
else
:
messages
.
warning
(
request
,
message
)
return
redirect
(
self
.
get_success_url
())
return
super
(
TemplateDelete
,
self
)
.
get
(
request
,
*
args
,
**
kwargs
)
def
delete
(
self
,
request
,
*
args
,
**
kwargs
):
object
=
self
.
get_object
()
if
not
object
.
has_level
(
request
.
user
,
'owner'
):
...
...
@@ -382,13 +392,17 @@ class LeaseCreate(LoginRequiredMixin, PermissionRequiredMixin,
def
get_success_url
(
self
):
return
reverse_lazy
(
"dashboard.views.template-list"
)
def
form_valid
(
self
,
form
):
retval
=
super
(
LeaseCreate
,
self
)
.
form_valid
(
form
)
self
.
object
.
set_level
(
self
.
request
.
user
,
"owner"
)
return
retval
class
LeaseAclUpdateView
(
AclUpdateView
):
model
=
Lease
class
LeaseDetail
(
LoginRequiredMixin
,
SuperuserRequiredMixin
,
SuccessMessageMixin
,
UpdateView
):
class
LeaseDetail
(
LoginRequiredMixin
,
SuccessMessageMixin
,
UpdateView
):
model
=
Lease
form_class
=
LeaseForm
template_name
=
"dashboard/lease-edit.html"
...
...
@@ -404,8 +418,20 @@ class LeaseDetail(LoginRequiredMixin, SuperuserRequiredMixin,
def
get_success_url
(
self
):
return
reverse_lazy
(
"dashboard.views.lease-detail"
,
kwargs
=
self
.
kwargs
)
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
if
not
self
.
get_object
()
.
has_level
(
request
.
user
,
"owner"
):
message
=
_
(
"Only the owners can modify the selected lease."
)
messages
.
warning
(
request
,
message
)
return
redirect
(
reverse_lazy
(
"dashboard.views.template-list"
))
return
super
(
LeaseDetail
,
self
)
.
get
(
request
,
*
args
,
**
kwargs
)
def
post
(
self
,
request
,
*
args
,
**
kwargs
):
if
not
self
.
get_object
()
.
has_level
(
request
.
user
,
"owner"
):
raise
PermissionDenied
()
return
super
(
LeaseDetail
,
self
)
.
post
(
request
,
*
args
,
**
kwargs
)
class
LeaseDelete
(
LoginRequiredMixin
,
SuperuserRequiredMixin
,
DeleteView
):
class
LeaseDelete
(
LoginRequiredMixin
,
DeleteView
):
model
=
Lease
def
get_success_url
(
self
):
...
...
@@ -431,10 +457,23 @@ class LeaseDelete(LoginRequiredMixin, SuperuserRequiredMixin, DeleteView):
c
[
'disable_submit'
]
=
True
return
c
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
if
not
self
.
get_object
()
.
has_level
(
request
.
user
,
"owner"
):
message
=
_
(
"Only the owners can delete the selected lease."
)
if
request
.
is_ajax
():
raise
PermissionDenied
()
else
:
messages
.
warning
(
request
,
message
)
return
redirect
(
self
.
get_success_url
())
return
super
(
LeaseDelete
,
self
)
.
get
(
request
,
*
args
,
**
kwargs
)
def
delete
(
self
,
request
,
*
args
,
**
kwargs
):
object
=
self
.
get_object
()
if
(
object
.
instancetemplate_set
.
count
()
>
0
):
# if there are still templates with this lease
# or the user is not owner
if
(
object
.
instancetemplate_set
.
count
()
>
0
or
not
object
.
has_level
(
request
.
user
,
"owner"
)):
raise
SuspiciousOperation
()
object
.
delete
()
...
...
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