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:
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)