aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2018-03-03 00:05:13 +1300
committerPaul Eggleton <paul.eggleton@linux.intel.com>2018-05-04 23:57:53 +1200
commitb8f51c7f9edf7427130ceecb80724146be19787f (patch)
tree5071a7372888035d51e89d61ee89aafa1538d131
parent0b6dac83b56450c74ab1f613ca7d0713b80c10ab (diff)
downloadopenembedded-core-contrib-b8f51c7f9edf7427130ceecb80724146be19787f.tar.gz
rrs: handle maintenance plans in views
Insert maintenance plan into views, their corresponding URLs and templates. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
-rw-r--r--rrs/models.py17
-rw-r--r--rrs/urls.py8
-rw-r--r--rrs/views.py59
-rw-r--r--templates/rrs/base_toplevel.html10
-rw-r--r--templates/rrs/maintainers.html20
-rw-r--r--templates/rrs/recipedetail.html6
-rw-r--r--templates/rrs/recipes.html2
7 files changed, 73 insertions, 49 deletions
diff --git a/rrs/models.py b/rrs/models.py
index a71d1b8ed9..35dcc40a26 100644
--- a/rrs/models.py
+++ b/rrs/models.py
@@ -43,8 +43,9 @@ class Release(models.Model):
end_date = models.DateField(db_index=True)
@staticmethod
- def get_by_date(date):
- release_qry = Release.objects.filter(start_date__lte = date,
+ def get_by_date(maintplan, date):
+ release_qry = Release.objects.filter(plan=maintplan,
+ start_date__lte = date,
end_date__gte = date).order_by('-end_date')
if release_qry:
@@ -53,11 +54,11 @@ class Release(models.Model):
return None
@staticmethod
- def get_current():
+ def get_current(maintplan):
current = date.today()
- current_release = Release.get_by_date(current)
+ current_release = Release.get_by_date(maintplan, current)
- return current_release or Release.objects.filter().order_by('-end_date')[0]
+ return current_release or Release.objects.filter(plan=maintplan).order_by('-end_date')[0]
def __str__(self):
return '%s' % (self.name)
@@ -73,15 +74,15 @@ class Milestone(models.Model):
""" Get milestones, filtering don't exist yet and ordering """
@staticmethod
- def get_by_release_name(release_name):
+ def get_by_release_name(maintplan, release_name):
milestones = []
today = date.today()
- mall = Milestone.objects.get(release__name = release_name, name = 'All')
+ mall = Milestone.objects.get(release__plan=maintplan, release__name=release_name, name='All')
if mall:
milestones.append(mall)
- mqry = Milestone.objects.filter(release__name = release_name).order_by('-end_date')
+ mqry = Milestone.objects.filter(release__plan=maintplan, release__name=release_name).order_by('-end_date')
for m in mqry:
if m.name == 'All':
continue
diff --git a/rrs/urls.py b/rrs/urls.py
index 4bd316ec42..9cc596da85 100644
--- a/rrs/urls.py
+++ b/rrs/urls.py
@@ -7,18 +7,18 @@ from rrs.views import RecipeListView, recipes_report, RecipeDetailView, \
urlpatterns = patterns('',
url(r'^$', FrontPageRedirect.as_view(),
name='rrs_frontpage'),
- url(r'^recipes/(?P<release_name>.*)/(?P<milestone_name>.*)/$',
+ url(r'^recipes/(?P<maintplan_name>.*)/(?P<release_name>.*)/(?P<milestone_name>.*)/$',
RecipeListView.as_view(
template_name='rrs/recipes.html'),
name='rrs_recipes'),
- url(r'^recipesreport/(?P<release_name>.*)/(?P<milestone_name>.*)/$',
+ url(r'^recipesreport/(?P<maintplan_name>.*)/(?P<release_name>.*)/(?P<milestone_name>.*)/$',
recipes_report,
name="rrs_recipesreport"),
- url(r'^recipedetail/(?P<pk>\d+)/$',
+ url(r'^recipedetail/(?P<maintplan_name>.*)/(?P<pk>\d+)/$',
RecipeDetailView.as_view(
template_name='rrs/recipedetail.html'),
name='rrs_recipedetail'),
- url(r'^maintainers/(?P<release_name>.*)/(?P<milestone_name>.*)/$',
+ url(r'^maintainers/(?P<maintplan_name>.*)/(?P<release_name>.*)/(?P<milestone_name>.*)/$',
MaintainerListView.as_view(
template_name='rrs/maintainers.html'),
name="rrs_maintainers"),
diff --git a/rrs/views.py b/rrs/views.py
index 4c5b92e564..445708c973 100644
--- a/rrs/views.py
+++ b/rrs/views.py
@@ -13,7 +13,7 @@ from django.db import connection
from layerindex.models import Recipe
from rrs.models import Release, Milestone, Maintainer, RecipeMaintainerHistory, \
RecipeMaintainer, RecipeUpstreamHistory, RecipeUpstream, \
- RecipeDistro, RecipeUpgrade
+ RecipeDistro, RecipeUpgrade, MaintenancePlan
@@ -21,9 +21,16 @@ class FrontPageRedirect(RedirectView):
permanent = False
def get_redirect_url(self):
- release_name = Release.get_current().name
- milestone_name = Milestone.get_current(Release.get_current()).name
- return reverse('rrs_recipes', args=(release_name, milestone_name))
+ maintplan = MaintenancePlan.objects.first()
+ if not maintplan:
+ raise Exception('No maintenance plans defined')
+ release = Release.get_current(maintplan)
+ if not release:
+ raise Exception('No releases defined for maintenance plan %s' % maintplan.name)
+ milestone = Milestone.get_current(release)
+ if not milestone:
+ raise Exception('No milestones defined for release %s' % release.name)
+ return reverse('rrs_recipes', args=(maintplan.name, release.name, milestone.name))
def _check_url_params(upstream_status, maintainer_name):
get_object_or_404(Maintainer, name=maintainer_name)
@@ -456,8 +463,10 @@ class RecipeListView(ListView):
context_object_name = 'recipe_list'
def get_queryset(self):
+ self.maintplan_name = self.kwargs['maintplan_name']
+ maintplan = get_object_or_404(MaintenancePlan, name=self.maintplan_name)
self.release_name = self.kwargs['release_name']
- release = get_object_or_404(Release, name=self.release_name)
+ release = get_object_or_404(Release, plan=maintplan, name=self.release_name)
self.milestone_name = self.kwargs['milestone_name']
milestone = get_object_or_404(Milestone, release = release, name=self.milestone_name)
@@ -498,10 +507,12 @@ class RecipeListView(ListView):
context['this_url_name'] = resolve(self.request.path_info).url_name
+ context['maintplan_name'] = self.maintplan_name
+ maintplan = get_object_or_404(MaintenancePlan, name=self.maintplan_name)
context['release_name'] = self.release_name
- context['all_releases'] = Release.objects.filter().order_by('-end_date')
+ context['all_releases'] = Release.objects.filter(plan=maintplan).order_by('-end_date')
context['milestone_name'] = self.milestone_name
- context['all_milestones'] = Milestone.get_by_release_name(self.release_name)
+ context['all_milestones'] = Milestone.get_by_release_name(maintplan, self.release_name)
context['recipes_percentage'] = self.milestone_statistics['percentage']
context['recipes_all_upgraded'] = self.milestone_statistics['all_upgraded']
@@ -541,8 +552,9 @@ class RecipeListView(ListView):
return context
-def recipes_report(request, release_name, milestone_name):
- release = get_object_or_404(Release, name=release_name)
+def recipes_report(request, maintplan_name, release_name, milestone_name):
+ maintplan = get_object_or_404(MaintenancePlan, name=maintplan_name)
+ release = get_object_or_404(Release, plan=maintplan, name=release_name)
milestone = get_object_or_404(Milestone, release = release, name=milestone_name)
recipe_list = _get_recipe_list(milestone)
@@ -563,6 +575,7 @@ def recipes_report(request, release_name, milestone_name):
class RecipeUpgradeDetail():
title = None
version = None
+ maintplan_name = None
release_name = None
milestone_name = None
date = None
@@ -571,10 +584,11 @@ class RecipeUpgradeDetail():
commit = None
commit_url = None
- def __init__(self, title, version, release_name, milestone_name, date,
+ def __init__(self, title, version, maintplan_name, release_name, milestone_name, date,
maintainer_name, is_recipe_maintainer, commit, commit_url):
self.title = title
self.version = version
+ self.maintplan_name = maintplan_name
self.release_name = release_name
self.milestone_name = milestone_name
self.date = date
@@ -583,12 +597,12 @@ class RecipeUpgradeDetail():
self.commit = commit
self.commit_url = commit_url
-def _get_recipe_upgrade_detail(recipe_upgrade):
+def _get_recipe_upgrade_detail(maintplan, recipe_upgrade):
release_name = ''
milestone_name = ''
recipe_maintainer_history = None
- release = Release.get_by_date(recipe_upgrade.commit_date)
+ release = Release.get_by_date(maintplan, recipe_upgrade.commit_date)
if release:
release_name = release.name
milestone = Milestone.get_by_release_and_date(release,
@@ -615,7 +629,7 @@ def _get_recipe_upgrade_detail(recipe_upgrade):
'/commit/?id=' + recipe_upgrade.sha1
rud = RecipeUpgradeDetail(recipe_upgrade.title, recipe_upgrade.version, \
- release_name, milestone_name, commit_date, maintainer_name, \
+ maintplan.name, release_name, milestone_name, commit_date, maintainer_name, \
is_recipe_maintainer, commit, commit_url)
return rud
@@ -623,13 +637,18 @@ def _get_recipe_upgrade_detail(recipe_upgrade):
class RecipeDetailView(DetailView):
model = Recipe
+ def get_queryset(self):
+ self.maintplan_name = self.kwargs['maintplan_name']
+ return super(RecipeDetailView, self).get_queryset()
+
def get_context_data(self, **kwargs):
context = super(RecipeDetailView, self).get_context_data(**kwargs)
recipe = self.get_object()
if not recipe:
raise django.http.Http404
- release = Release.get_current()
+ maintplan = get_object_or_404(MaintenancePlan, name=self.maintplan_name)
+ release = Release.get_current(maintplan)
context['release_name'] = release.name
milestone = Milestone.get_current(release)
context['milestone_name'] = milestone.name
@@ -666,7 +685,7 @@ class RecipeDetailView(DetailView):
context['recipe_upgrade_details'] = []
for ru in RecipeUpgrade.objects.filter(recipe =
recipe).order_by('-commit_date'):
- context['recipe_upgrade_details'].append(_get_recipe_upgrade_detail(ru))
+ context['recipe_upgrade_details'].append(_get_recipe_upgrade_detail(maintplan, ru))
context['recipe_upgrade_detail_count'] = len(context['recipe_upgrade_details'])
context['recipe_layer_branch_url'] = _get_layer_branch_url(
@@ -705,8 +724,10 @@ class MaintainerListView(ListView):
maintainer_list = []
self.maintainer_count = 0
+ self.maintplan_name = self.kwargs['maintplan_name']
+ maintplan = get_object_or_404(MaintenancePlan, name=self.maintplan_name)
self.release_name = self.kwargs['release_name']
- release = get_object_or_404(Release, name=self.release_name)
+ release = get_object_or_404(Release, plan=maintplan, name=self.release_name)
self.milestone_name = self.kwargs['milestone_name']
milestone = get_object_or_404(Milestone, release = release,
name=self.milestone_name)
@@ -771,10 +792,12 @@ class MaintainerListView(ListView):
context['this_url_name'] = resolve(self.request.path_info).url_name
+ context['maintplan_name'] = self.maintplan_name
+ maintplan = get_object_or_404(MaintenancePlan, name=self.maintplan_name)
context['release_name'] = self.release_name
- context['all_releases'] = Release.objects.filter().order_by('-end_date')
+ context['all_releases'] = Release.objects.filter(plan=maintplan).order_by('-end_date')
context['milestone_name'] = self.milestone_name
- context['all_milestones'] = Milestone.get_by_release_name(self.release_name)
+ context['all_milestones'] = Milestone.get_by_release_name(maintplan, self.release_name)
context['recipes_percentage'] = self.milestone_statistics['percentage']
context['recipes_all_upgraded'] = self.milestone_statistics['all_upgraded']
diff --git a/templates/rrs/base_toplevel.html b/templates/rrs/base_toplevel.html
index 9df5b3b5bd..ee6790864c 100644
--- a/templates/rrs/base_toplevel.html
+++ b/templates/rrs/base_toplevel.html
@@ -22,7 +22,7 @@
</a>
<ul class="dropdown-menu">
{% for r in all_releases %}
- <li><a href="{% url this_url_name r.name "All" %}{{ extra_url_param }}">
+ <li><a href="{% url this_url_name maintplan_name r.name "All" %}{{ extra_url_param }}">
{% if r.name = release_name %}<b>{% endif %}
{{ r.name }}
{% if r.name = release_name %}</b>{% endif %}
@@ -39,7 +39,7 @@
</a>
<ul class="dropdown-menu">
{% for m in all_milestones %}
- <li><a href="{% url this_url_name release_name m.name %}{{ extra_url_param }}">
+ <li><a href="{% url this_url_name maintplan_name release_name m.name %}{{ extra_url_param }}">
{% if m.name = milestone_name %}<b>{% endif %}
{{ m.name }}
{% if m.name = milestone_name %}</b>{% endif %}
@@ -49,7 +49,7 @@
</li>
{% endblock %}
</ul>
- <a href="{% url 'rrs_recipesreport' release_name milestone_name %}" class="btn pull-right">Export recipe list</a>
+ <a href="{% url 'rrs_recipesreport' maintplan_name release_name milestone_name %}" class="btn pull-right">Export recipe list</a>
{% endblock %}
{% block content %}
@@ -98,7 +98,7 @@
<a href="#">
{% else %}
<li>
- <a href="{% url 'rrs_recipes' release_name milestone_name %}{{ extra_url_param }}">
+ <a href="{% url 'rrs_recipes' maintplan_name release_name milestone_name %}{{ extra_url_param }}">
{% endif %}
Recipes upstream status</a>
</li>
@@ -108,7 +108,7 @@
<a href="#">
{% else %}
<li>
- <a href="{% url 'rrs_maintainers' release_name milestone_name %}">
+ <a href="{% url 'rrs_maintainers' maintplan_name release_name milestone_name %}">
{% endif %}
Maintainer statistics</a>
</li>
diff --git a/templates/rrs/maintainers.html b/templates/rrs/maintainers.html
index 78ba9e0342..54bc34051f 100644
--- a/templates/rrs/maintainers.html
+++ b/templates/rrs/maintainers.html
@@ -64,27 +64,27 @@
{{ ml.name }}
</td>
<td>
- <a class="rowData" href="{% url 'rrs_recipes' release_name milestone_name %}?maintainer_name={{ ml.name|urlencode }}">
+ <a class="rowData" href="{% url 'rrs_recipes' maintplan_name release_name milestone_name %}?maintainer_name={{ ml.name|urlencode }}">
{{ ml.recipes_all }}
</a>
</td>
<td>
- <a class="rowData" href="{% url 'rrs_recipes' release_name milestone_name %}?upstream_status={{ "Up-to-date"|urlencode }}&maintainer_name={{ ml.name|urlencode }}">
+ <a class="rowData" href="{% url 'rrs_recipes' maintplan_name release_name milestone_name %}?upstream_status={{ "Up-to-date"|urlencode }}&maintainer_name={{ ml.name|urlencode }}">
{{ ml.recipes_up_to_date }}
</a>
</td>
<td>
- <a class="rowData" href="{% url 'rrs_recipes' release_name milestone_name %}?upstream_status={{ "Not updated"|urlencode }}&maintainer_name={{ ml.name|urlencode }}">
+ <a class="rowData" href="{% url 'rrs_recipes' maintplan_name release_name milestone_name %}?upstream_status={{ "Not updated"|urlencode }}&maintainer_name={{ ml.name|urlencode }}">
{{ ml.recipes_not_updated }}
</a>
</td>
<td>
- <a class="rowData" href="{% url 'rrs_recipes' release_name milestone_name %}?upstream_status={{ "Can't be updated"|urlencode }}&maintainer_name={{ ml.name|urlencode }}">
+ <a class="rowData" href="{% url 'rrs_recipes' maintplan_name release_name milestone_name %}?upstream_status={{ "Can't be updated"|urlencode }}&maintainer_name={{ ml.name|urlencode }}">
{{ ml.recipes_cant_be_updated }}
</a>
</td>
<td>
- <a class="rowData" href="{% url 'rrs_recipes' release_name milestone_name %}?upstream_status={{ "Unknown"|urlencode }}&maintainer_name={{ ml.name|urlencode }}">
+ <a class="rowData" href="{% url 'rrs_recipes' maintplan_name release_name milestone_name %}?upstream_status={{ "Unknown"|urlencode }}&maintainer_name={{ ml.name|urlencode }}">
{{ ml.recipes_unknown }}
</a>
</td>
@@ -105,23 +105,23 @@
<tr class="totalRow">
<td id="totalCell">Total</td>
<td>
- <a id="totalAssigned" class="totalCol" href="{% url 'rrs_recipes' release_name milestone_name %}">
+ <a id="totalAssigned" class="totalCol" href="{% url 'rrs_recipes' maintplan_name release_name milestone_name %}">
</a>
</td>
<td>
- <a id="totalUptoDate" class="totalCol" href="{% url 'rrs_recipes' release_name milestone_name %}?upstream_status={{ "Up-to-date"|urlencode }}">
+ <a id="totalUptoDate" class="totalCol" href="{% url 'rrs_recipes' maintplan_name release_name milestone_name %}?upstream_status={{ "Up-to-date"|urlencode }}">
</a>
</td>
<td>
- <a class="totalCol" href="{% url 'rrs_recipes' release_name milestone_name %}?upstream_status={{ "Not updated"|urlencode }}">
+ <a class="totalCol" href="{% url 'rrs_recipes' maintplan_name release_name milestone_name %}?upstream_status={{ "Not updated"|urlencode }}">
</a>
</td>
<td>
- <a class="totalCol" href="{% url 'rrs_recipes' release_name milestone_name %}?upstream_status={{ "Can't be updated"|urlencode }}">
+ <a class="totalCol" href="{% url 'rrs_recipes' maintplan_name release_name milestone_name %}?upstream_status={{ "Can't be updated"|urlencode }}">
</a>
</td>
<td>
- <a class="totalCol" href="{% url 'rrs_recipes' release_name milestone_name %}?upstream_status={{ "Unknown"|urlencode }}">
+ <a class="totalCol" href="{% url 'rrs_recipes' maintplan_name release_name milestone_name %}?upstream_status={{ "Unknown"|urlencode }}">
</a>
</td>
<td id="totalPercentage"></td>
diff --git a/templates/rrs/recipedetail.html b/templates/rrs/recipedetail.html
index d326816576..4f67700ec0 100644
--- a/templates/rrs/recipedetail.html
+++ b/templates/rrs/recipedetail.html
@@ -44,7 +44,7 @@
<li class="lead">Upstream version: <span>{{ upstream_version }}</span></li>
{% endif %}
<li class="divider-vertical"></li>
- <li class="lead">Maintainer: <span><a href="{% url 'rrs_recipes' 'release_name' 'milestone_name' %}?maintainer_name={{ maintainer_name|urlencode }}">{{ maintainer_name }}</a></span></li>
+ <li class="lead">Maintainer: <span><a href="{% url 'rrs_recipes' maintplan_name release_name milestone_name %}?maintainer_name={{ maintainer_name|urlencode }}">{{ maintainer_name }}</a></span></li>
<li class="divider-vertical"></li>
</ul>
</div>
@@ -79,7 +79,7 @@
<td>{{ rud.version }}</td>
{% if rud.milestone_name %}
<td>
- <a href="{% url 'rrs_recipes' rud.release_name rud.milestone_name %}">
+ <a href="{% url 'rrs_recipes' rud.maintplan_name rud.release_name rud.milestone_name %}">
{{ rud.release_name }}
{% if rud.milestone_name != "All" %}
{{ rud.milestone_name }}
@@ -97,7 +97,7 @@
<td>{{ rud.date }}</td>
{% if rud.is_recipe_maintainer %}
- <td><a href="{% url 'rrs_recipes' rud.release_name rud.milestone_name %}?maintainer_name={{ rud.maintainer_name|urlencode }}">{{ rud.maintainer_name }}</a></td>
+ <td><a href="{% url 'rrs_recipes' rud.maintplan_name rud.release_name rud.milestone_name %}?maintainer_name={{ rud.maintainer_name|urlencode }}">{{ rud.maintainer_name }}</a></td>
{% else %}
<td>{{ rud.maintainer_name }}</a></td>
{% endif %}
diff --git a/templates/rrs/recipes.html b/templates/rrs/recipes.html
index 89b4c6fb61..63dcb51abc 100644
--- a/templates/rrs/recipes.html
+++ b/templates/rrs/recipes.html
@@ -83,7 +83,7 @@
<tbody>
{% for r in recipe_list %}
<tr>
- <td class="recipe_column"><a href="{% url "rrs_recipedetail" r.pk %}">{{ r.name }}</a></td>
+ <td class="recipe_column"><a href="{% url "rrs_recipedetail" maintplan_name r.pk %}">{{ r.name }}</a></td>
<td class="version_column">{{ r.version }}</td>
<td class="upstream_version_column">{{ r.upstream_version }}</td>
{% if r.upstream_status == "Up-to-date" %}