benchmarking/bridge/upload_download_files_django.py (29 lines of code) (raw):
from __future__ import absolute_import, division, print_function, unicode_literals
import os
import requests
from bridge.upload_download_files_base import UploadDownloadFilesBase
from bridge.upload_download_files_base import registerUploadDownloadFiles
from utils.custom_logger import getLogger
from utils.utilities import requestsJson
class UploadDownloadFilesDjango(UploadDownloadFilesBase):
def __init__(self, args):
super(UploadDownloadFilesDjango, self).__init__(args)
self.server_addr = self.args.server_addr
def upload(self, **kwargs):
path = kwargs["file"]
if self.server_addr:
storage_addr = self.server_addr + "/upload/"
getLogger().info("Uploading {} to {}".format(path, storage_addr))
filename = os.path.basename(path)
with open(path, "rb") as f:
result_json = requestsJson(
storage_addr, files={"file": (filename, f.read())}
)
url = ""
if result_json["status"] == "success":
url = os.path.join(self.server_addr, result_json["path"])
getLogger().info("File has been uploaded to {}".format(url))
return url
def download(self, **kwargs):
# Download is handled in django_file_downloader
pass
registerUploadDownloadFiles("django", UploadDownloadFilesDjango)