def ipn(): arg = '' #: We use an ImmutableOrderedMultiDict item because it retains the order. request.parameter_storage_class = ImmutableOrderedMultiDict() values = request.form for x, y in values.iteritems(): arg += "&{x}={y}".format(x=x, y=y) validate_url = 'https://www.sandbox.paypal.com' \ '/cgi-bin/webscr?cmd=_notify-validate{arg}' \ .format(arg=arg) print 'Validating IPN using {url}'.format(url=validate_url) r = requests.get(validate_url) if r.text == 'VERIFIED': print "PayPal transaction was verified successfully." # Do something with the verified transaction details. payer_email = request.form.get('payer_email') print "Pulled {email} from transaction".format(email=payer_email) else: print 'Paypal IPN string {arg} did not validate'.format(arg=arg) return r.text
def headers(self): if self._headers: return self._headers decoded = [(name.decode("ascii"), value.decode("ascii")) \ for name, value in self._raw_headers] self._headers = ImmutableOrderedMultiDict(decoded) return self._headers
def query(self): """ Return an `ImmutableOrderedMultiDict` representation of a `Stream`'s query parameteres. The `query` is lazily constructed the first time it is accessed. """ if self._query: return self._query self._query = ImmutableOrderedMultiDict(parse_qsl(self._raw_query)) return self._query
def get_error_messages_for_page(self, section): all_errors = self.get_error_messages() page_ids = section.get_question_ids() page_errors = ImmutableOrderedMultiDict( filter(lambda err: err[0] in page_ids, all_errors)) return page_errors
def headers(self): if self._headers: return self._headers self._headers = ImmutableOrderedMultiDict(self._raw_headers) return self._headers
def test_ordered_multidict(): """Test the OrderedMultiDict""" d = OrderedMultiDict() assert not d d.add('foo', 'bar') assert len(d) == 1 d.add('foo', 'baz') assert len(d) == 1 assert d.items() == [('foo', 'bar')] assert list(d) == ['foo'] assert d.items(multi=True) == [('foo', 'bar'), ('foo', 'baz')] del d['foo'] assert not d assert len(d) == 0 assert list(d) == [] d.update([('foo', 1), ('foo', 2), ('bar', 42)]) d.add('foo', 3) assert d.getlist('foo') == [1, 2, 3] assert d.getlist('bar') == [42] assert d.items() == [('foo', 1), ('bar', 42)] assert d.keys() == list(d) == list(d.iterkeys()) == ['foo', 'bar'] assert d.items(multi=True) == [('foo', 1), ('foo', 2), ('bar', 42), ('foo', 3)] assert len(d) == 2 assert d.pop('foo') == 1 assert d.pop('blafasel', None) is None assert d.pop('blafasel', 42) == 42 assert len(d) == 1 assert d.poplist('bar') == [42] assert not d d.get('missingkey') is None d.add('foo', 42) d.add('foo', 23) d.add('bar', 2) d.add('foo', 42) assert d == MultiDict(d) id = ImmutableOrderedMultiDict(d) assert d == id d.add('foo', 2) assert d != id d.update({'blah': [1, 2, 3]}) assert d['blah'] == 1 assert d.getlist('blah') == [1, 2, 3] # setlist works d = OrderedMultiDict() d['foo'] = 42 d.setlist('foo', [1, 2]) assert d.getlist('foo') == [1, 2] assert_raises(OrderedMultiDict.KeyError, d.pop, 'missing') assert_raises(OrderedMultiDict.KeyError, d.__getitem__, 'missing') # popping d = OrderedMultiDict() d.add('foo', 23) d.add('foo', 42) d.add('foo', 1) assert d.popitem() == ('foo', 23) assert_raises(OrderedMultiDict.KeyError, d.popitem) assert not d d.add('foo', 23) d.add('foo', 42) d.add('foo', 1) assert d.popitemlist() == ('foo', [23, 42, 1]) assert_raises(OrderedMultiDict.KeyError, d.popitemlist)