def render(self, context): try: GET = context.get('request').GET.copy() except AttributeError: GET = QueryDict("", mutable=True) for attr, op, val in self.triples: actual_attr = attr.resolve(context) try: actual_val = val.resolve(context) except: if val.var == "None": actual_val = None else: actual_val = val.var if actual_attr: if op == "=": if actual_val is None or actual_val == []: if GET.has_key(actual_attr): del GET[actual_attr] elif hasattr(actual_val, '__iter__'): GET.setlist(actual_attr, actual_val) else: GET[actual_attr] = unicode(actual_val) elif op == "+=": if actual_val is None or actual_val == []: if GET.has_key(actual_attr): del GET[actual_attr] elif hasattr(actual_val, '__iter__'): GET.setlist( actual_attr, GET.getlist(actual_attr) + list(actual_val)) else: GET.appendlist(actual_attr, unicode(actual_val)) elif op == "-=": li = GET.getlist(actual_attr) if hasattr(actual_val, '__iter__'): for v in list(actual_val): if v in li: li.remove(v) GET.setlist(actual_attr, li) else: actual_val = unicode(actual_val) if actual_val in li: li.remove(actual_val) GET.setlist(actual_attr, li) return fix_ampersands(GET.urlencode())
def render(self, context): try: GET = context.get('request').GET.copy() except AttributeError: GET = QueryDict("", mutable=True) for attr, op, val in self.triples: actual_attr = attr.resolve(context) try: actual_val = val.resolve(context) except: if val.var == "None": actual_val = None else: actual_val = val.var if actual_attr: if op == "=": if actual_val is None or actual_val == []: if GET.has_key(actual_attr): del GET[actual_attr] elif hasattr(actual_val, '__iter__'): GET.setlist(actual_attr, actual_val) else: GET[actual_attr] = unicode(actual_val) elif op == "+=": if actual_val is None or actual_val == []: if GET.has_key(actual_attr): del GET[actual_attr] elif hasattr(actual_val, '__iter__'): GET.setlist(actual_attr, GET.getlist(actual_attr) + list(actual_val)) else: GET.appendlist(actual_attr, unicode(actual_val)) elif op == "-=": li = GET.getlist(actual_attr) if hasattr(actual_val, '__iter__'): for v in list(actual_val): if v in li: li.remove(v) GET.setlist(actual_attr, li) else: actual_val = unicode(actual_val) if actual_val in li: li.remove(actual_val) GET.setlist(actual_attr, li) return fix_ampersands(GET.urlencode())
def render(self, context): try: get = context.get('request').GET.copy() except AttributeError: get = QueryDict("", mutable=True) for k, v in self.new_values.iteritems(): actual_key = k.resolve(context) actual_value = v.resolve(context) if actual_value: get[actual_key] = actual_value else: if actual_key in get: del get[actual_key] return fix_ampersands(get.urlencode())