def asdict(self, name, _type=None, _set=False): """ Turn this 'a:2,b:blabla,c:True,a:'d' to {a:[2, 'd'], b:'blabla', c:True} """ if _type is None: _type = lambda t: t dict_str = self.pop(name, None) if not dict_str: return {} _dict = {} for item in split_strip(dict_str): key, _, val = item.partition(':') val = _type(val) if key in _dict: if isinstance(_dict[key], list): _dict[key].append(val) else: _dict[key] = [_dict[key], val] else: _dict[key] = val if _set: self[name] = _dict return _dict
def process_list_param(self, name, _type=None, default=None, pop=False, setdefault=None): if _type is None: _type = lambda t: t _csv = self.get(name, '') if _csv and isinstance(_csv, basestring): self[name] = [_type(each) for each in split_strip(_csv)] if name not in self and setdefault is not None: self[name] = setdefault if pop: if default is not None: return self.pop(name, default) else: return self.pop(name) else: if default is not None: return self.get(name, default) else: return self.get(name)
def aslist(self, name, remove_empty=True, default=[], _set=False): _lst = split_strip(self.get(name, default) or default) if remove_empty: _lst = list(filter(bool, _lst)) if _set: self[name] = _lst return _lst
def process_list_param(self, name, _type=None, default=None, pop=False, setdefault=None): if _type is None: _type = lambda t: t _csv = self.get(name, '') if _csv and isinstance(_csv, six.string_types): self[name] = [_type(each) for each in split_strip(_csv)] if name not in self and setdefault is not None: self[name] = setdefault if pop: if default is not None: return self.pop(name, default) else: return self.pop(name) else: if default is not None: return self.get(name, default) else: return self.get(name)
def test_split_strip(self): assert utils.split_strip('1, 2,') == ['1', '2'] assert utils.split_strip('1, 2') == ['1', '2'] assert utils.split_strip('1;2;', on=';') == ['1', '2']