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
A prog2-höz tartozó friss repo anyagok itt elérhetőek:
https://git.iit.bme.hu/
Commit
30dd7df4
authored
Mar 10, 2015
by
Kálmán Viktor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
request: lease form and html
parent
6eef002e
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
134 additions
and
13 deletions
+134
-13
circle/dashboard/static/dashboard/dashboard.less
+4
-0
circle/dashboard/static/dashboard/vm-details.js
+5
-0
circle/dashboard/templates/dashboard/_vm-renew.html
+28
-0
circle/dashboard/templates/dashboard/operate.html
+4
-0
circle/dashboard/views/vm.py
+8
-0
circle/request/forms.py
+10
-3
circle/request/models.py
+6
-0
circle/request/templates/request/_request-lease-form.html
+10
-0
circle/request/templates/request/_request-template-form.html
+0
-4
circle/request/templates/request/request-lease.html
+28
-0
circle/request/urls.py
+4
-2
circle/request/views.py
+27
-4
No files found.
circle/dashboard/static/dashboard/dashboard.less
View file @
30dd7df4
...
...
@@ -1269,3 +1269,7 @@ textarea[name="new_members"] {
background: #f9f9f9;
margin-top: 20px;
}
#vm-renew-request-lease {
display: none;
}
circle/dashboard/static/dashboard/vm-details.js
View file @
30dd7df4
...
...
@@ -223,4 +223,9 @@ $(function() {
return
false
;
});
$
(
document
).
on
(
"click"
,
"#vm-renew-request-lease-button"
,
function
(
e
)
{
$
(
"#vm-renew-request-lease"
).
stop
().
slideToggle
();
e
.
preventDefault
()
});
});
circle/dashboard/templates/dashboard/_vm-renew.html
0 → 100644
View file @
30dd7df4
{% extends "dashboard/operate.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block formbuttons %}
<div
class=
"pull-right"
>
<a
class=
"btn btn-default"
href=
"{{object.get_absolute_url}}"
data-dismiss=
"modal"
>
{% trans "Cancel" %}
</a>
<a
class=
"btn btn-primary"
id=
"vm-renew-request-lease-button"
href=
"{% url "
request
.
views
.
request-lease
"
vm_pk=
object.pk
%}"
>
<i
class=
"fa fa-forward"
></i>
{% trans "Request longer lease" %}
</a>
<button
class=
"btn btn-{{ opview.effect }} btn-op-form-send"
type=
"submit"
id=
"op-form-send"
>
{% if opview.icon %}
<i
class=
"fa fa-fw fa-{{opview.icon}}"
></i>
{% endif %}{{ op.name|capfirst }}
</button>
</div>
{% endblock %}
{% block extra %}
<div
class=
"clearfix"
></div>
<div
id=
"vm-renew-request-lease"
>
<hr
/>
{% include "request/_request-lease-form.html" with form=lease_request_form vm=object %}
</div>
{% endblock %}
circle/dashboard/templates/dashboard/operate.html
View file @
30dd7df4
...
...
@@ -16,6 +16,7 @@ Do you want to perform the following operation on
{% crispy form %}
{% endif %}
{% endblock %}
{% block formbuttons %}
<div
class=
"pull-right"
>
<a
class=
"btn btn-default"
href=
"{{object.get_absolute_url}}"
data-dismiss=
"modal"
>
{% trans "Cancel" %}
</a>
...
...
@@ -23,4 +24,7 @@ Do you want to perform the following operation on
{% if opview.icon %}
<i
class=
"fa fa-fw fa-{{opview.icon}}"
></i>
{% endif %}{{ op.name|capfirst }}
</button>
</div>
{% endblock %}
</form>
{% block extra %}{% endblock %}
circle/dashboard/views/vm.py
View file @
30dd7df4
...
...
@@ -67,6 +67,7 @@ from ..forms import (
VmRemoveInterfaceForm
,
)
from
request.models
import
TemplateAccessType
from
request.forms
import
LeaseRequestForm
from
..models
import
Favourite
from
manager.scheduler
import
has_traits
...
...
@@ -656,6 +657,8 @@ class VmRenewView(FormOperationMixin, TokenOperationView, VmOperationView):
show_in_toolbar
=
False
form_class
=
VmRenewForm
wait_for_result
=
0.5
template_name
=
'dashboard/_vm-renew.html'
with_reload
=
True
def
get_form_kwargs
(
self
):
choices
=
Lease
.
get_objects_with_level
(
"user"
,
self
.
request
.
user
)
...
...
@@ -675,6 +678,11 @@ class VmRenewView(FormOperationMixin, TokenOperationView, VmOperationView):
instance
.
time_of_suspend
)
return
extra
def
get_context_data
(
self
,
**
kwargs
):
context
=
super
(
VmRenewView
,
self
)
.
get_context_data
(
**
kwargs
)
context
[
'lease_request_form'
]
=
LeaseRequestForm
()
return
context
class
VmStateChangeView
(
FormOperationMixin
,
VmOperationView
):
op
=
'emergency_change_state'
...
...
circle/request/forms.py
View file @
30dd7df4
from
django.forms
import
ModelForm
,
ModelChoiceField
,
ChoiceField
,
Form
,
CharField
from
django.forms
import
(
ModelForm
,
ModelChoiceField
,
ChoiceField
,
Form
,
CharField
,
RadioSelect
,
)
from
django
import
forms
from
django.utils.translation
import
ugettext_lazy
as
_
...
...
@@ -6,7 +8,7 @@ from crispy_forms.helper import FormHelper
from
crispy_forms.layout
import
Submit
from
request.models
import
(
Request
,
LeaseType
,
TemplateAccessType
,
TemplateAccessAction
,
LeaseType
,
TemplateAccessType
,
TemplateAccessAction
,
)
...
...
@@ -39,7 +41,6 @@ class TemplateAccessTypeForm(ModelForm):
class
Meta
:
model
=
TemplateAccessType
from
django.forms
import
RadioSelect
class
TemplateRequestForm
(
Form
):
template
=
ModelChoiceField
(
TemplateAccessType
.
objects
.
all
(),
...
...
@@ -47,3 +48,9 @@ class TemplateRequestForm(Form):
level
=
ChoiceField
(
TemplateAccessAction
.
LEVELS
,
widget
=
RadioSelect
,
initial
=
TemplateAccessAction
.
LEVELS
.
user
)
reason
=
CharField
(
widget
=
forms
.
Textarea
)
class
LeaseRequestForm
(
Form
):
lease
=
ModelChoiceField
(
LeaseType
.
objects
.
all
(),
label
=
_
(
"Lease"
))
reason
=
CharField
(
widget
=
forms
.
Textarea
)
circle/request/models.py
View file @
30dd7df4
...
...
@@ -48,6 +48,12 @@ class Request(TimeStampedModel):
class
LeaseType
(
RequestType
):
lease
=
ForeignKey
(
Lease
)
def
__unicode__
(
self
):
return
_
(
"
%(name)
s (suspend:
%(s)
s, remove:
%(r)
s)"
)
%
{
'name'
:
self
.
name
,
's'
:
self
.
lease
.
get_readable_suspend_time
(),
'r'
:
self
.
lease
.
get_readable_delete_time
()}
def
get_absolute_url
(
self
):
return
reverse
(
"request.views.lease-type-detail"
,
kwargs
=
{
'pk'
:
self
.
pk
})
...
...
circle/request/templates/request/_request-lease-form.html
0 → 100644
View file @
30dd7df4
{% load i18n %}
{% load crispy_forms_tags %}
<form
action=
"{% url "
request
.
views
.
request-lease
"
vm_pk=
vm.pk
%}"
method=
"POST"
>
{% include "display-form-errors.html" %}
{% csrf_token %}
{{ form.lease|as_crispy_field }}
{{ form.reason|as_crispy_field }}
<input
type=
"submit"
class=
"btn btn-primary"
/>
</form>
circle/request/templates/request/_request-template-form.html
View file @
30dd7df4
{% load i18n %}
{% load crispy_forms_tags %}
{% block content %}
<form
action=
"{% url "
request
.
views
.
request-template
"
%}"
method=
"POST"
>
{% include "display-form-errors.html" %}
{% csrf_token %}
...
...
@@ -26,5 +24,3 @@
{{ form.reason|as_crispy_field }}
<input
type=
"submit"
class=
"btn btn-primary"
/>
</form>
{% endblock %}
circle/request/templates/request/request-lease.html
0 → 100644
View file @
30dd7df4
{% extends "dashboard/base.html" %}
{% load i18n %}
{% block content %}
<div
class=
"row"
>
<div
class=
"col-md-12"
>
<div
class=
"panel panel-default"
>
<div
class=
"panel-heading"
>
<h3
class=
"no-margin"
>
<i
class=
"fa fa-puzzle-piece"
></i>
{% trans "Request new lease" %}
</h3>
</div>
<div
class=
"panel-body"
>
<div
class=
"form-group"
>
<label>
{% trans "Virtual machine" %}
</label>
<div
class=
"controls"
>
<a
href=
"{{ vm.get_absolute_url }}"
>
{{ vm.name }}
</a>
</div>
</div>
{% include "request/_request-lease-form.html" %}
</div>
</div>
</div>
</div>
{% endblock %}
circle/request/urls.py
View file @
30dd7df4
...
...
@@ -22,7 +22,7 @@ from .views import (
RequestList
,
RequestDetail
,
RequestTypeList
,
LeaseTypeCreate
,
LeaseTypeDetail
,
TemplateAccessTypeCreate
,
TemplateAccessTypeDetail
,
TemplateRequestView
,
TemplateRequestView
,
LeaseRequestView
,
)
urlpatterns
=
patterns
(
...
...
@@ -47,5 +47,7 @@ urlpatterns = patterns(
name
=
"request.views.template-type-detail"
),
url
(
r'template/$'
,
TemplateRequestView
.
as_view
(),
name
=
"request.views.request-template"
)
name
=
"request.views.request-template"
),
url
(
r'lease/(?P<vm_pk>\d+)/$'
,
LeaseRequestView
.
as_view
(),
name
=
"request.views.request-lease"
)
)
circle/request/views.py
View file @
30dd7df4
...
...
@@ -3,17 +3,23 @@ from __future__ import unicode_literals, absolute_import
from
django.views.generic
import
(
UpdateView
,
TemplateView
,
DetailView
,
CreateView
,
FormView
,
)
from
django.shortcuts
import
redirect
from
django.shortcuts
import
redirect
,
get_object_or_404
from
django.core.exceptions
import
PermissionDenied
from
braces.views
import
SuperuserRequiredMixin
,
LoginRequiredMixin
from
django_tables2
import
SingleTableView
from
request.models
import
Request
,
TemplateAccessType
,
LeaseType
from
request.models
import
(
Request
,
TemplateAccessType
,
LeaseType
,
TemplateAccessAction
,
# ExtendLeaseAction,
)
from
vm.models
import
Instance
from
request.tables
import
(
RequestTable
,
TemplateAccessTypeTable
,
LeaseTypeTable
,
)
from
request.forms
import
(
LeaseTypeForm
,
TemplateAccessTypeForm
,
TemplateRequestForm
LeaseTypeForm
,
TemplateAccessTypeForm
,
TemplateRequestForm
,
LeaseRequestForm
,
)
...
...
@@ -87,7 +93,6 @@ class TemplateRequestView(FormView):
template_name
=
"request/request-template.html"
def
form_valid
(
self
,
form
):
from
request.models
import
TemplateAccessAction
data
=
form
.
cleaned_data
user
=
self
.
request
.
user
...
...
@@ -107,3 +112,21 @@ class TemplateRequestView(FormView):
req
.
save
()
return
redirect
(
"/"
)
class
LeaseRequestView
(
FormView
):
form_class
=
LeaseRequestForm
template_name
=
"request/request-lease.html"
def
get_context_data
(
self
,
**
kwargs
):
vm
=
get_object_or_404
(
Instance
,
pk
=
self
.
kwargs
[
'vm_pk'
])
user
=
self
.
request
.
user
if
not
vm
.
has_level
(
user
,
'operator'
):
raise
PermissionDenied
()
context
=
super
(
LeaseRequestView
,
self
)
.
get_context_data
(
**
kwargs
)
context
[
'vm'
]
=
vm
return
context
def
form_valid
(
self
,
form
):
pass
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