[yocto] [rrs][PATCH] rrs/views: Fix mismatch in summary and recipe list
mariano.lopez at linux.intel.com
mariano.lopez at linux.intel.com
Fri Aug 28 09:47:41 PDT 2015
From: Mariano Lopez <mariano.lopez at linux.intel.com>
This fixes the issue with the mismatch in the
statistics bar and the recipe list. The mismatch
is caused by the gcc-source recipe, because every
version of the recipe is counted in Upstream History
but not in Recipe Upgrade.
Also added the TODO.rrs to track bugs and issues with
rrs.
Signed-off-by: Mariano Lopez <mariano.lopez at linux.intel.com>
---
TODO.rrs | 4 ++++
rrs/models.py | 35 +++++++++++++++++++++++++++++++++++
rrs/views.py | 16 +++++++---------
3 files changed, 46 insertions(+), 9 deletions(-)
create mode 100644 TODO.rrs
diff --git a/TODO.rrs b/TODO.rrs
new file mode 100644
index 0000000..8f1acf9
--- /dev/null
+++ b/TODO.rrs
@@ -0,0 +1,4 @@
+TODO:
+
+Bugs:
+ - gcc-source recipe has his own recipes per version. This is triggered in gcc-source.inc
diff --git a/rrs/models.py b/rrs/models.py
index abc9d5b..186e56f 100644
--- a/rrs/models.py
+++ b/rrs/models.py
@@ -429,6 +429,41 @@ class Raw():
return stats
@staticmethod
+ def get_reup_statistics(date, date_id):
+ """ Special case to get recipes statistics removing gcc-source duplicates """
+ recipes = []
+ updated = 0
+ not_updated = 0
+ cant = 0
+ unknown = 0
+
+ all_recipes = Raw.get_reupg_by_date(date)
+ for re in all_recipes:
+ recipes.append(re["id"])
+
+ if date_id:
+ recipes = str(recipes).strip('[]')
+ qry = """SELECT id, status, no_update_reason
+ FROM rrs_RecipeUpstream"""
+ qry += "\nWHERE history_id = '%s'" % str(date_id.id)
+ qry += "\nAND recipe_id IN (%s);" % recipes
+ cur = connection.cursor()
+ cur.execute(qry)
+
+ for re in Raw.dictfetchall(cur):
+ if re["status"] == "Y":
+ updated += 1
+ elif re["status"] == "N" and re["no_update_reason"] == "":
+ not_updated += 1
+ elif re["status"] == "N":
+ cant += 1
+ # We count downgrade as unknown
+ else:
+ unknown += 1
+
+ return (updated, not_updated, cant, unknown)
+
+ @staticmethod
def get_reup_by_recipes_and_date(recipes_id, date_id=None):
""" Get Recipe Upstream based on Recipes and Recipe Upstream History """
stats = []
diff --git a/rrs/views.py b/rrs/views.py
index 01f14f5..8cbbe49 100644
--- a/rrs/views.py
+++ b/rrs/views.py
@@ -47,16 +47,14 @@ def _get_milestone_statistics(milestone, maintainer_name=None):
)
if maintainer_name is None:
+ t_updated, t_not_updated, t_cant, t_unknown = \
+ Raw.get_reup_statistics(milestone.end_date, recipe_upstream_history)
milestone_statistics['all'] = \
- RecipeUpstream.get_all_recipes(recipe_upstream_history).count()
- milestone_statistics['up_to_date'] = \
- RecipeUpstream.get_recipes_up_to_date(recipe_upstream_history).count()
- milestone_statistics['not_updated'] = \
- RecipeUpstream.get_recipes_not_updated(recipe_upstream_history).count()
- milestone_statistics['cant_be_updated'] = \
- RecipeUpstream.get_recipes_cant_be_updated(recipe_upstream_history).count()
- milestone_statistics['unknown'] = \
- RecipeUpstream.get_recipes_unknown(recipe_upstream_history).count()
+ t_updated + t_not_updated + t_cant + t_unknown
+ milestone_statistics['up_to_date'] = t_updated
+ milestone_statistics['not_updated'] = t_not_updated
+ milestone_statistics['cant_be_updated'] = t_cant
+ milestone_statistics['unknown'] = t_unknown
milestone_statistics['percentage'] = 0
milestone_statistics['all_upgraded'] = 0
milestone_statistics['all_not_upgraded'] = 0
--
1.9.1
More information about the yocto
mailing list