Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
CIRCLE
/
cloud
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
94
Merge Requests
10
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
cf8ada05
authored
Apr 12, 2013
by
Bence Dányi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
one: share quota checked on template editing
parent
1ba601d9
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
32 additions
and
1 deletions
+32
-1
one/models.py
+21
-0
one/views.py
+11
-1
No files found.
one/models.py
View file @
cf8ada05
...
...
@@ -387,6 +387,27 @@ class Template(models.Model):
def
get_credits_per_instance
(
self
):
return
self
.
instance_type
.
credit
def
get_shares_for
(
self
,
user
=
None
):
shares
=
Share
.
objects
.
all
()
.
filter
(
template
=
self
)
if
user
:
return
shares
.
filter
(
owner
=
user
)
else
:
return
shares
def
get_share_quota_usage_for
(
self
,
user
=
None
):
shares
=
self
.
get_shares_for
(
user
)
usage
=
0
for
share
in
shares
:
usage
+=
share
.
instance_limit
*
self
.
get_credits_per_instance
()
return
usage
def
get_share_quota_usage_for_user_with_type
(
self
,
type
,
user
=
None
):
shares
=
self
.
get_shares_for
(
user
)
usage
=
0
for
share
in
shares
:
usage
+=
share
.
instance_limit
*
type
.
credit
return
usage
class
Instance
(
models
.
Model
):
"""Virtual machine instance."""
name
=
models
.
CharField
(
max_length
=
100
,
...
...
one/views.py
View file @
cf8ada05
...
...
@@ -147,9 +147,19 @@ class AjaxTemplateEditWizard(View):
}))
def
post
(
self
,
request
,
id
,
*
args
,
**
kwargs
):
template
=
get_object_or_404
(
Template
,
id
=
id
)
user_details
=
UserCloudDetails
.
objects
.
get
(
user
=
request
.
user
)
if
template
.
owner
!=
request
.
user
and
not
template
.
public
and
not
request
.
user
.
is_superuser
:
raise
PermissionDenied
()
template
.
instance_type_id
=
request
.
POST
[
'size'
]
instance_type
=
get_object_or_404
(
InstanceType
,
id
=
request
.
POST
[
'size'
])
current_used_share_quota
=
user_details
.
get_weighted_share_count
()
current_used_share_quota_without_template
=
current_used_share_quota
-
template
.
get_share_quota_usage_for
(
request
.
user
)
new_quota_for_current_template
=
template
.
get_share_quota_usage_for_user_with_type
(
instance_type
,
request
.
user
)
new_used_share_quota
=
current_used_share_quota_without_template
+
new_quota_for_current_template
allow_type_modify
=
True
if
new_used_share_quota
<=
user_details
.
share_quota
else
False
if
not
allow_type_modify
:
messages
.
error
(
request
,
_
(
'You do not have enough free share quota.'
))
return
redirect
(
home
)
template
.
instance_type
=
instance_type
template
.
description
=
request
.
POST
[
'description'
]
template
.
name
=
request
.
POST
[
'name'
]
template
.
save
()
...
...
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