mirror of
git://git.yoctoproject.org/layerindex-web.git
synced 2025-07-19 20:59:01 +02:00
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>
This commit is contained in:
parent
0b6dac83b5
commit
b8f51c7f9e
|
@ -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
|
||||
|
|
|
@ -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"),
|
||||
|
|
59
rrs/views.py
59
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']
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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" %}
|
||||
|
|
Loading…
Reference in New Issue
Block a user