def __call__ (self, method, resource, request) : result = None _, ext = pp_splitext (request.path) ext = (ext or resource.ext or "").strip (".") if ext : rs = self.by_extension [ext] if rs : result = rs [0] mime_type = None if result is None : matches = sorted \ ( self._matches (request.accept_mimetypes) , key = TFL.Getter.priority , reverse = True ) if matches : match = matches [0] result = match.render mime_type = match.mime_type not_picky = \ resource.ignore_picky_accept or not request.accept_mimetypes if result is None and not_picky and self.renderers : result = self.renderers [0] mime_type = None if result is not None : return result (method, resource, mime_type)
def render_acceptable (self, method, resource, request, response) : l = [] body = dict (accept_mimetypes = l) urlb, ext = pp_splitext (request.url) for r in self.renderers : url = ".".join ((urlb, r.extensions [0])) if r.extensions else urlb l.append \ ( dict ( extensions = r.extensions , mime_types = r.mime_types , url = url ) ) renderer = getattr (method, "accept_mimetypes_renderer", JSON) \ (method, resource) response.status_code = 406 renderer (request, response, body)