Files
Fulfillment-Backend/barcodes/images_uploader/images_uploader.py

39 lines
1.3 KiB
Python

from pathlib import Path
from uuid import uuid4
from aioshutil import copyfileobj
from fastapi import UploadFile
from barcodes.images_uploader.base import BaseImagesUploader
from barcodes.pdf import PDFGenerator
from constants import APP_PATH, API_ROOT
class BarcodeImagesUploader(BaseImagesUploader):
def __init__(self):
self.relative_path = Path("static/images/product_barcodes")
self.storage_path = APP_PATH / self.relative_path
if not Path.exists(self.storage_path):
Path.mkdir(self.storage_path)
def get_url(self, filename: str) -> str:
file_location = self.relative_path / filename
return f"{API_ROOT}/{file_location}"
def get_abs_path(self, filename: str) -> str:
file_location = self.storage_path / filename
return file_location
def delete(self, filename: str):
file_location = self.storage_path / filename
if file_location.exists():
file_location.unlink()
async def upload(self, upload_file: UploadFile) -> str:
filename = str(uuid4()) + '.' + upload_file.filename.split('.')[-1]
file_location = self.storage_path / filename
with open(file_location, 'wb') as buffer:
await copyfileobj(upload_file.file, buffer)
return filename