From 5534515a8abd0a5544b7505129bcd8bc4b9daaff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= Date: Fri, 30 Jan 2015 13:49:26 -0600 Subject: [PATCH] rrs: Maintainers add support for display statistics of recipe upgrades by week in Milestone. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Aníbal Limón --- rrs/models.py | 32 +++++++++++++++++++------------- rrs/views.py | 23 +++++++++++++++++++++++ templates/rrs/maintainers.html | 27 +++++++++++++++++++-------- 3 files changed, 61 insertions(+), 21 deletions(-) diff --git a/rrs/models.py b/rrs/models.py index 366bb6b..1290206 100644 --- a/rrs/models.py +++ b/rrs/models.py @@ -37,20 +37,26 @@ class Milestone(models.Model): else: return None - """ Get month intervals between the start and the end of the milestone """ - def get_intervals(self): - intervals = [] - previous_date = self.start_date + """ Get week intervals from start and end of Milestone """ + def get_week_intervals(self): + from datetime import timedelta + + weeks = {} + + week_delta = timedelta(weeks=1) + week_no = 1 current_date = self.start_date - while current_date < self.end_date+timedelta(days=28): - current_date += timedelta(days=1) - if current_date.month != previous_date.month: - interval_start = previous_date.replace(day=1) - interval_end = current_date.replace(day=1) - interval_end -= timedelta(days=1) - intervals.append((interval_start, interval_end)) - previous_date = current_date - return intervals + while True: + if current_date >= self.end_date: + break; + + weeks[week_no] = {} + weeks[week_no]['start_date'] = current_date + weeks[week_no]['end_date'] = current_date + week_delta + current_date += week_delta + week_no += 1 + + return weeks def __unicode__(self): return '%s' % (self.name) diff --git a/rrs/views.py b/rrs/views.py index ee6f1f7..655dfd8 100644 --- a/rrs/views.py +++ b/rrs/views.py @@ -310,6 +310,8 @@ class MaintainerList(): recipes_unknown = '0' percentage_done = '0.00' + week_statistics = None + def __init__(self, name): self.name = name @@ -317,11 +319,14 @@ class MaintainerListView(ListView): context_object_name = 'maintainer_list' def get_queryset(self): + from datetime import date + maintainer_list = [] self.maintainer_count = 0 self.milestone_name = self.kwargs['milestone_name'] milestone = get_object_or_404(Milestone, name=self.milestone_name) + milestone_week_intervals = milestone.get_week_intervals() self.milestone_statistics = _get_milestone_statistics(milestone) @@ -336,6 +341,9 @@ class MaintainerListView(ListView): self.maintainer_count = len(maintainer_list) + self.milestone_weeks = sorted(milestone_week_intervals.keys()) + self.current_week = -1 + current_date = date.today() for ml in maintainer_list: milestone_statistics = _get_milestone_statistics(milestone, ml.name) ml.recipes_all = milestone_statistics['all'] @@ -344,6 +352,19 @@ class MaintainerListView(ListView): ml.recipes_unknown = milestone_statistics['unknown'] ml.percentage_done = milestone_statistics['percentage'] + ml.week_statistics = [] + for week_no in milestone_week_intervals.keys(): + start_date = milestone_week_intervals[week_no]['start_date'] + end_date = milestone_week_intervals[week_no]['end_date'] + + if current_date >= start_date and current_date <= end_date: + self.current_week = week_no - 1 # used in template for loop + + number = RecipeUpgrade.objects.filter(maintainer__name = ml.name, + commit_date__gte = start_date, + commit_date__lte = end_date).count() + ml.week_statistics.append(number) + return maintainer_list def get_context_data(self, **kwargs): @@ -360,5 +381,7 @@ class MaintainerListView(ListView): context['recipes_unknown'] = self.milestone_statistics['unknown'] context['maintainer_count'] = self.maintainer_count + context['milestone_weeks'] = self.milestone_weeks + context['current_week'] = self.current_week return context diff --git a/templates/rrs/maintainers.html b/templates/rrs/maintainers.html index 2b2674e..ce3bea2 100644 --- a/templates/rrs/maintainers.html +++ b/templates/rrs/maintainers.html @@ -42,10 +42,16 @@ Not updated Unknown % done - wk1 - wk2 - wk3 - wk4 + + {% for w in milestone_weeks %} + {% if current_week == forloop.counter0 %} + + {% else %} + + {% endif %} + wk{{ w }} + + {% endfor %} @@ -75,10 +81,15 @@ {{ ml.percentage_done }} - - - - + {% for number in ml.week_statistics %} + {% if current_week == forloop.counter0 %} + + {% else %} + + {% endif %} + {{ number }} + + {% endfor %} {% endfor %}