1.1 --- a/MoinSupport.py Sat Jun 16 21:24:39 2012 +0200
1.2 +++ b/MoinSupport.py Mon Jun 25 00:18:57 2012 +0200
1.3 @@ -224,6 +224,14 @@
1.4 else:
1.5 return request.path
1.6
1.7 +def getHeader(request, header_name, prefix=None):
1.8 + if hasattr(request, "getHeader"):
1.9 + return request.getHeader(header_name)
1.10 + elif hasattr(request, "headers"):
1.11 + return request.headers[header_name]
1.12 + else:
1.13 + return request.env[(prefix and prefix + "_" or "") + header_name.upper()]
1.14 +
1.15 # Content/media type and preferences support.
1.16
1.17 class MediaRange:
1.18 @@ -432,11 +440,12 @@
1.19 keys.sort(reverse=True)
1.20 return [ordered[key] for key in keys]
1.21
1.22 - def get_preferred_type(self, available):
1.23 + def get_acceptable_types(self, available):
1.24
1.25 """
1.26 - Return the preferred content/media type from those in the 'available'
1.27 - list, given the known preferences.
1.28 + Return content/media types from those in the 'available' list supported
1.29 + by the known preferences grouped by preference level in descending order
1.30 + of preference.
1.31 """
1.32
1.33 matches = {}
1.34 @@ -467,9 +476,22 @@
1.35
1.36 if all_q:
1.37 all_q.sort(reverse=True)
1.38 - return matches[all_q[0]]
1.39 + return [matches[q] for q in all_q]
1.40 else:
1.41 - return None
1.42 + return []
1.43 +
1.44 + def get_preferred_types(self, available):
1.45 +
1.46 + """
1.47 + Return the preferred content/media types from those in the 'available'
1.48 + list, given the known preferences.
1.49 + """
1.50 +
1.51 + preferred = self.get_acceptable_types(available)
1.52 + if preferred:
1.53 + return preferred[0]
1.54 + else:
1.55 + return []
1.56
1.57 # Page access functions.
1.58