Iframe funcs.

This commit is contained in:
retoor 2025-02-11 19:30:55 +01:00
parent be35a6caf0
commit 2cfb8fe308
2 changed files with 27 additions and 2 deletions

View File

@ -12,6 +12,10 @@ class BaseView(web.View):
return web.HTTPFound("/") return web.HTTPFound("/")
return await super()._iter() return await super()._iter()
@property
def base_url(self):
return str(self.request.url.with_path('').with_query(''))
@property @property
def app(self): def app(self):
return self.request.app return self.request.app

View File

@ -38,6 +38,17 @@ class UploadView(BaseView):
drive = await self.services.drive.get_or_create(user_uid=self.request.session.get("uid")) drive = await self.services.drive.get_or_create(user_uid=self.request.session.get("uid"))
print(str(drive), flush=True) 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(): while field := await reader.next():
if field.name == "channel_uid": if field.name == "channel_uid":
@ -58,10 +69,20 @@ class UploadView(BaseView):
drive_item = await self.services.drive_item.create( drive_item = await self.services.drive_item.create(
drive["uid"], filename, str(file_path.absolute()), file_path.stat().st_size, file_path.suffix 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 = "<iframe width=\"100%\" frameborder=\"0\" allowfullscreen title=\"Embedded\" src=\"" + self.base_url + "/drive.bin/" + drive_item["uid"] + "\"></iframe>\n"
if type_ == "image":
response = "![image](/drive.bin/" + drive_item["uid"] + ")"
await self.services.chat.send( 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) print(drive_item, flush=True)
return web.json_response({"message": "Files uploaded successfully", "files": [str(file) for file in files], "channel_uid": channel_uid}) return web.json_response({"message": "Files uploaded successfully", "files": [str(file) for file in files], "channel_uid": channel_uid})