Commit f1a56913 by Kálmán Viktor

dashboard: fix issues

parent 7d0ad459
...@@ -39,8 +39,7 @@ from django.contrib.auth.forms import UserCreationForm as OrgUserCreationForm ...@@ -39,8 +39,7 @@ from django.contrib.auth.forms import UserCreationForm as OrgUserCreationForm
from django.forms.widgets import TextInput, HiddenInput from django.forms.widgets import TextInput, HiddenInput
from django.template import Context from django.template import Context
from django.template.loader import render_to_string from django.template.loader import render_to_string
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ugettext_lazy
from sizefield.widgets import FileSizeWidget from sizefield.widgets import FileSizeWidget
from django.core.urlresolvers import reverse_lazy from django.core.urlresolvers import reverse_lazy
...@@ -1142,9 +1141,17 @@ vm_search_choices = ( ...@@ -1142,9 +1141,17 @@ vm_search_choices = (
class VmListSearchForm(forms.Form): class VmListSearchForm(forms.Form):
s = forms.CharField(widget=forms.TextInput(attrs={ s = forms.CharField(widget=forms.TextInput(attrs={
'class': "form-control input-tags", 'class': "form-control input-tags",
'placeholder': ugettext_lazy("Search...") 'placeholder': _("Search...")
})) }))
stype = forms.ChoiceField(vm_search_choices, widget=forms.Select(attrs={ stype = forms.ChoiceField(vm_search_choices, widget=forms.Select(attrs={
'class': "btn btn-default input-tags", 'class': "btn btn-default input-tags",
})) }))
def __init__(self, *args, **kwargs):
super(VmListSearchForm, self).__init__(*args, **kwargs)
# set initial value, otherwise it would be overwritten by request.GET
if not self.data.get("stype"):
data = self.data.copy()
data['stype'] = 2
self.data = data
...@@ -258,14 +258,15 @@ $(function () { ...@@ -258,14 +258,15 @@ $(function () {
html += '<div class="list-group-item list-group-item-last">' + gettext("No result") + '</div>'; html += '<div class="list-group-item list-group-item-last">' + gettext("No result") + '</div>';
$("#dashboard-vm-list").html(html); $("#dashboard-vm-list").html(html);
$('.title-favourite').tooltip({'placement': 'right'}); $('.title-favourite').tooltip({'placement': 'right'});
});
// if there is only one result and ENTER is pressed redirect $("#dashboard-vm-search-form").submit(function() {
if(e.keyCode == 13 && search_result.length == 1) { var vm_list_items = $("#dashboard-vm-list .list-group-item");
window.location.href = "/dashboard/vm/" + search_result[0].pk + "/"; if(vm_list_items.length == 1) {
} window.location.href = vm_list_items.first().prop("href");
if(e.keyCode == 13 && search_result.length > 1 && input.length > 0) { return false;
window.location.href = "/dashboard/vm/list/?s=" + input + "&stype=2";
} }
return true;
}); });
/* search for nodes */ /* search for nodes */
......
...@@ -46,12 +46,15 @@ ...@@ -46,12 +46,15 @@
</style> </style>
<div href="#" class="list-group-item list-group-footer"> <div href="#" class="list-group-item list-group-footer">
<div class="row"> <div class="row">
<div class="col-sm-6 col-xs-6 input-group input-group-sm"> <form action="{% url "dashboard.views.vm-list" %}" method="GET" id="dashboard-vm-search-form">
<input id="dashboard-vm-search-input" type="text" class="form-control" placeholder="{% trans "Search..." %}" /> <div class="col-sm-6 col-xs-6 input-group input-group-sm">
<div class="input-group-btn"> <input id="dashboard-vm-search-input" type="text" class="form-control" name="s"
<button type="submit" class="form-control btn btn-primary"><i class="fa fa-search"></i></button> placeholder="{% trans "Search..." %}" />
<div class="input-group-btn">
<button type="submit" class="form-control btn btn-primary"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</div> </form>
<div class="col-sm-6 text-right"> <div class="col-sm-6 text-right">
<a class="btn btn-primary btn-xs" href="{% url "dashboard.views.vm-list" %}"> <a class="btn btn-primary btn-xs" href="{% url "dashboard.views.vm-list" %}">
<i class="fa fa-chevron-circle-right"></i> <i class="fa fa-chevron-circle-right"></i>
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
<div class="panel-body vm-list-group-control"> <div class="panel-body vm-list-group-control">
<p> <p>
<strong>{% trans "Group actions" %}</strong> <strong>{% trans "Group actions" %}</strong>
<!--
<button id="vm-list-group-select-all" class="btn btn-info btn-xs">{% trans "Select all" %}</button> <button id="vm-list-group-select-all" class="btn btn-info btn-xs">{% trans "Select all" %}</button>
<a href="#" class="btn btn-default btn-xs" title="{% trans "Migrate" %}" disabled> <a href="#" class="btn btn-default btn-xs" title="{% trans "Migrate" %}" disabled>
<i class="fa fa-truck"></i> <i class="fa fa-truck"></i>
...@@ -41,6 +42,7 @@ ...@@ -41,6 +42,7 @@
<a href="#" class="btn btn-default btn-xs" title="{% trans "Shutdown" %}" disabled> <a href="#" class="btn btn-default btn-xs" title="{% trans "Shutdown" %}" disabled>
<i class="fa fa-power-off"></i> <i class="fa fa-power-off"></i>
</a> </a>
-->
<a title="{% trans "Destroy" %}" id="vm-list-group-delete" disabled href="#" class="btn btn-danger btn-xs" disabled> <a title="{% trans "Destroy" %}" id="vm-list-group-delete" disabled href="#" class="btn btn-danger btn-xs" disabled>
<i class="fa fa-times"></i> <i class="fa fa-times"></i>
</a> </a>
......
...@@ -1554,7 +1554,7 @@ class VmList(LoginRequiredMixin, FilterMixin, ListView): ...@@ -1554,7 +1554,7 @@ class VmList(LoginRequiredMixin, FilterMixin, ListView):
def get_context_data(self, *args, **kwargs): def get_context_data(self, *args, **kwargs):
context = super(VmList, self).get_context_data(*args, **kwargs) context = super(VmList, self).get_context_data(*args, **kwargs)
context['search_form'] = VmListSearchForm(self.request.GET) context['search_form'] = self.search_form
return context return context
def get(self, *args, **kwargs): def get(self, *args, **kwargs):
...@@ -1576,6 +1576,8 @@ class VmList(LoginRequiredMixin, FilterMixin, ListView): ...@@ -1576,6 +1576,8 @@ class VmList(LoginRequiredMixin, FilterMixin, ListView):
content_type="application/json", content_type="application/json",
) )
else: else:
self.search_form = VmListSearchForm(self.request.GET)
self.search_form.full_clean()
return super(VmList, self).get(*args, **kwargs) return super(VmList, self).get(*args, **kwargs)
def get_queryset(self): def get_queryset(self):
...@@ -1597,10 +1599,11 @@ class VmList(LoginRequiredMixin, FilterMixin, ListView): ...@@ -1597,10 +1599,11 @@ class VmList(LoginRequiredMixin, FilterMixin, ListView):
).distinct() ).distinct()
def create_default_queryset(self): def create_default_queryset(self):
stype = self.request.GET.get("stype", "0") cleaned_data = self.search_form.cleaned_data
superuser = stype == "2" stype = cleaned_data.get('stype', 2)
shared = stype == "1" superuser = stype == 2
level = "owner" if stype == "0" else "user" shared = stype == 1
level = "owner" if stype == 0 else "user"
queryset = Instance.get_objects_with_level( queryset = Instance.get_objects_with_level(
level, self.request.user, level, self.request.user,
group_also=shared, disregard_superuser=not superuser, group_also=shared, disregard_superuser=not superuser,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment