diff options
-rw-r--r-- | rrs/models.py | 17 | ||||
-rw-r--r-- | rrs/urls.py | 8 | ||||
-rw-r--r-- | rrs/views.py | 59 | ||||
-rw-r--r-- | templates/rrs/base_toplevel.html | 10 | ||||
-rw-r--r-- | templates/rrs/maintainers.html | 20 | ||||
-rw-r--r-- | templates/rrs/recipedetail.html | 6 | ||||
-rw-r--r-- | templates/rrs/recipes.html | 2 |
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" %} |