示例#1
0
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
示例#2
0
 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
示例#3
0
    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
示例#4
0
 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
示例#5
0
 def headers(self):
     if self._headers:
         return self._headers
     self._headers = ImmutableOrderedMultiDict(self._raw_headers)
     return self._headers
示例#6
0
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)