Add link to maintenance plan in layer detail

If the RRS is enabled, then add a way to get from the layer detail page
to any maintenance plans in which the layer is included.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
This commit is contained in:
Paul Eggleton 2018-03-21 16:16:02 +13:00
parent 88467d1ab9
commit b2a67d718c
4 changed files with 33 additions and 1 deletions

View File

@ -368,6 +368,10 @@ class LayerDetailView(DetailView):
context['updates'] = layerbranch.layerupdate_set.order_by('-started')
context['url_branch'] = self.kwargs['branch']
context['this_url_name'] = resolve(self.request.path_info).url_name
if 'rrs' in settings.INSTALLED_APPS:
from rrs.models import MaintenancePlanLayerBranch
# We don't care about branch, only that the layer is included
context['rrs_maintplans'] = [m.plan for m in MaintenancePlanLayerBranch.objects.filter(layerbranch__layer=layer)]
return context
class LayerReviewDetailView(LayerDetailView):

View File

@ -2,11 +2,14 @@ from django.conf.urls import patterns, include, url
from rrs.models import Release, Milestone
from rrs.views import RecipeListView, recipes_report, RecipeDetailView, \
MaintainerListView, FrontPageRedirect
MaintainerListView, FrontPageRedirect, MaintenancePlanRedirect
urlpatterns = patterns('',
url(r'^$', FrontPageRedirect.as_view(),
name='rrs_frontpage'),
url(r'^maintplan/(?P<maintplan_name>.*)/$',
MaintenancePlanRedirect.as_view(),
name='rrs_maintplan'),
url(r'^recipes/(?P<maintplan_name>.*)/(?P<release_name>.*)/(?P<milestone_name>.*)/$',
RecipeListView.as_view(
template_name='rrs/recipes.html'),

View File

@ -32,6 +32,20 @@ class FrontPageRedirect(RedirectView):
raise Exception('No milestones defined for release %s' % release.name)
return reverse('rrs_recipes', args=(maintplan.name, release.name, milestone.name))
class MaintenancePlanRedirect(RedirectView):
permanent = False
def get_redirect_url(self, maintplan_name):
maintplan = get_object_or_404(MaintenancePlan, name=maintplan_name)
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)

View File

@ -136,6 +136,17 @@
</ul>
{% endif %}
{% if rrs_maintplans %}
<h3>{{ rrs_maintplans|pluralize:"Maintenance Plan,Maintenance Plans" }}</h3>
<ul>
{% for maintplan in rrs_maintplans %}
<li>
<a href="{% url 'rrs_maintplan' maintplan.name %}">{{ maintplan.name }}</a>
</li>
{% endfor %}
</ul>
{% endif %}
</div> <!-- end of span7 -->
<div class="span4 pull-right description">