本文整理汇总了Python中werkzeug.datastructures.MultiDict.setlist方法的典型用法代码示例。如果您正苦于以下问题:Python MultiDict.setlist方法的具体用法?Python MultiDict.setlist怎么用?Python MultiDict.setlist使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类werkzeug.datastructures.MultiDict
的用法示例。
在下文中一共展示了MultiDict.setlist方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_multidict_pickle
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
def test_multidict_pickle():
"""MultiDict types are pickle-able"""
for protocol in xrange(pickle.HIGHEST_PROTOCOL + 1):
print 'pickling protocol', protocol
d = MultiDict()
d.setlist('foo', [1, 2, 3, 4])
d.setlist('bar', 'foo bar baz'.split())
s = pickle.dumps(d, protocol)
ud = pickle.loads(s)
assert type(ud) is type(d)
print ud.lists()
assert ud == d
ud['newkey'] = 'bla'
assert ud != d
im = ImmutableMultiDict(d)
assert im == d
s = pickle.dumps(im, protocol)
ud = pickle.loads(s)
assert ud == im
assert type(ud) is type(im)
c = CombinedMultiDict([ud, im])
cc = pickle.loads(pickle.dumps(c, protocol))
assert c == cc
assert type(c) is type(cc)
示例2: test_meeting_multicheckbox_field_non_editable
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
def test_meeting_multicheckbox_field_non_editable(app, user):
category = MeetingCategoryFactory(meeting__owner=user.staff)
meeting = category.meeting
data = MultiDict(ParticipantFactory.attributes())
data['category_id'] = category.id
field_data = MultiDict(CustomFieldFactory.attributes())
field_data['label-english'] = field_data['label'].english
field_data['hint-english'] = field_data['hint'].english
field_data['field_type'] = CustomField.MULTI_CHECKBOX
field_data.setlist('custom_field_choices',
['first_choice', 'second_choice', 'third_choice'])
client = app.test_client()
with app.test_request_context():
with client.session_transaction() as sess:
sess['user_id'] = user.id
add_custom_fields_for_meeting(meeting)
add_multicheckbox_field(client, meeting, field_data)
field = (CustomField.query
.filter_by(slug=field_data['label-english'])
.one())
populate_participant_form(meeting, data)
data.setlist(field.slug, ['first_choice', 'third_choice'])
resp = client.post(url_for('meetings.participant_edit',
meeting_id=meeting.id), data=data)
assert resp.status_code == 302
assert Participant.query.current_meeting().participants().first()
assert CustomFieldValue.query.count() == 2
assert field.choices.count() == 3
field_data.add('custom_field_choices', 'fourth_choice')
add_multicheckbox_field(client, meeting, field_data, field.id,
302)
assert field.choices.count() == 3
示例3: payload
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
def payload():
""" Performs sanity checks or decoding depending on the Content-Type,
then returns the request payload as a dict. If request Content-Type is
unsupported, aborts with a 400 (Bad Request).
.. versionchanged:: 0.7
Allow 'multipart/form-data' form fields to be JSON encoded, once the
MULTIPART_FORM_FIELDS_AS_JSON setting was been set.
.. versionchanged:: 0.3
Allow 'multipart/form-data' content type.
.. versionchanged:: 0.1.1
Payload returned as a standard python dict regardless of request content
type.
.. versionchanged:: 0.0.9
More informative error messages.
request.get_json() replaces the now deprecated request.json
.. versionchanged:: 0.0.7
Native Flask request.json preferred over json.loads.
.. versionadded: 0.0.5
"""
content_type = request.headers.get('Content-Type', '').split(';')[0]
if content_type in config.JSON_REQUEST_CONTENT_TYPES:
return request.get_json(force=True)
elif content_type == 'application/x-www-form-urlencoded':
return multidict_to_dict(request.form) if len(request.form) else \
abort(400, description='No form-urlencoded data supplied')
elif content_type == 'multipart/form-data':
# as multipart is also used for file uploads, we let an empty
# request.form go through as long as there are also files in the
# request.
if len(request.form) or len(request.files):
# merge form fields and request files, so we get a single payload
# to be validated against the resource schema.
formItems = MultiDict(request.form)
if config.MULTIPART_FORM_FIELDS_AS_JSON:
for key, lst in formItems.lists():
new_lst = []
for value in lst:
try:
new_lst.append(json.loads(value))
except ValueError:
new_lst.append(json.loads('"{0}"'.format(value)))
formItems.setlist(key, new_lst)
payload = CombinedMultiDict([formItems, request.files])
return multidict_to_dict(payload)
else:
abort(400, description='No multipart/form-data supplied')
else:
abort(400, description='Unknown or no Content-Type header supplied')
示例4: _get_form_data
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
def _get_form_data(self):
if request.method == "POST":
# Actual form submission (when using the period selector widget)
return RHRoomBookingSearchBookings._get_form_data(self)
# Class-specific criteria + default times
data = MultiDict(self.search_criteria)
data["start_time"] = "00:00"
data["end_time"] = "23:59"
data["start_date"] = date.today().strftime("%d/%m/%Y")
data["end_date"] = (date.today() + timedelta(weeks=1)).strftime("%d/%m/%Y")
data.setlist("room_ids", [r.id for r in self._rooms])
return data
示例5: test_meeting_multicheckbox_field_add
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
def test_meeting_multicheckbox_field_add(app, user):
meeting = MeetingFactory()
data = MultiDict(CustomFieldFactory.attributes())
data['label-english'] = data['label'].english
data['hint-english'] = data['hint'].english
data['field_type'] = CustomField.MULTI_CHECKBOX
data.setlist('custom_field_choices', ['first_choice', 'second_choice'])
client = app.test_client()
with app.test_request_context():
with client.session_transaction() as sess:
sess['user_id'] = user.id
add_multicheckbox_field(client, meeting, data)
assert CustomField.query.filter_by(meeting=meeting).count() == 1
assert CustomFieldChoice.query.count() == 2
示例6: process_calling_args
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
def process_calling_args(self, urlargs):
# start with query string arguments that are expected
args = MultiDict()
if self.expected_qs_args:
for k in six.iterkeys(request.args):
if k in self.expected_qs_args:
args.setlist(k, request.args.getlist(k))
# add URL arguments, replacing GET arguments if they are there. URL
# arguments get precedence and we don't want to just .update()
# because that would allow arbitrary get arguments to affect the
# values of the URL arguments
for k, v in six.iteritems(urlargs):
args[k] = v
return _werkzeug_multi_dict_conv(args)
示例7: test_meeting_participant_detail_multicheckbox_list
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
def test_meeting_participant_detail_multicheckbox_list(app, user):
category = MeetingCategoryFactory(meeting__owner=user.staff)
meeting = category.meeting
data = MultiDict(ParticipantFactory.attributes())
data['category_id'] = category.id
field_data = MultiDict(CustomFieldFactory.attributes())
field_data['label-english'] = field_data['label'].english
field_data['hint-english'] = field_data['hint'].english
field_data['field_type'] = CustomField.MULTI_CHECKBOX
field_data.setlist('custom_field_choices',
['first_choice', 'second_choice', 'third_choice'])
client = app.test_client()
with app.test_request_context():
with client.session_transaction() as sess:
sess['user_id'] = user.id
add_custom_fields_for_meeting(meeting)
add_multicheckbox_field(client, meeting, field_data)
field = (CustomField.query
.filter_by(slug=field_data['label-english'])
.one())
populate_participant_form(meeting, data)
choices = ['first_choice', 'third_choice']
data.setlist(field.slug, choices)
resp = client.post(url_for('meetings.participant_edit',
meeting_id=meeting.id), data=data)
assert resp.status_code == 302
assert Participant.query.current_meeting().participants().first()
participant = Participant.query.get(1)
participant.attended = True
resp = client.get(url_for('meetings.participant_detail',
meeting_id=category.meeting.id,
participant_id=1))
assert resp.status_code == 200
details = PyQuery(resp.data)('tr#row-' + field.slug)
assert len(details) == 1
assert ''.join(choices) == details[0].find('td').text_content()
示例8: url_update_endpoint_args
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
def url_update_endpoint_args(endpoint, **kwargs):
"""Like url_for by using current URL for unspecified parameters.
Return the URL for passed endpoint using args from current request and kwargs.
"""
# request.args contains parameters from the query string
# request.view_args contains parameters that matched the view signature
args = MultiDict(request.args)
args.update(request.view_args)
for arg, value in kwargs.items():
if isinstance(value, Iterable) and not isinstance(value, str):
args.setlist(arg, value)
else:
args[arg] = value
# Now set any individual args to the object instead of a list of len 1
# TODO Issue #4
# this is broken if it supposed to be a list of Iterables (e.g. strings)
args = args.to_dict(flat=False)
for key in set(args.keys()):
values = args[key]
if len(values) == 1:
args[key] = values[0]
return url_for(endpoint, **args)
示例9: test_multidict_pickle
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
def test_multidict_pickle():
"""MultiDict types are pickle-able"""
for protocol in xrange(pickle.HIGHEST_PROTOCOL + 1):
print 'pickling protocol', protocol
d = MultiDict()
d.setlist('foo', [1, 2, 3, 4])
d.setlist('bar', 'foo bar baz'.split())
s = pickle.dumps(d, protocol)
ud = pickle.loads(s)
assert type(ud) is type(d)
assert ud == d
assert pickle.loads(s.replace('werkzeug.datastructures', 'werkzeug')) == d
ud['newkey'] = 'bla'
assert ud != d
d2 = OrderedMultiDict(d)
d2.add('foo', 5)
s = pickle.dumps(d2, protocol)
ud = pickle.loads(s)
assert type(ud) is type(d2)
assert ud == d2
ud['newkey'] = 'bla'
print ud
print d2
assert ud != d2
im = ImmutableMultiDict(d)
assert im == d
s = pickle.dumps(im, protocol)
ud = pickle.loads(s)
assert ud == im
assert type(ud) is type(im)
c = CombinedMultiDict([ud, im])
cc = pickle.loads(pickle.dumps(c, protocol))
assert c == cc
assert type(c) is type(cc)
示例10: MultiDict
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
from werkzeug.datastructures import MultiDict
post = MultiDict()
post.setlist("foo", ["ham", "ham2"])
post.setlistdefault("foo", ["answer", "answer2"])
示例11: TestSearchSummary
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
class TestSearchSummary(unittest.TestCase):
def setUp(self):
self.fixture = _get_fixture_data()
self.search_results = SearchResults(self.fixture)
self.request_args = MultiDict([
('lot', 'saas'),
('q', 'email')])
def tearDown(self):
pass
def test_write_list_as_sentence_with_one_item(self):
self.assertEqual(
SearchSummary.write_list_as_sentence(['item1'], 'and'),
u"item1")
def test_write_list_as_sentence_with_two_items(self):
self.assertEqual(
SearchSummary.write_list_as_sentence(['item1', 'item2'], 'and'),
u"item1 and item2")
def test_write_list_as_sentence_with_three_items(self):
self.assertEqual(
SearchSummary.write_list_as_sentence(
['item1', 'item2', 'item3'], 'and'),
u"item1, item2 and item3")
def test_write_parts_as_sentence_with_first_part_None(self):
self.assertEqual(
SearchSummary.write_parts_as_sentence(
[None, u"Hour"]),
u"Hour")
def test_write_parts_as_sentence_with_second_part_None(self):
self.assertEqual(
SearchSummary.write_parts_as_sentence(
[u"Hour", None]),
u"Hour")
def test_write_parts_as_sentence_with_both_parts_not_None(self):
self.assertEqual(
SearchSummary.write_parts_as_sentence(
[u"an", u"Hour"]),
u"an Hour")
def test_search_summary_works_with_keywords(self):
search_summary = SearchSummary('1', self.request_args, filter_groups)
self.assertEqual(search_summary.count, '1')
self.assertEqual(search_summary.sentence, (
u"result found containing <em>email</em>" +
u" in <em>Software as a Service</em>"))
self.assertEqual(len(search_summary.filters_fragments), 0)
def test_search_summary_works_with_blank_keywords(self):
self.request_args.setlist('q', [''])
search_summary = SearchSummary('1', self.request_args, filter_groups)
self.assertEqual(search_summary.count, '1')
self.assertEqual(search_summary.sentence, (
u"result found" +
u" in <em>Software as a Service</em>"))
self.assertEqual(len(search_summary.filters_fragments), 0)
def test_search_summary_works_with_a_different_lot(self):
self.request_args.setlist('lot', ['iaas'])
search_summary = SearchSummary('1', self.request_args, filter_groups)
self.assertEqual(search_summary.count, '1')
self.assertEqual(search_summary.sentence, (
u"result found containing <em>email</em>" +
u" in <em>Infrastructure as a Service</em>"))
self.assertEqual(len(search_summary.filters_fragments), 0)
def test_search_summary_works_with_no_results(self):
search_summary = SearchSummary('0', self.request_args, filter_groups)
self.assertEqual(search_summary.count, '0')
self.assertEqual(search_summary.sentence, (
u"results found containing <em>email</em>" +
u" in <em>Software as a Service</em>"))
self.assertEqual(len(search_summary.filters_fragments), 0)
def test_search_summary_works_with_single_result(self):
search_summary = SearchSummary(1, self.request_args, filter_groups)
self.assertEqual(search_summary.count, '1')
self.assertEqual(search_summary.sentence, (
u"result found containing <em>email</em>" +
u" in <em>Software as a Service</em>"))
self.assertEqual(len(search_summary.filters_fragments), 0)
def test_search_summary_works_with_multiple_results(self):
search_summary = SearchSummary('9', self.request_args, filter_groups)
self.assertEqual(search_summary.count, '9')
self.assertEqual(search_summary.sentence, (
u"results found containing <em>email</em>" +
u" in <em>Software as a Service</em>"))
self.assertEqual(len(search_summary.filters_fragments), 0)
def test_search_summary_with_a_single_filter_group(self):
self.request_args.setlist('serviceTypes', ['collaboration'])
search_summary = SearchSummary('9', self.request_args, filter_groups)
self.assertEqual(search_summary.count, '9')
#.........这里部分代码省略.........
示例12: MultiDict
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
from werkzeug.datastructures import MultiDict
post = MultiDict()
post.setlist("question", ["answer1", "answer2"])
示例13: test_multidict
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [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
#.........这里部分代码省略.........
示例14: get
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
def get(user_id):
User.objects.get_or_404(id=user_id)
params = MultiDict(request.values)
params.setlist('owner', (user_id,))
return list(Collection.get_all(params))
示例15: test_multidict
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [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
#.........这里部分代码省略.........