diff options
-rw-r--r-- | layerindex/views.py | 4 | ||||
-rw-r--r-- | rrs/urls.py | 5 | ||||
-rw-r--r-- | rrs/views.py | 14 | ||||
-rw-r--r-- | templates/layerindex/detail.html | 11 |
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"> |