当前位置: 首页>>代码示例>>Python>>正文


Python MultiDict.pop方法代码示例

本文整理汇总了Python中werkzeug.datastructures.MultiDict.pop方法的典型用法代码示例。如果您正苦于以下问题:Python MultiDict.pop方法的具体用法?Python MultiDict.pop怎么用?Python MultiDict.pop使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在werkzeug.datastructures.MultiDict的用法示例。


在下文中一共展示了MultiDict.pop方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: args

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
    def args(self):
        if PY2:
            args_items = request.args.iteritems(multi=True)
        else:
            args_items = request.args.items(multi=True)

        args = MultiDict(list(args_items) + list(request.view_args.items()))
        args.pop('page', None)
        # flat dict if non-multi values used
        for k in args:
            if len(args.getlist(k)) > 1:
                return args

        return args.to_dict()
开发者ID:wangjun,项目名称:flask-paginate,代码行数:16,代码来源:__init__.py

示例2: autosave_post

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
    def autosave_post(self, obj=None):
        """
        Handles autosave POST requests
        """
        obj = obj if obj is not None else self.obj
        if 'form.revision' not in request.form:
            # as form.autosave is true, the form should have `form.revision` field even if it's empty
            return {'status': 'error', 'error_identifier': 'form_missing_revision_field', 'error_description': _("Form must contain a revision ID.")}, 400

        # CSRF check
        if forms.Form().validate_on_submit():
            incoming_data = MultiDict(request.form.items(multi=True))
            client_revision = incoming_data.pop('form.revision')
            incoming_data.pop('csrf_token', None)

            # find the last draft
            draft = self.get_draft(obj)

            if draft is not None:
                if client_revision is None or (client_revision is not None and str(draft.revision) != client_revision):
                    # draft exists, but the form did not send a revision ID,
                    # OR revision ID sent by client does not match the last revision ID
                    return {'status': 'error', 'error_identifier': 'missing_or_invalid_revision', 'error_description': _("There have been changes to this draft since you last edited it. Please reload.")}, 400
                elif client_revision is not None and str(draft.revision) == client_revision:
                    # revision ID sent my client matches, save updated draft data and update revision ID
                    existing = draft.formdata
                    for key in incoming_data.keys():
                        if existing[key] != incoming_data[key]:
                            existing[key] = incoming_data[key]
                    draft.formdata = existing
                    draft.revision = uuid4()
            elif draft is None and client_revision:
                # The form contains a revision ID but no draft exists.
                # Somebody is making autosave requests with an invalid draft ID.
                return {'status': 'error', 'error_identifier': 'invalid_or_expired_revision', 'error_description': _("Invalid revision ID or the existing changes have been submitted already. Please reload.")}, 400
            else:
                # no draft exists, create one
                draft = Draft(
                    table=Project.__tablename__, table_row_id=obj.uuid,
                    formdata=incoming_data, revision=uuid4()
                    )
            db.session.add(draft)
            db.session.commit()
            return {'revision': draft.revision}
        else:
            return {'status': 'error', 'error_identifier': 'invalid_csrf', 'error_description': _("Invalid CSRF token")}, 400
开发者ID:hasgeek,项目名称:funnel,代码行数:48,代码来源:mixins.py

示例3: registration

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
def registration():
    """
    Register user.

    :return:
    """
    provider_id = request.form.get('provider_id', None)
    data = request.form
    data = MultiDict()
    for k in request.form:
        data.add(k, request.form.get(k, None))
    print("provider_id : "+str(provider_id))
    if provider_id:
        data.pop('provider_id')
        provider = get_provider_or_404(provider_id)
        connection_values = session.get('failed_login_connection', None)
    else:
        provider = None
        connection_values = None
    if data:
        form = RegistrationForm(MultiDict(data))
    else:
        form = RegistrationForm()

    if users.is_authenticated():
        return jsonify(), 400

    if form.validate_on_submit():
        user = users.create_user(**data)
        # See if there was an attempted social login prior to registering
        # and if so use the provider connect_handler to save a connection
        connection_values = session.pop('failed_login_connection', None)
        if connection_values and provider_id:
            connection_values['user_id'] = user.id
            connect_handler(connection_values, provider)
        if user:
            login_user(user)
    status = users.is_authenticated()
    email = users.me().email if status else ""
    return jsonify(status=status, email=email)
