From c290cae3e6704c3ee43a748d21c2b142c67602d2 Mon Sep 17 00:00:00 2001 From: Kálmán Viktor <kviktor@cloud.bme.hu> Date: Wed, 18 Jun 2014 14:26:36 +0200 Subject: [PATCH] dashboard: merge same activites --- circle/dashboard/templates/dashboard/vm-detail/_activity-timeline.html | 1 + circle/dashboard/views.py | 5 +++-- circle/vm/models/instance.py | 17 +++++++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/circle/dashboard/templates/dashboard/vm-detail/_activity-timeline.html b/circle/dashboard/templates/dashboard/vm-detail/_activity-timeline.html index 06593f8..82f1345 100644 --- a/circle/dashboard/templates/dashboard/vm-detail/_activity-timeline.html +++ b/circle/dashboard/templates/dashboard/vm-detail/_activity-timeline.html @@ -6,6 +6,7 @@ </span> <strong{% if user.is_superuser and a.result %} title="{{ a.result }}"{% endif %}> {% if user.is_superuser %}<a href="{{ a.get_absolute_url }}">{% endif %} + {% if a.times > 1 %}({{ a.times }}x){% endif %} {{ a.get_readable_name }}{% if user.is_superuser %}</a>{% endif %} </strong> {{ a.started|date:"Y-m-d H:i" }}{% if a.user %}, diff --git a/circle/dashboard/views.py b/circle/dashboard/views.py index 7b269d7..dde36c5 100644 --- a/circle/dashboard/views.py +++ b/circle/dashboard/views.py @@ -270,7 +270,8 @@ class VmDetailView(CheckedDetailView): }) # activity data - context['activities'] = self.object.get_activities(self.request.user) + context['activities'] = self.object.get_merged_activities( + self.request.user) context['vlans'] = Vlan.get_objects_with_level( 'user', self.request.user @@ -2103,7 +2104,7 @@ def vm_activity(request, pk): if only_status == "false": # instance activity context = { 'instance': instance, - 'activities': instance.get_activities(request.user), + 'activities': instance.get_merged_activities(request.user), 'ops': get_operations(instance, request.user), } diff --git a/circle/vm/models/instance.py b/circle/vm/models/instance.py index 6ff8da1..9a04226 100644 --- a/circle/vm/models/instance.py +++ b/circle/vm/models/instance.py @@ -927,6 +927,23 @@ class Instance(AclBase, VirtualMachineDescModel, StatusModel, OperatedMixin, user=user) return acts + def get_merged_activities(self, user=None): + acts = list(self.get_activities(user)) + merged_acts = [] + latest = None + + for a in acts: + if (latest == a.activity_code and + merged_acts[-1].result == a.result and + (merged_acts[-1].finished - a.finished).days < 7): + merged_acts[-1].times += 1 + else: + merged_acts.append(a) + merged_acts[-1].times = 1 + latest = a.activity_code + + return merged_acts + def get_screenshot(self, timeout=5): queue_name = self.get_remote_queue_name('vm') return vm_tasks.screenshot.apply_async(args=[self.vm_name], -- libgit2 0.26.0