aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--layerindex/views.py4
-rw-r--r--rrs/urls.py5
-rw-r--r--rrs/views.py14
-rw-r--r--templates/layerindex/detail.html11
4 files changed, 33 insertions, 1 deletions
diff --git a/layerindex/views.py b/layerindex/views.py
index 74cccd589c..cedc5b0009 100644
--- a/layerindex/views.py
+++ b/layerindex/views.py
@@ -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):
diff --git a/rrs/urls.py b/rrs/urls.py
index 9cc596da85..18fa61be54 100644
--- a/rrs/urls.py
+++ b/rrs/urls.py
@@ -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'),
diff --git a/rrs/views.py b/rrs/views.py
index d11046c426..348b2d0629 100644
--- a/rrs/views.py
+++ b/rrs/views.py
@@ -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)
diff --git a/templates/layerindex/detail.html b/templates/layerindex/detail.html
index 220d475b06..4898d92ad1 100644
--- a/templates/layerindex/detail.html
+++ b/templates/layerindex/detail.html
@@ -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">