From a3138b0289732ebf31ee24a51643c49de1058e27 Mon Sep 17 00:00:00 2001 From: Kálmán Viktor <kviktor@cloud.bme.hu> Date: Wed, 6 Aug 2014 18:14:09 +0200 Subject: [PATCH] dashboard: enhance template list table Closes #239 --- circle/dashboard/tables.py | 27 +++++++++++++++++---------- circle/dashboard/templates/dashboard/template-list/column-template-name.html | 3 +++ circle/dashboard/templates/dashboard/template-list/column-template-owner.html | 1 + circle/dashboard/templates/dashboard/template-list/column-template-running.html | 3 +++ circle/dashboard/views.py | 1 + circle/vm/models/instance.py | 3 +++ 6 files changed, 28 insertions(+), 10 deletions(-) create mode 100644 circle/dashboard/templates/dashboard/template-list/column-template-name.html create mode 100644 circle/dashboard/templates/dashboard/template-list/column-template-owner.html create mode 100644 circle/dashboard/templates/dashboard/template-list/column-template-running.html diff --git a/circle/dashboard/tables.py b/circle/dashboard/tables.py index e8188c9..0fb6c31 100644 --- a/circle/dashboard/tables.py +++ b/circle/dashboard/tables.py @@ -184,9 +184,8 @@ class UserListTablex(Table): class TemplateListTable(Table): - name = LinkColumn( - 'dashboard.views.template-detail', - args=[A('pk')], + name = TemplateColumn( + template_name="dashboard/template-list/column-template-name.html", attrs={'th': {'data-sort': "string"}} ) num_cores = Column( @@ -194,23 +193,31 @@ class TemplateListTable(Table): attrs={'th': {'data-sort': "int"}} ) ram_size = TemplateColumn( - "{{ record.ram_size }} Mb", - attrs={'th': {'data-sort': "string"}} + "{{ record.ram_size }} MiB", + attrs={'th': {'data-sort': "int"}}, ) lease = TemplateColumn( "{{ record.lease.name }}", verbose_name=_("Lease"), attrs={'th': {'data-sort': "string"}} ) - arch = Column( - attrs={'th': {'data-sort': "string"}} - ) system = Column( attrs={'th': {'data-sort': "string"}} ) access_method = Column( attrs={'th': {'data-sort': "string"}} ) + owner = TemplateColumn( + template_name="dashboard/template-list/column-template-owner.html", + verbose_name=_("Owner"), + attrs={'th': {'data-sort': "string"}} + ) + running = TemplateColumn( + template_name="dashboard/template-list/column-template-running.html", + verbose_name=_("Running"), + attrs={'th': {'data-sort': "int"}}, + orderable=False, + ) actions = TemplateColumn( verbose_name=_("Actions"), template_name="dashboard/template-list/column-template-actions.html", @@ -222,8 +229,8 @@ class TemplateListTable(Table): model = InstanceTemplate attrs = {'class': ('table table-bordered table-striped table-hover' ' template-list-table')} - fields = ('name', 'num_cores', 'ram_size', 'arch', - 'system', 'access_method', 'lease', 'actions', ) + fields = ('name', 'num_cores', 'ram_size', 'system', + 'access_method', 'lease', 'owner', 'running', 'actions', ) prefix = "template-" diff --git a/circle/dashboard/templates/dashboard/template-list/column-template-name.html b/circle/dashboard/templates/dashboard/template-list/column-template-name.html new file mode 100644 index 0000000..aea76d3 --- /dev/null +++ b/circle/dashboard/templates/dashboard/template-list/column-template-name.html @@ -0,0 +1,3 @@ +<a href="{% url "dashboard.views.template-detail" pk=record.pk %}" title="{{ record.description }}"> + {{ record.name }} +</a> diff --git a/circle/dashboard/templates/dashboard/template-list/column-template-owner.html b/circle/dashboard/templates/dashboard/template-list/column-template-owner.html new file mode 100644 index 0000000..8709876 --- /dev/null +++ b/circle/dashboard/templates/dashboard/template-list/column-template-owner.html @@ -0,0 +1 @@ +{% include "dashboard/_display-name.html" with user=record.owner show_org=True %} diff --git a/circle/dashboard/templates/dashboard/template-list/column-template-running.html b/circle/dashboard/templates/dashboard/template-list/column-template-running.html new file mode 100644 index 0000000..fa73dc4 --- /dev/null +++ b/circle/dashboard/templates/dashboard/template-list/column-template-running.html @@ -0,0 +1,3 @@ +<a href="{% url "dashboard.views.vm-list" %}?s=template:{{ record.pk }} status:running"> + {{ record.get_running_instances.count }} +</a> diff --git a/circle/dashboard/views.py b/circle/dashboard/views.py index 4c9d0c0..9d21d59 100644 --- a/circle/dashboard/views.py +++ b/circle/dashboard/views.py @@ -1555,6 +1555,7 @@ class VmList(LoginRequiredMixin, FilterMixin, ListView): 'tags[]': "tags__name__in", 'tags': "tags__name__in", # for search string 'owner': "owner__username", + 'template': "template__pk", } def get(self, *args, **kwargs): diff --git a/circle/vm/models/instance.py b/circle/vm/models/instance.py index a90c910..236a8d0 100644 --- a/circle/vm/models/instance.py +++ b/circle/vm/models/instance.py @@ -203,6 +203,9 @@ class InstanceTemplate(AclBase, VirtualMachineDescModel, TimeStampedModel): for disk in self.disks.all(): disk.destroy() + def get_running_instances(self): + return Instance.active.filter(template=self, status="RUNNING") + class Instance(AclBase, VirtualMachineDescModel, StatusModel, OperatedMixin, TimeStampedModel): -- libgit2 0.26.0