diff --git a/src/snek/system/view.py b/src/snek/system/view.py index 8c7537e..5371d33 100644 --- a/src/snek/system/view.py +++ b/src/snek/system/view.py @@ -12,6 +12,10 @@ class BaseView(web.View): return web.HTTPFound("/") return await super()._iter() + @property + def base_url(self): + return str(self.request.url.with_path('').with_query('')) + @property def app(self): return self.request.app diff --git a/src/snek/view/upload.py b/src/snek/view/upload.py index 2d7d98b..e8abc32 100644 --- a/src/snek/view/upload.py +++ b/src/snek/view/upload.py @@ -38,6 +38,17 @@ class UploadView(BaseView): drive = await self.services.drive.get_or_create(user_uid=self.request.session.get("uid")) print(str(drive), flush=True) + extension_types = { + ".jpg": "image", + ".gif": "image", + ".png": "image", + ".jpeg": "image", + ".mp4": "video", + ".mp3": "audio", + ".pdf": "document", + ".doc": "document", + ".docx": "document" + } while field := await reader.next(): if field.name == "channel_uid": @@ -58,10 +69,20 @@ class UploadView(BaseView): drive_item = await self.services.drive_item.create( drive["uid"], filename, str(file_path.absolute()), file_path.stat().st_size, file_path.suffix ) + + type_ = "unknown" + extension = "." + filename.split(".")[-1] + if extension in extension_types: + type_ = extension_types[extension] + + await self.services.drive_item.save(drive_item) + response = "\n" + if type_ == "image": + response = "![image](/drive.bin/" + drive_item["uid"] + ")" await self.services.chat.send( - self.request.session.get("uid"), channel_uid, f"![{filename}](/drive.bin/{drive_item['uid']})" + self.request.session.get("uid"), channel_uid, response ) print(drive_item, flush=True) - return web.json_response({"message": "Files uploaded successfully", "files": [str(file) for file in files], "channel_uid": channel_uid}) \ No newline at end of file + return web.json_response({"message": "Files uploaded successfully", "files": [str(file) for file in files], "channel_uid": channel_uid})