Compare commits
2 commits
e2ebdd45ba
...
b1c2dc9ce0
Author | SHA1 | Date | |
---|---|---|---|
b1c2dc9ce0 | |||
87b9d6048d |
6 changed files with 47 additions and 9 deletions
|
@ -85,8 +85,9 @@ def file_upload(request):
|
||||||
except UnicodeDecodeError:
|
except UnicodeDecodeError:
|
||||||
return HttpResponse(
|
return HttpResponse(
|
||||||
body=f"The file has been uploaded, but it is not a text file."
|
body=f"The file has been uploaded, but it is not a text file."
|
||||||
f" Saved to {filepath}",
|
f" Saved to {filepath}",
|
||||||
status_code=400)
|
status_code=400,
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
return TemplateResponse(request, "file_upload.html")
|
return TemplateResponse(request, "file_upload.html")
|
||||||
|
|
||||||
|
|
|
@ -208,12 +208,12 @@ class SpiderwebRouter(LocalServerMixin, MiddlewareMixin, RoutesMixin, FernetMixi
|
||||||
if self.media_dir:
|
if self.media_dir:
|
||||||
self.media_dir = pathlib.Path(self.media_dir)
|
self.media_dir = pathlib.Path(self.media_dir)
|
||||||
if not pathlib.Path(self.BASE_DIR / self.media_dir).exists():
|
if not pathlib.Path(self.BASE_DIR / self.media_dir).exists():
|
||||||
self.log.error(f"Media directory '{str(self.media_dir)}' does not exist.")
|
self.log.error(
|
||||||
|
f"Media directory '{str(self.media_dir)}' does not exist."
|
||||||
|
)
|
||||||
raise ConfigError
|
raise ConfigError
|
||||||
if self.debug:
|
if self.debug:
|
||||||
self.add_route(
|
self.add_route(rf"/{self.media_url}/<path:filename>", send_file)
|
||||||
rf"/{self.media_url}/<path:filename>", send_file
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
self.log.warning(
|
self.log.warning(
|
||||||
"`media_dir` is set, but `debug` is set to FALSE."
|
"`media_dir` is set, but `debug` is set to FALSE."
|
||||||
|
|
|
@ -9,7 +9,7 @@ from multipart import (
|
||||||
parse_form_data,
|
parse_form_data,
|
||||||
is_form_request as m_is_form_request,
|
is_form_request as m_is_form_request,
|
||||||
MultiDict,
|
MultiDict,
|
||||||
MultipartPart
|
MultipartPart,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -58,7 +58,9 @@ class Request:
|
||||||
else:
|
else:
|
||||||
if content_length:
|
if content_length:
|
||||||
self.content = (
|
self.content = (
|
||||||
self.environ["wsgi.input"].read(content_length).decode(DEFAULT_ENCODING)
|
self.environ["wsgi.input"]
|
||||||
|
.read(content_length)
|
||||||
|
.decode(DEFAULT_ENCODING)
|
||||||
)
|
)
|
||||||
self.GET.update(parse_qs(self.content))
|
self.GET.update(parse_qs(self.content))
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ from wsgiref.util import setup_testing_defaults
|
||||||
from peewee import SqliteDatabase
|
from peewee import SqliteDatabase
|
||||||
|
|
||||||
from spiderweb import SpiderwebRouter
|
from spiderweb import SpiderwebRouter
|
||||||
|
from spiderweb.request import Request
|
||||||
|
|
||||||
|
|
||||||
class StartResponse:
|
class StartResponse:
|
||||||
|
@ -28,3 +29,34 @@ def setup(**kwargs):
|
||||||
environ,
|
environ,
|
||||||
StartResponse(),
|
StartResponse(),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class TestClient:
|
||||||
|
def __init__(self, **kwargs):
|
||||||
|
self.app, self.environ, self.start_response = setup(**kwargs)
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
class RequestFactory:
|
||||||
|
@staticmethod
|
||||||
|
def create_request(
|
||||||
|
environ=None,
|
||||||
|
content=None,
|
||||||
|
headers=None,
|
||||||
|
path=None,
|
||||||
|
server=None,
|
||||||
|
handler=None,
|
||||||
|
):
|
||||||
|
if not environ:
|
||||||
|
environ = {}
|
||||||
|
setup_testing_defaults(environ)
|
||||||
|
environ["HTTP_USER_AGENT"] = "Mozilla/5.0 (testrequest)"
|
||||||
|
environ["REMOTE_ADDR"] = "1.1.1.1"
|
||||||
|
return Request(
|
||||||
|
environ=environ,
|
||||||
|
content=content,
|
||||||
|
headers=headers,
|
||||||
|
path=path,
|
||||||
|
server=server,
|
||||||
|
handler=handler,
|
||||||
|
)
|
||||||
|
|
3
spiderweb/tests/test_files.py
Normal file
3
spiderweb/tests/test_files.py
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
from io import BytesIO
|
||||||
|
|
||||||
|
...
|
Loading…
Add table
Reference in a new issue