From 0e8c1849870898a2a108e3ee2d3688acebc745cd Mon Sep 17 00:00:00 2001 From: Jeremy Date: Mon, 23 Feb 2015 15:49:05 -0700 Subject: [PATCH] Recursive listing of the images directory & fixes bug when uploading no files. --- gns3server/handlers/upload_handler.py | 21 ++++++++++----------- gns3server/templates/upload.html | 2 +- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/gns3server/handlers/upload_handler.py b/gns3server/handlers/upload_handler.py index de6809be..1d904d65 100644 --- a/gns3server/handlers/upload_handler.py +++ b/gns3server/handlers/upload_handler.py @@ -20,9 +20,6 @@ import stat from ..config import Config from ..web.route import Route -from ..schemas.version import VERSION_SCHEMA -from ..version import __version__ -from aiohttp.web import HTTPConflict class UploadHandler: @@ -34,15 +31,14 @@ class UploadHandler: api_version=None ) def index(request, response): - files = [] + image_files = [] try: - for filename in os.listdir(UploadHandler.image_directory()): - if os.path.isfile(os.path.join(UploadHandler.image_directory(), filename)): - if filename[0] != ".": - files.append(filename) - except OSError as e: + for root, _, files in os.walk(UploadHandler.image_directory()): + for filename in files: + image_files.append(os.path.join(root, filename)) + except OSError: pass - response.template("upload.html", files=files, image_path=UploadHandler.image_directory()) + response.template("upload.html", files=image_files) @classmethod @Route.post( @@ -53,8 +49,11 @@ class UploadHandler: def upload(request, response): data = yield from request.post() - destination_path = os.path.join(UploadHandler.image_directory(), data["file"].filename) + if not data["file"]: + response.redirect("/upload") + return + destination_path = os.path.join(UploadHandler.image_directory(), data["file"].filename) try: os.makedirs(UploadHandler.image_directory(), exist_ok=True) with open(destination_path, "wb+") as f: diff --git a/gns3server/templates/upload.html b/gns3server/templates/upload.html index e9ba8b0b..0cd9fbcc 100644 --- a/gns3server/templates/upload.html +++ b/gns3server/templates/upload.html @@ -10,7 +10,7 @@ {%if files%}

Files on {{gns3_host}}

{%for file in files%} -

{{image_path}}/{{file}}

+

{{file}}

{%endfor%} {%endif%} {% endblock %}