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