def negotiate_mime_types(self, obj, accepts={}): acc_types = http.build_mime_tree(accepts, True) priorities = {} for doc_type, doc_subtypes in self._mime_types.items(): acc_subtypes = acc_types.get(doc_type, acc_types["*"]) for doc_subtype, doc_pri in doc_subtypes.items(): acc_pri = acc_subtypes.get(doc_subtype, acc_subtypes["*"]) priority = doc_pri * acc_pri mime_type = http.tuple2mime((doc_type, doc_subtype)) if self._registry.lookup_writer(mime_type, obj): priorities[mime_type] = priority order = priorities.keys() order.sort(key=priorities.get) return order[::-1]
def check(tuple, expected): result = http.tuple2mime(tuple) self.assertEqual(result, expected)