from django.utils.safestring import mark_safe
from django.utils.html import escape
from django.contrib.auth.models import User
+from urllib import quote
class Filter(object):
def __init__(self, filters):
def _form(self):
str = '<select name="%s">' % self.param
- str += '<option value="%s">any</option>' % self.any_key
- str += '<option value="">%s</option>' % self.action_req_str
+
+ selected = ''
+ if not self.applied:
+ selected = 'selected'
+ str += '<option %s value="%s">any</option>' % (selected, self.any_key)
+
+ selected = ''
+ if self.applied and self.state == None:
+ selected = 'selected'
+ str += '<option %s value="">%s</option>' % \
+ (selected, self.action_req_str)
+
for state in State.objects.all():
selected = ''
if self.state and self.state == state:
def condition(self):
if self.delegate:
- return self.delegate.get_profile().name()
+ return self.delegate.profile.name()
return self.no_delegate_str
def _form(self):
- delegates = User.objects.filter(userprofile__maintainer_projects =
+ delegates = User.objects.filter(profile__maintainer_projects =
self.filters.project)
str = '<select name="delegate">'
selected = ' selected'
str += '<option %s value="%s">%s</option>' % (selected,
- d.id, d.get_profile().name())
+ d.id, d.profile.name())
str += '</select>'
return mark_safe(str)
for (k, v) in self.dict.iteritems():
if k not in params:
- params[k] = v[0]
+ params[k] = v
if remove is not None:
if remove.param in params.keys():
del params[remove.param]
- return '?' + '&'.join(['%s=%s' % x for x in params.iteritems()])
+ pairs = params.iteritems()
+
+ def sanitise(s):
+ if not isinstance(s, basestring):
+ s = unicode(s)
+ return quote(s.encode('utf-8'))
+
+ return '?' + '&'.join(['%s=%s' % (sanitise(k), sanitise(v))
+ for (k, v) in pairs])
def querystring_without_filter(self, filter):
return self.querystring(filter)