rrs: Recipes add url validation

Add url validation for Milestone and Upstream status and maintainer name
params if isn't valid raise HTTP 404.

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
This commit is contained in:
Aníbal Limón 2015-01-22 17:53:59 -06:00 committed by Paul Eggleton
parent a7ede0d126
commit a021f8d441
3 changed files with 27 additions and 2 deletions

View File

@ -8,6 +8,15 @@
} }
}, },
{
"pk": 1,
"model": "rrs.maintainer",
"fields": {
"name": "All",
"email": ""
}
},
{ {
"pk": 1, "pk": 1,
"model": "rrs.milestone", "model": "rrs.milestone",

View File

@ -101,6 +101,7 @@ class RecipeUpstreamHistory(models.Model):
class RecipeUpstream(models.Model): class RecipeUpstream(models.Model):
RECIPE_UPSTREAM_STATUS_CHOICES = ( RECIPE_UPSTREAM_STATUS_CHOICES = (
('A', 'All'),
('N', 'Not updated'), ('N', 'Not updated'),
('Y', 'Up-to-date'), ('Y', 'Up-to-date'),
('D', 'Downgrade'), ('D', 'Downgrade'),

View File

@ -1,13 +1,26 @@
import urllib import urllib
from django.http import Http404
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
from django.views.generic import ListView from django.views.generic import ListView, DetailView
from django.core.urlresolvers import resolve from django.core.urlresolvers import resolve
from layerindex.models import Recipe from layerindex.models import Recipe
from rrs.models import Milestone, Maintainer, RecipeMaintainer, RecipeUpstream, \ from rrs.models import Milestone, Maintainer, RecipeMaintainer, RecipeUpstream, \
RecipeUpstreamHistory RecipeUpstreamHistory
def _check_url_params(upstream_status, maintainer_name):
get_object_or_404(Maintainer, name=maintainer_name)
found = 0
for us in RecipeUpstream.RECIPE_UPSTREAM_STATUS_CHOICES_DICT.keys():
if RecipeUpstream.RECIPE_UPSTREAM_STATUS_CHOICES_DICT[us] == upstream_status:
found = 1
break
if found == 0:
raise Http404
class RecipeList(): class RecipeList():
name = None name = None
version = None version = None
@ -42,6 +55,8 @@ class RecipeListView(ListView):
else: else:
self.maintainer_name = 'All' self.maintainer_name = 'All'
_check_url_params(self.upstream_status, self.maintainer_name)
recipe_upstream_history = RecipeUpstreamHistory.get_last_by_date_range( recipe_upstream_history = RecipeUpstreamHistory.get_last_by_date_range(
milestone.start_date, milestone.start_date,
milestone.end_date milestone.end_date
@ -107,7 +122,7 @@ class RecipeListView(ListView):
context['recipe_list_count'] = self.recipe_list_count context['recipe_list_count'] = self.recipe_list_count
context['upstream_status'] = self.upstream_status context['upstream_status'] = self.upstream_status
all_upstream_status = ['All'] all_upstream_status = []
for us in RecipeUpstream.RECIPE_UPSTREAM_STATUS_CHOICES: for us in RecipeUpstream.RECIPE_UPSTREAM_STATUS_CHOICES:
all_upstream_status.append(us[1]) all_upstream_status.append(us[1])
context['all_upstream_status'] = all_upstream_status context['all_upstream_status'] = all_upstream_status