开发者ID:iepathos,项目名称:flask-canjs-i18n-boilerplate,代码行数:42,代码来源:main.py

示例4: indico_request

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
def indico_request(path):
    request_values = MultiDict(request.values)
    method = request_values.pop('_method', request.method).upper()
    params = request_values.items(multi=True)
    data = build_indico_request(path, params, app.config['INDICO_API_KEY'], app.config['INDICO_SECRET_KEY'])
    request_args = {'params': data} if method == 'GET' else {'data': data}
    try:
        response = requests.request(method, app.config['INDICO_URL'] + path, verify=False, **request_args)
    except requests.HTTPError as e:
        response = e.response
    except requests.ConnectionError as e:
        return 'text/plain', str(e)
    content_type = response.headers.get('Content-Type', '').split(';')[0]
    with closing(response):
        return content_type, response.text
开发者ID:DirkHoffmann,项目名称:indico,代码行数:17,代码来源:apiProxy.py

示例5: args

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
 def args(self):
     args = MultiDict(list(request.args.iteritems(multi=True)) + request.view_args.items())
     args.pop('page', None)
     return args
开发者ID:candyash,项目名称:flask-fastmonkey,代码行数:6,代码来源:__init__.py

示例6: db_confirm

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
def db_confirm(collection, document_id=None):
    '''
    Confirmación de edición de base de datos
    '''
    page = request.args.get("page", 0, int)
    grps = request.args.get("mode", "all", str)
    mode = request.args.get("show", "current", str)
    size = request.args.get("size", 15, int)

    document = db_unserialize(collection, request.form.get("defaults"))
    document_writeable = json.loads(request.form.get("editable"))

    request_form_dict = MultiDict(request.form)

    # Valores por defecto

    page_title = "admin_edit"
    form_title = "admin_edit"

    success_msgid = "admin_saved"
    unchanged_msgid = "admin_nochanges"

    form_fieldtypes = {}
    form_fieldkwargs = {}

    url_id = "admin.index"

    goback = lambda : redirect(url_for(url_id, page = page, mode = grps, show = mode, size = size))

    # Especificaciones de las colecciones
    if collection == "user":
        page_title = 'admin_users'
        form_title = 'admin_users_info'
        success_msgid = "admin_users_updated"
        url_id = "admin.users"
        save_fnc = lambda data: (
            usersdb.create_user(data)
            if document_id is None else
            usersdb.update_user(data)
            )
        # La contraseña se mueve del campo "new password" a "password"
        new_password = request_form_dict.pop(db_fnm("new password"), None)
        if new_password:
            document_writeable.append("password")
            request_form_dict[db_fnm("password")] = new_password
    elif collection == "origin":
        page_title = 'admin_origins_info'
        form_title = 'admin_origins_info'
        url_id = "admin.origins"
        save_fnc = lambda data: (
            filesdb.create_source(data)
            if document_id is None else
            filesdb.update_source(data)
            )
    elif collection == "alternatives":
        url_id = "admin.alternatives"
        save_fnc = lambda data: configdb.update_alternative_config(document_id or data["_id"], data)
    else:
        abort(404)

    if db_confirm_debug: # debug mode
        def dummy_save(x):
            logging.debug(("Update:" if document_id else "Create: ") + repr(x))
        save_fnc = dummy_save

    # Procesamiento de formulario
    if request.form.get("confirmed", "False") == "True":
        # La petición ya ha sido confirmada, procesamos
        check_form = expanded_instance(EditForm,
            {db_fnm(k): BooleanField(k) for k in document_writeable},
            request_form_dict)
        data = {k: document[k] for k in document_writeable if check_form[db_fnm(k)].data}
        if data:
            # Hay datos que modificar, se ejecuta save_fnc y redirigimos
            if not document_id is None:
                data["_id"] = db_ftd(collection, "_id", document_id)
            try:
                save_fnc(data)
                flash(success_msgid, "success")
                return goback()
            except BaseException as e:
                flash(traceback.format_exc(e), "error")
                return goback()
        else:
            # No hay datos que modificar, redirigimos
            flash(unchanged_msgid, "error")
            return goback()
    else:
        # No se trata de la petición confirmada, procesamos el formulario como
        # viene de db_edit, generamos el formulario de confirmación.
        edict = {}
        edit_form = expanded_instance(EditForm, {
            db_fnm(k): form_fieldtypes.get(k, TextField)( k,
                default=db_dtf(collection, k, document[k]) if k in document else None,
                **form_fieldkwargs.get(k, edict))
            for k in document_writeable
            }, request_form_dict)
        document_changes = [
            (k, document.get(k, None), db_ftd(collection, k, edit_form[db_fnm(k)].data))
            for k in document_writeable
#.........这里部分代码省略.........
开发者ID:kultus,项目名称:foofind-web,代码行数:103,代码来源:admin.py

示例7: MultiDict

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
from werkzeug.datastructures import MultiDict

post = MultiDict()
post.add("foo", "foobar")

foo_value = post.pop("foo")
if 'foo' not in post:
    print('post 변수에 더이상 foo 변수가 없습니다.')
开发者ID:tj0822,项目名称:Python,代码行数:10,代码来源:2-48.py

示例8: test_multidict

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
def test_multidict():
    """Multidict behavior"""
    md = MultiDict()
    assert isinstance(md, dict)

    mapping = [('a', 1), ('b', 2), ('a', 2), ('d', 3),
               ('a', 1), ('a', 3), ('d', 4), ('c', 3)]
    md = MultiDict(mapping)

    # simple getitem gives the first value
    assert md['a'] == 1
    assert md['c'] == 3
    assert_raises(KeyError, lambda: md['e'])
    assert md.get('a') == 1

    # list getitem
    assert md.getlist('a') == [1, 2, 1, 3]
    assert md.getlist('d') == [3, 4]
    # do not raise if key not found
    assert md.getlist('x') == []

    # simple setitem overwrites all values
    md['a'] = 42
    assert md.getlist('a') == [42]

    # list setitem
    md.setlist('a', [1, 2, 3])
    assert md['a'] == 1
    assert md.getlist('a') == [1, 2, 3]

    # verify that it does not change original lists
    l1 = [1, 2, 3]
    md.setlist('a', l1)
    del l1[:]
    assert md['a'] == 1

    # setdefault, setlistdefault
    assert md.setdefault('u', 23) == 23
    assert md.getlist('u') == [23]
    del md['u']

    assert md.setlistdefault('u', [-1, -2]) == [-1, -2]
    assert md.getlist('u') == [-1, -2]
    assert md['u'] == -1

    # delitem
    del md['u']
    assert_raises(KeyError, lambda: md['u'])
    del md['d']
    assert md.getlist('d') == []

    # keys, values, items, lists
    assert list(sorted(md.keys())) == ['a', 'b', 'c']
    assert list(sorted(md.iterkeys())) == ['a', 'b', 'c']

    assert list(sorted(md.values())) == [1, 2, 3]
    assert list(sorted(md.itervalues())) == [1, 2, 3]

    assert list(sorted(md.items())) == [('a', 1), ('b', 2), ('c', 3)]
    assert list(sorted(md.items(multi=True))) == \
           [('a', 1), ('a', 2), ('a', 3), ('b', 2), ('c', 3)]
    assert list(sorted(md.iteritems())) == [('a', 1), ('b', 2), ('c', 3)]
    assert list(sorted(md.iteritems(multi=True))) == \
           [('a', 1), ('a', 2), ('a', 3), ('b', 2), ('c', 3)]

    assert list(sorted(md.lists())) == [('a', [1, 2, 3]), ('b', [2]), ('c', [3])]
    assert list(sorted(md.iterlists())) == [('a', [1, 2, 3]), ('b', [2]), ('c', [3])]

    # copy method
    copy = md.copy()
    assert copy['a'] == 1
    assert copy.getlist('a') == [1, 2, 3]

    # update with a multidict
    od = MultiDict([('a', 4), ('a', 5), ('y', 0)])
    md.update(od)
    assert md.getlist('a') == [1, 2, 3, 4, 5]
    assert md.getlist('y') == [0]

    # update with a regular dict
    md = copy
    od = {'a': 4, 'y': 0}
    md.update(od)
    assert md.getlist('a') == [1, 2, 3, 4]
    assert md.getlist('y') == [0]

    # pop, poplist, popitem, popitemlist
    assert md.pop('y') == 0
    assert 'y' not in md
    assert md.poplist('a') == [1, 2, 3, 4]
    assert 'a' not in md
    assert md.poplist('missing') == []

    # remaining: b=2, c=3
    popped = md.popitem()
    assert popped in [('b', 2), ('c', 3)]
    popped = md.popitemlist()
    assert popped in [('b', [2]), ('c', [3])]

    # type conversion
#.........这里部分代码省略.........
开发者ID:d1on,项目名称:werkzeug,代码行数:103,代码来源:test_datastructures.py

示例9: db_confirm

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
def db_confirm(collection, document_id=None):
    """
    Confirmación de edición de base de datos
    """
    page = request.args.get("page", 0, int)
    grps = request.args.get("mode", "all", str)
    mode = request.args.get("show", "current", str)
    size = request.args.get("size", 15, int)

    goback = lambda: redirect(url_for(url_id, page=page, mode=grps, show=mode, size=size))

    document = json.loads(request.form.get("defaults"))
    document_writeable = json.loads(request.form.get("editable"))

    request_form_dict = MultiDict(request.form)

    success_msgid = "admin_saved"
    unchanged_msgid = "admin_nochanges"

    if collection == "user":
        page_title = "admin_users"
        form_title = "admin_users_info"
        success_msgid = "admin_users_updated"
        url_id = "admin.users"
        save_fnc = lambda data: usersdb.update_user(data)
        new_password = request_form_dict.pop(db_fnm("new password"), None)
        if new_password:
            document_writeable.append("password")
            request_form_dict[db_fnm("password")] = new_password
    elif collection == "origin":
        page_title = "admin_origins_info"
        form_title = "admin_origins_info"
        url_id = "admin.origins"
        save_fnc = lambda data: filesdb.update_source(data)

    if request.form.get("confirmed", "False") == "True":
        # La petición ha sido realizada por el formulario de confirmación,
        # lo procesamos.
        check_form = expanded_instance(
            EditForm, {db_fnm(k): BooleanField(k) for k in document_writeable}, request_form_dict
        )
        data = {k: document[k] for k in document_writeable if check_form[db_fnm(k)].data}
        if data:
            data["_id"] = hex2mid(document_id)
            save_fnc(data)
            flash(success_msgid, "success")
            return goback()
        else:
            flash(unchanged_msgid, "error")
            return goback()
    else:
        # No se trata del petición confirmada, procesamos el formulario como
        # viene de db_edit, generamos el formulario de confirmación.

        edit_form = expanded_instance(
            EditForm,
            {db_fnm(k): TextField(k, default=db_dtf(collection, k, document[k])) for k in document_writeable},
            request_form_dict,
        )
        document_changes = [
            (k, document[k], db_ftd(collection, k, edit_form[db_fnm(k)].data))
            for k in document_writeable
            if edit_form[db_fnm(k)].data != db_dtf(collection, k, document[k])
        ]
        if document_changes:
            check_form = expanded_instance(
                EditForm, {db_fnm(k): BooleanField(k, default=False) for k, w, w in document_changes}
            )
            check_form.defaults.data = json.dumps({k: v for k, w, v in document_changes})
            check_form.editable.data = json.dumps([k for k, w, v in document_changes])
            check_form.confirmed.data = True
        else:
            flash(unchanged_msgid, "error")
            return goback()

    return render_template(
        "admin/confirm.html",
        collection=collection,
        document_id=document_id,
        title=admin_title(page_title),
        page_title=_(page_title),
        check_form=check_form,
        form_title=_(form_title),
        fieldname=db_fnm,
        repr=repr,
        document_changes=document_changes,
        list_mode=grps,
        mode=mode,
        page_size=size,
        page=page,
    )
开发者ID:aesedepece,项目名称:foofind-web,代码行数:93,代码来源:admin.py

示例10: test_multidict

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
def test_multidict():
    """Multidict behavior"""
    md = MultiDict()
    assert isinstance(md, dict)

    mapping = [('a', 1), ('b', 2), ('a', 2), ('d', 3),
               ('a', 1), ('a', 3), ('d', 4), ('c', 3)]
    md = MultiDict(mapping)

    # simple getitem gives the first value
    assert md['a'] == 1
    assert md['c'] == 3
    assert_raises(KeyError, lambda: md['e'])
    assert md.get('a') == 1

    # list getitem
    assert md.getlist('a') == [1, 2, 1, 3]
    assert md.getlist('d') == [3, 4]
    # do not raise if key not found
    assert md.getlist('x') == []

    # simple setitem overwrites all values
    md['a'] = 42
    assert md.getlist('a') == [42]

    # list setitem
    md.setlist('a', [1, 2, 3])
    assert md['a'] == 1
    assert md.getlist('a') == [1, 2, 3]

    # verify that it does not change original lists
    l1 = [1, 2, 3]
    md.setlist('a', l1)
    del l1[:]
    assert md['a'] == 1

    # setdefault, setlistdefault
    assert md.setdefault('u', 23) == 23
    assert md.getlist('u') == [23]
    del md['u']

    assert md.setlistdefault('u', [-1, -2]) == [-1, -2]
    assert md.getlist('u') == [-1, -2]
    assert md['u'] == -1

    # delitem
    del md['u']
    assert_raises(KeyError, lambda: md['u'])
    del md['d']
    assert md.getlist('d') == []

    # keys, values, items, lists
    assert list(sorted(md.keys())) == ['a', 'b', 'c']
    assert list(sorted(md.iterkeys())) == ['a', 'b', 'c']

    assert list(sorted(md.values())) == [1, 2, 3]
    assert list(sorted(md.itervalues())) == [1, 2, 3]

    assert list(sorted(md.items())) == [('a', 1), ('b', 2), ('c', 3)]
    assert list(sorted(md.items(multi=True))) == \
           [('a', 1), ('a', 2), ('a', 3), ('b', 2), ('c', 3)]
    assert list(sorted(md.iteritems())) == [('a', 1), ('b', 2), ('c', 3)]
    assert list(sorted(md.iteritems(multi=True))) == \
           [('a', 1), ('a', 2), ('a', 3), ('b', 2), ('c', 3)]

    assert list(sorted(md.lists())) == [('a', [1, 2, 3]), ('b', [2]), ('c', [3])]
    assert list(sorted(md.iterlists())) == [('a', [1, 2, 3]), ('b', [2]), ('c', [3])]

    # copy method
    copy = md.copy()
    assert copy['a'] == 1
    assert copy.getlist('a') == [1, 2, 3]

    # update with a multidict
    od = MultiDict([('a', 4), ('a', 5), ('y', 0)])
    md.update(od)
    assert md.getlist('a') == [1, 2, 3, 4, 5]
    assert md.getlist('y') == [0]

    # update with a regular dict
    md = copy
    od = {'a': 4, 'y': 0}
    md.update(od)
    assert md.getlist('a') == [1, 2, 3, 4]
    assert md.getlist('y') == [0]

    # pop, poplist, popitem, popitemlist
    assert md.pop('y') == 0
    assert 'y' not in md
    assert md.poplist('a') == [1, 2, 3, 4]
    assert 'a' not in md
    assert md.poplist('missing') == []

    # remaining: b=2, c=3
    popped = md.popitem()
    assert popped in [('b', 2), ('c', 3)]
    popped = md.popitemlist()
    assert popped in [('b', [2]), ('c', [3])]

    # type conversion
#.........这里部分代码省略.........
开发者ID:t11e,项目名称:werkzeug,代码行数:103,代码来源:test_datastructures.py


注:本文中的werkzeug.datastructures.MultiDict.pop方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。