view roundup/cgi/PageTemplates/MultiMapping.py @ 7596:e5fa31aad344

fix: replace bad reverted code change; allow js rate headers Last commit included an incorrect undo. I was going to move the Allow header/output format parsing earlier in the dispatch method. But I reverted it incorrectly and removed it instead. It has been added back in the former location. Header that allows javascript access to the rest rate limit header has been moved. The rate limit headers can be accessed by client side javascript regardless of the rate limit being exceeded.
author John Rouillard <rouilj@ieee.org>
date Thu, 03 Aug 2023 18:28:19 -0400
parents 23b8e6067f7c
children
line wrap: on
line source

import operator

class MultiMapping:
    def __init__(self, *stores):
        self.stores = list(stores)
    def __getitem__(self, key):
        for store in self.stores:
            if key in store:
                return store[key]
        raise KeyError(key)
    _marker = []
    def get(self, key, default=_marker):
        for store in self.stores:
            if key in store:
                return store[key]
        if default is self._marker:
            raise KeyError(key)
        return default
    def __len__(self):
        return sum([len(x) for x in self.stores])
    def push(self, store):
        self.stores.append(store)
    def pop(self):
        return self.stores.pop()
    def items(self):
        l = []
        for store in self.stores:
            l = l + list(store.items())
        return l

Roundup Issue Tracker: http://roundup-tracker.org/