def dispatch(self, request, path, *args, **kwargs): """ Basic dispatch handler for all requests coming to the :param request: :param path: :param args: :param kwargs: :return: """ if path: self.path = path self.base_url = request.META['PATH_INFO'][:-len(self.path)] else: self.path = '/' self.base_url = request.META['PATH_INFO'] self.user = request.user meta = request.META.get self.xbody = kwargs['xbody'] = None if (request.method.lower() != 'put' and "/xml" in meta('CONTENT_TYPE', '') and meta('CONTENT_LENGTH', 0) != '' and int(meta('CONTENT_LENGTH', 0)) > 0): # parse XML using defusedxmls parse function self.xbody = kwargs['xbody'] = etree.XPathDocumentEvaluator( parse(request, etree.XMLParser(ns_clean=True, resolve_entities=True)), namespaces=WEBDAV_NSMAP) if request.method.upper() in self._allowed_methods(): handler = getattr(self, request.method.lower(), self.http_method_not_allowed) else: handler = self.http_method_not_allowed try: resp = handler(request, self.path, *args, **kwargs) except ResponseException as e: print(e) resp = e.response except PermissionDenied as pe: print(pe) resp = HttpResponseForbidden() except ValidationError as ve: print(ve) resp = HttpResponseBadRequest() if not 'Allow' in resp: methods = self._allowed_methods() if methods: resp['Allow'] = ", ".join(methods) if not 'Date' in resp: resp['Date'] = rfc1123_date(now()) if self.server_header: resp['Server'] = self.server_header return resp
def dispatch(self, request, path, *args, **kwargs): if path: self.path = path self.base_url = request.META['PATH_INFO'][:-len(self.path)] else: self.path = '/' self.base_url = request.META['PATH_INFO'] meta = request.META.get self.xbody = kwargs['xbody'] = None if (request.method.lower() != 'put' and "/xml" in meta('CONTENT_TYPE', '') and meta('CONTENT_LENGTH', 0) != '' and int(meta('CONTENT_LENGTH', 0)) > 0): self.xbody = kwargs['xbody'] = etree.XPathDocumentEvaluator( etree.parse(request, etree.XMLParser(ns_clean=True)), namespaces=WEBDAV_NSMAP) if request.method.upper() in self._allowed_methods(): handler = getattr(self, request.method.lower(), self.http_method_not_allowed) else: handler = self.http_method_not_allowed try: resp = handler(request, self.path, *args, **kwargs) except ResponseException as e: resp = e.response if not 'Allow' in resp: methods = self._allowed_methods() if methods: resp['Allow'] = ", ".join(methods) if not 'Date' in resp: resp['Date'] = rfc1123_date(now()) if self.server_header: resp['Server'] = self.server_header return resp
def dispatch(self, request, path, *args, **kwargs): if path: self.path = path self.base_url = request.META['PATH_INFO'][:-len(self.path)] else: self.path = '/' self.base_url = request.META['PATH_INFO'] meta = request.META.get self.xbody = kwargs['xbody'] = None if (request.method.lower() != 'put' and "/xml" in meta('CONTENT_TYPE', '') and meta('CONTENT_LENGTH', 0) != '' and int(meta('CONTENT_LENGTH', 0)) > 0): self.xbody = kwargs['xbody'] = etree.XPathDocumentEvaluator( etree.parse(request, etree.XMLParser(ns_clean=True)), namespaces=WEBDAV_NSMAP ) if request.method.upper() in self._allowed_methods(): handler = getattr(self, request.method.lower(), self.http_method_not_allowed) else: handler = self.http_method_not_allowed try: resp = handler(request, self.path, *args, **kwargs) except ResponseException as e: resp = e.response if not 'Allow' in resp: methods = self._allowed_methods() if methods: resp['Allow'] = ", ".join(methods) if not 'Date' in resp: resp['Date'] = rfc1123_date(now()) if self.server_header: resp['Server'] = self.server_header return resp
def getlastmodified(self): """Return the modified time as http_date.""" return rfc1123_date(self.get_modified())
def getlastmodified(self): # ToDo: This is a property... it should not have a "get" in the name -> rename it """Return the modified time as http_date.""" return rfc1123_date(self.get_modified())