diff --git a/circle/dashboard/tables.py b/circle/dashboard/tables.py index e078a4a..9b71d87 100644 --- a/circle/dashboard/tables.py +++ b/circle/dashboard/tables.py @@ -222,6 +222,7 @@ class LeaseListTable(Table): fields = ('name', 'suspend_interval_seconds', 'delete_interval_seconds', ) prefix = "lease-" + empty_text = _("No available leases.") class UserKeyListTable(Table): diff --git a/circle/dashboard/templates/dashboard/template-list.html b/circle/dashboard/templates/dashboard/template-list.html index 7121f41..29ec340 100644 --- a/circle/dashboard/templates/dashboard/template-list.html +++ b/circle/dashboard/templates/dashboard/template-list.html @@ -39,12 +39,14 @@ </div> </div> +{% if show_lease_table %} <div class="row"> <div class="col-md-6"> <div class="panel panel-default"> <div class="panel-heading"> {% if perms.vm.create_leases %} - <a href="{% url "dashboard.views.lease-create" %}" class="pull-right btn btn-success btn-xs" style="margin-right: 10px;"> + <a href="{% url "dashboard.views.lease-create" %}" + class="pull-right btn btn-success btn-xs" style="margin-right: 10px;"> <i class="fa fa-plus"></i> {% trans "new lease" %} </a> {% endif %} @@ -71,6 +73,7 @@ </div> {% endcomment %} </div> +{% endif %} {% endblock %} {% block extra_js %} diff --git a/circle/dashboard/templates/django_tables2/table_no_page.html b/circle/dashboard/templates/django_tables2/table_no_page.html new file mode 100644 index 0000000..866a81a --- /dev/null +++ b/circle/dashboard/templates/django_tables2/table_no_page.html @@ -0,0 +1,52 @@ +{% spaceless %} +{% load django_tables2 %} +{% load i18n %} +{% if table.page %} +<div class="table-container"> +{% endif %} +{% block table %} +<table{% if table.attrs %} {{ table.attrs.as_html }}{% endif %}> + {% nospaceless %} + {% block table.thead %} + <thead> + <tr> + {% for column in table.columns %} + {% if column.orderable %} + <th {{ column.attrs.th.as_html }}><a href="{% querystring table.prefixed_order_by_field=column.order_by_alias.next %}">{{ column.header }}</a></th> + {% else %} + <th {{ column.attrs.th.as_html }}>{{ column.header }}</th> + {% endif %} + {% endfor %} + </tr> + </thead> + {% endblock table.thead %} + {% block table.tbody %} + <tbody> + {% for row in table.page.object_list|default:table.rows %} {# support pagination #} + {% block table.tbody.row %} + <tr class="{{ forloop.counter|divisibleby:2|yesno:"even,odd" }}"> {# avoid cycle for Django 1.2-1.6 compatibility #} + {% for column, cell in row.items %} + <td {{ column.attrs.td.as_html }}>{% if column.localize == None %}{{ cell }}{% else %}{% if column.localize %}{{ cell|localize }}{% else %}{{ cell|unlocalize }}{% endif %}{% endif %}</td> + {% endfor %} + </tr> + {% endblock table.tbody.row %} + {% empty %} + {% if table.empty_text %} + {% block table.tbody.empty_text %} + <tr><td colspan="{{ table.columns|length }}">{{ table.empty_text }}</td></tr> + {% endblock table.tbody.empty_text %} + {% endif %} + {% endfor %} + </tbody> + {% endblock table.tbody %} + {% block table.tfoot %} + <tfoot></tfoot> + {% endblock table.tfoot %} + {% endnospaceless %} +</table> +{% endblock table %} + +{% if table.page %} +</div> +{% endif %} +{% endspaceless %} diff --git a/circle/dashboard/views.py b/circle/dashboard/views.py index 048ff62..c1afcf1 100644 --- a/circle/dashboard/views.py +++ b/circle/dashboard/views.py @@ -1756,9 +1756,16 @@ class TemplateList(LoginRequiredMixin, FilterMixin, SingleTableView): def get_context_data(self, *args, **kwargs): context = super(TemplateList, self).get_context_data(*args, **kwargs) + user = self.request.user + leases_w_operator = Lease.get_objects_with_level("operator", user) context['lease_table'] = LeaseListTable( - Lease.get_objects_with_level("user", self.request.user), - request=self.request) + leases_w_operator, request=self.request, + template="django_tables2/table_no_page.html", + ) + context['show_lease_table'] = ( + leases_w_operator.count() > 0 or + user.has_perm("vm.create_leases") + ) context['search_form'] = self.search_form