Michael Merickel
2018-10-10 19eef8916cc556dffa3f9d48498bea869ee74b88
use webob's new offer normalization
4 files modified
26 ■■■■ changed files
pyramid/config/routes.py 4 ●●●● patch | view | raw | blame | history
pyramid/config/util.py 8 ●●●● patch | view | raw | blame | history
pyramid/config/views.py 12 ●●●● patch | view | raw | blame | history
tox.ini 2 ●●● patch | view | raw | blame | history
pyramid/config/routes.py
@@ -318,8 +318,8 @@
                        DeprecationWarning,
                        stacklevel=3,
                        )
                # XXX switch this to verify=True when range support is dropped
                accept = [normalize_accept_offer(accept, verify=False)]
                # XXX switch this to False when range support is dropped
                accept = [normalize_accept_offer(accept, allow_range=True)]
            else:
                accept = [
pyramid/config/util.py
@@ -221,10 +221,10 @@
        return order, preds, phash.hexdigest()
def normalize_accept_offer(offer, verify=True):
    if verify:
        Accept.parse_offer(offer)
    return offer.lower()
def normalize_accept_offer(offer, allow_range=False):
    if allow_range and '*' in offer:
        return offer.lower()
    return str(Accept.parse_offer(offer))
def sort_accept_offers(offers, order=None):
pyramid/config/views.py
@@ -840,8 +840,8 @@
                    DeprecationWarning,
                    stacklevel=4,
                    )
            # XXX when media ranges are gone, switch verify=True
            accept = normalize_accept_offer(accept, verify=False)
            # XXX when media ranges are gone, switch allow_range=False
            accept = normalize_accept_offer(accept, allow_range=True)
        view = self.maybe_dotted(view)
        context = self.maybe_dotted(context)
@@ -1308,12 +1308,12 @@
                    'cannot compare params across different media types')
        def normalize_types(thans):
            thans = [normalize_accept_offer(o, verify=False) for o in thans]
            for o in thans:
                check_type(o)
            thans = [normalize_accept_offer(than) for than in thans]
            for than in thans:
                check_type(than)
            return thans
        value = normalize_accept_offer(value, verify=False)
        value = normalize_accept_offer(value)
        offer_type, offer_subtype, offer_params = Accept.parse_offer(value)
        if weighs_more_than:
tox.ini
@@ -26,7 +26,7 @@
    testing
deps =
    -egit+https://github.com/Pylons/webob.git@master#egg=webob
    -egit+https://github.com/mmerickel/webob.git@accept-offer-object#egg=webob
[testenv:py27-scaffolds]
basepython = python2.7