def header_getter(header, rfc_section): doc = "Gets and sets and deletes the %s header." % header doc += rfc_reference(header, rfc_section) key = header.lower() def fget(r): for k, v in r._headerlist: if k.lower() == key: return v def fset(r, value): fdel(r) if value is not None: if isinstance(value, unicode): value = value.encode( 'ISO-8859-1') # standard encoding for headers r._headerlist.append((header, value)) def fdel(r): items = r._headerlist for i in range(len(items) - 1, -1, -1): if items[i][0].lower() == key: del items[i] return property(fget, fset, fdel, doc)
def accept_property(header, rfc_section, AcceptClass=Accept, NilClass=NilAccept, convert_name='accept header'): key = header_to_key(header) doc = "Gets and sets the %r key in the environment." % key doc += rfc_reference(key, rfc_section) doc += " Converts it as a %s." % convert_name def fget(req): value = req.environ.get(key) if not value: return NilClass(header) return AcceptClass(header, value) def fset(req, val): if val: if isinstance(val, (list, tuple, dict)): val = AcceptClass(header, '') + val val = str(val) req.environ[key] = val or None def fdel(req): del req.environ[key] return property(fget, fset, fdel, doc)
def environ_getter(key, default=_not_given, rfc_section=None): doc = "Gets and sets the %r key in the environment." % key doc += rfc_reference(key, rfc_section) if default is _not_given: def fget(req): return req.environ[key] def fset(req, val): req.environ[key] = val fdel = None else: def fget(req): return req.environ.get(key, default) def fset(req, val): if val is None: if key in req.environ: del req.environ[key] else: req.environ[key] = val def fdel(req): del req.environ[key] return property(fget, fset, fdel, doc=doc)
def header_getter(header, rfc_section): doc = "Gets and sets and deletes the %s header." % header doc += rfc_reference(header, rfc_section) key = header.lower() def fget(r): for k, v in r._headerlist: if k.lower() == key: return v def fset(r, value): fdel(r) if value is not None: if isinstance(value, unicode): # This is the standard encoding for headers: value = value.encode('ISO-8859-1') r._headerlist.append((header, value)) def fdel(r): items = r._headerlist for i in range(len(items)-1, -1, -1): if items[i][0].lower() == key: del items[i] return property(fget, fset, fdel, doc)
def environ_getter(key, default=_not_given, rfc_section=None): doc = "Gets and sets the %r key in the environment." % key doc += rfc_reference(key, rfc_section) if default is _not_given: def fget(req): return req.environ[key] fdel = None else: def fget(req): return req.environ.get(key, default) def fdel(req): del req.environ[key] def fset(req, val): req.environ[key] = val return property(fget, fset, fdel, doc=doc)
def etag_property(key, default, rfc_section): doc = "Gets and sets the %r key in the environment." % key doc += rfc_reference(key, rfc_section) doc += " Converts it as a Etag." def fget(req): value = req.environ.get(key) if not value: return default elif value == '*': return AnyETag else: return ETagMatcher.parse(value) def fset(req, val): if val is None: req.environ[key] = None else: req.environ[key] = str(val) def fdel(req): del req.environ[key] return property(fget, fset, fdel, doc=doc)
def accept_property(header, rfc_section, AcceptClass=Accept, NilClass=NilAccept, convert_name='accept header' ): key = header_to_key(header) doc = "Gets and sets the %r key in the environment." % key doc += rfc_reference(key, rfc_section) doc += " Converts it as a %s." % convert_name def fget(req): value = req.environ.get(key) if not value: return NilClass(header) return AcceptClass(header, value) def fset(req, val): if val: if isinstance(val, (list, tuple, dict)): val = AcceptClass(header, '') + val val = str(val) req.environ[key] = val or None def fdel(req): del req.environ[key] return property(fget, fset, fdel, doc)