views.py: Add how long a recipe hasn't been updated

This add a tooltip in the upstream status field that
show how long the recipe hasn't been updated.

Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com>
Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
This commit is contained in:
Mariano Lopez 2015-06-26 14:35:31 -05:00 committed by Paul Eggleton
parent a9aff3cae6
commit faafae13fa
3 changed files with 41 additions and 5 deletions

View File

@ -447,6 +447,21 @@ class Raw():
""", [date]) """, [date])
return Raw.dictfetchall(cur) return Raw.dictfetchall(cur)
@staticmethod
def get_reup_by_last_updated(date):
cur = connection.cursor()
cur.execute("""SELECT te.recipe_id, te.status, te.date, te.rownum FROM(
SELECT recipe_id, status, date, ROW_NUMBER() OVER(
PARTITION BY recipe_id
ORDER BY date DESC
) AS rownum
FROM rrs_RecipeUpstream
WHERE status = 'Y'
AND date <= %s) AS te
WHERE te.rownum = 1;
""", [date])
return Raw.dictfetchall(cur)
@staticmethod @staticmethod
def dictfetchall(cursor): def dictfetchall(cursor):
"Returns all rows from a cursor as a dict" "Returns all rows from a cursor as a dict"

View File

@ -3,7 +3,7 @@ import urllib
import csv import csv
from django.http import HttpResponse from django.http import HttpResponse
from datetime import date from datetime import date, datetime
from django.http import Http404 from django.http import Http404
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
from django.views.generic import ListView, DetailView from django.views.generic import ListView, DetailView
@ -96,6 +96,7 @@ class RecipeList():
summary = None summary = None
upstream_status = None upstream_status = None
upstream_version = None upstream_version = None
outdated = None
maintainer_name = None maintainer_name = None
no_update_reason = None no_update_reason = None
@ -116,6 +117,7 @@ def _get_recipe_list(milestone):
recipe_list = [] recipe_list = []
recipes_ids = [] recipes_ids = []
recipe_upstream_dict_all = {} recipe_upstream_dict_all = {}
recipe_last_updated_dict_all = {}
maintainers_dict_all = {} maintainers_dict_all = {}
current_date = date.today() current_date = date.today()
@ -127,12 +129,17 @@ def _get_recipe_list(milestone):
if recipe_upstream_history: if recipe_upstream_history:
recipe_upstream_all = Raw.get_reup_by_recipes_and_date( recipe_upstream_all = Raw.get_reup_by_recipes_and_date(
recipes_ids, recipe_upstream_history.id) recipes_ids, recipe_upstream_history.id)
recipe_last_updated = Raw.get_reup_by_last_updated(
milestone.end_date)
maintainers_all = Raw.get_ma_by_recipes_and_date( maintainers_all = Raw.get_ma_by_recipes_and_date(
recipes_ids, recipe_maintainer_history[0]) recipes_ids, recipe_maintainer_history[0])
for reup in recipe_upstream_all: for reup in recipe_upstream_all:
recipe_upstream_dict_all[reup['recipe_id']] = reup recipe_upstream_dict_all[reup['recipe_id']] = reup
for rela in recipe_last_updated:
recipe_last_updated_dict_all[rela['recipe_id']] = rela
for ma in maintainers_all: for ma in maintainers_all:
maintainers_dict_all[ma['recipe_id']] = ma['name'] maintainers_dict_all[ma['recipe_id']] = ma['name']
else: else:
recipe_upstream_all = None recipe_upstream_all = None
@ -140,6 +147,7 @@ def _get_recipe_list(milestone):
upstream_version = '' upstream_version = ''
upstream_status = '' upstream_status = ''
no_update_reason = '' no_update_reason = ''
outdated = ''
if recipe_upstream_history: if recipe_upstream_history:
recipe_upstream = recipe_upstream_dict_all.get(recipe['id']) recipe_upstream = recipe_upstream_dict_all.get(recipe['id'])
@ -167,11 +175,24 @@ def _get_recipe_list(milestone):
upstream_version = recipe_upstream['version'] upstream_version = recipe_upstream['version']
no_update_reason = recipe_upstream['no_update_reason'] no_update_reason = recipe_upstream['no_update_reason']
#Get how long the recipe hasn't been updated
if recipe_upstream['status'] != 'Y':
recipe_last_updated = \
recipe_last_updated_dict_all.get(recipe['id'])
if recipe_last_updated:
recipe_date = recipe_last_updated['date']
outdated = (current_date - recipe_date.date()).days
else:
outdated = 'Unknown'
else:
outdated = 'Up-to-date'
maintainer_name = maintainers_dict_all.get(recipe['id'], '') maintainer_name = maintainers_dict_all.get(recipe['id'], '')
recipe_list_item = RecipeList(recipe['id'], recipe['pn'], recipe['summary']) recipe_list_item = RecipeList(recipe['id'], recipe['pn'], recipe['summary'])
recipe_list_item.version = recipe['version'] recipe_list_item.version = recipe['version']
recipe_list_item.upstream_status = upstream_status recipe_list_item.upstream_status = upstream_status
recipe_list_item.upstream_version = upstream_version recipe_list_item.upstream_version = upstream_version
recipe_list_item.outdated = outdated
recipe_list_item.maintainer_name = maintainer_name recipe_list_item.maintainer_name = maintainer_name
recipe_list_item.no_update_reason = no_update_reason recipe_list_item.no_update_reason = no_update_reason
recipe_list.append(recipe_list_item) recipe_list.append(recipe_list_item)

View File

@ -88,13 +88,13 @@
<td class="version_column">{{ r.version }}</td> <td class="version_column">{{ r.version }}</td>
<td class="upstream_version_column">{{ r.upstream_version }}</td> <td class="upstream_version_column">{{ r.upstream_version }}</td>
{% if r.upstream_status == "Up-to-date" %} {% if r.upstream_status == "Up-to-date" %}
<td class="text-success"> <td class="text-success" data-toggle="tooltip" title="{{r.outdated}}">
{% elif r.upstream_status == "Not updated" %} {% elif r.upstream_status == "Not updated" %}
<td class="text-error"> <td class="text-error" data-toggle="tooltip" title="{{r.outdated}}">
{% elif r.upstream_status == "Can't be updated" %} {% elif r.upstream_status == "Can't be updated" %}
<td class="muted"> <td class="muted" data-toggle="tooltip" title="{{r.outdated}}">
{% else %} {% else %}
<td class="text-warning"> <td class="text-warning" data-toggle="tooltip" title="{{r.outdated}}">
{% endif %} {% endif %}
{{ r.upstream_status }} {{ r.upstream_status }}
</td> </td>