Exemplo n.º 1
0
 def GET(self):
     """ All the variables from the query_string, wrapped by MultiDict.
     """
     h = MultiDict()
     for k, v in parse_qs(self.query_string).items():
         for val in v:
             h.add(k, val)
     return h
Exemplo n.º 2
0
    def files(self):
        """ The User upload file(is a UserFile object), wrapped by MultiDict.

        It should note that this attribute should be called with
        `yield from` syntax, such as:
            request_files = yield from request.files
        """
        if not self._files:
            post = yield from self._read_post()
            self._files = MultiDict.from_lists(filter(lambda x: isinstance(x[1], UserFile), post.allitems()))

        return self._files
Exemplo n.º 3
0
    def forms(self):
        """ All the variables except the user upload file, wrapped by MultiDict.

        It should note that this attribute should be called with
        `yield from` syntax, such as:
            request_forms = yield from request.forms
        """
        if not self._forms:
            post = yield from self._read_post()
            self._forms = MultiDict.from_lists(filter(lambda x: not isinstance(x[1], UserFile), post.allitems()))

        return self._forms
Exemplo n.º 4
0
    def params(self):
        """ All variables from query_string and request form, wrapped by MultiDict.

        It should note that this attribute should be called with
        `yield from` syntax, such as:
            request_params = yield from request.params
        """
        if not self._params:
            params = MultiDict.from_lists(self.GET.allitems())
            post = yield from self._read_post()
            for k, v in post.allitems():
                params.add(k, v)
            self._params = params

        return self._params
Exemplo n.º 5
0
    def _read_post(self):
        """ Read All the variables from a form request and return a MultiDict.

        -- If your Pyhon version is below 3.4.4, you should note this
        issuse (https://bugs.python.org/issue23801) at cgi.FieldStorage.--
        """
        if self._post:
            return self._post

        if not (self.method in self.FORM_METHOD and self.mine_type in self.FORM_CTYPE):
            self._post = MultiDict()
        else:
            body = yield from self._get_body()
            fenv = self.env.copy()
            fenv["QUERY_STRING"] = ""
            fs = cgi.FieldStorage(fp=io.BytesIO(body), environ=fenv, keep_blank_values=True, encoding=self.charset)
            self._post = MultiDict.from_cgi_filedStoreage(fs)

        return self._post
Exemplo n.º 6
0
def test_multi_dict(cgi_filed):
    mdict = MultiDict({'name': 'jack', 'age': 22}, country='US')
    assert len(mdict) == 3

    mdict.add('name', 'rose')
    assert mdict['name'] == mdict.get('name') == 'rose'
    assert mdict.get('age') == 22
    assert mdict.get('age', side_func=lambda v: v + 1) == 23
    assert mdict.get('inexistence', default='default') == 'default'

    assert len(mdict.getall('name')) == 2
    assert mdict.getall('inexistence') == []

    items = mdict.allitems()
    assert len(items) == 4
    assert len(MultiDict.from_lists(items)) == 3

    mdict = MultiDict.from_cgi_filedStoreage(cgi_filed)
    assert mdict['cgi'].headers == {'k': 'v'}