Fixes.
This commit is contained in:
		
							parent
							
								
									89d639e44e
								
							
						
					
					
						commit
						692272e3ca
					
				| @ -6,6 +6,7 @@ import uuid | ||||
| import signal | ||||
| from datetime import datetime | ||||
| from contextlib import asynccontextmanager | ||||
| import aiohttp_debugtoolbar | ||||
| 
 | ||||
| from snek import snode | ||||
| from snek.view.threads import ThreadsView | ||||
| @ -176,6 +177,8 @@ class Application(BaseApplication): | ||||
|         self.on_startup.append(self.start_ssh_server) | ||||
|         self.on_startup.append(self.prepare_database) | ||||
|          | ||||
| 
 | ||||
| 
 | ||||
|     async def prepare_stats(self, app): | ||||
|         app['stats'] = create_stats_structure() | ||||
|         print("Stats prepared", flush=True) | ||||
| @ -287,9 +290,9 @@ class Application(BaseApplication): | ||||
|         self.router.add_view("/login.json", LoginView) | ||||
|         self.router.add_view("/register.html", RegisterView) | ||||
|         self.router.add_view("/register.json", RegisterView) | ||||
|         self.router.add_view("/drive/{rel_path:.*}", DriveView) | ||||
|         self.router.add_view("/drive.bin", UploadView) | ||||
|         self.router.add_view("/drive.bin/{uid}.{ext}", UploadView) | ||||
|        # self.router.add_view("/drive/{rel_path:.*}", DriveView) | ||||
|        ## self.router.add_view("/drive.bin", UploadView) | ||||
|        # self.router.add_view("/drive.bin/{uid}.{ext}", UploadView) | ||||
|         self.router.add_view("/search-user.html", SearchUserView) | ||||
|         self.router.add_view("/search-user.json", SearchUserView) | ||||
|         self.router.add_view("/avatar/{uid}.svg", AvatarView) | ||||
| @ -297,25 +300,25 @@ class Application(BaseApplication): | ||||
|         self.router.add_get("/http-photo", self.handle_http_photo) | ||||
|         self.router.add_get("/rpc.ws", RPCView) | ||||
|         self.router.add_get("/c/{channel:.*}", ChannelView) | ||||
|         self.router.add_view( | ||||
|             "/channel/{channel_uid}/attachment.bin", ChannelAttachmentView | ||||
|         ) | ||||
|         self.router.add_view( | ||||
|             "/channel/{channel_uid}/drive.json", ChannelDriveApiView | ||||
|         ) | ||||
|         #self.router.add_view( | ||||
|         #    "/channel/{channel_uid}/attachment.bin", ChannelAttachmentView | ||||
|         #) | ||||
|         #self.router.add_view( | ||||
|         #    "/channel/{channel_uid}/drive.json", ChannelDriveApiView | ||||
|         #) | ||||
|         self.router.add_view( | ||||
|             "/channel/{channel_uid}/attachment.sock", ChannelAttachmentUploadView | ||||
|         ) | ||||
|         self.router.add_view( | ||||
|             "/channel/attachment/{relative_url:.*}", ChannelAttachmentView | ||||
|         ) | ||||
|         )# | ||||
|         self.router.add_view("/channel/{channel}.html", WebView) | ||||
|         self.router.add_view("/threads.html", ThreadsView) | ||||
|         self.router.add_view("/terminal.ws", TerminalSocketView) | ||||
|         self.router.add_view("/terminal.html", TerminalView) | ||||
|         self.router.add_view("/drive.json", DriveApiView) | ||||
|         self.router.add_view("/drive.html", DriveView) | ||||
|         self.router.add_view("/drive/{drive}.json", DriveView) | ||||
|         #self.router.add_view("/drive.json", DriveApiView) | ||||
|         #self.router.add_view("/drive.html", DriveView) | ||||
|         #self.router.add_view("/drive/{drive}.json", DriveView) | ||||
|         self.router.add_get("/stats.html", stats_handler) | ||||
|         self.router.add_view("/stats.json", StatsView) | ||||
|         self.router.add_view("/user/{user}.html", UserView) | ||||
| @ -496,6 +499,7 @@ class Application(BaseApplication): | ||||
|             raise raised_exception | ||||
| 
 | ||||
| app = Application(db_path="sqlite:///snek.db") | ||||
| #aiohttp_debugtoolbar.setup(app) | ||||
| 
 | ||||
| 
 | ||||
| async def main(): | ||||
|  | ||||
| @ -23,7 +23,7 @@ class ChannelModel(BaseModel): | ||||
|             history_start_filter = f" AND created_at > '{self['history_start']}' " | ||||
|         try: | ||||
|             async for model in self.app.services.channel_message.query( | ||||
|                 "SELECT uid FROM channel_message WHERE channel_uid=:channel_uid" + history_start_filter + " ORDER BY created_at DESC LIMIT 1", | ||||
|                 "SELECT uid FROM channel_message WHERE channel_uid=:channel_uid" + history_start_filter + " ORDER BY id DESC LIMIT 1", | ||||
|                 {"channel_uid": self["uid"]}, | ||||
|             ): | ||||
| 
 | ||||
|  | ||||
| @ -1,6 +1,11 @@ | ||||
| from snek.system.service import BaseService | ||||
| from snek.system.template import sanitize_html | ||||
| import time | ||||
| import asyncio | ||||
| from concurrent.futures import ThreadPoolExecutor | ||||
| 
 | ||||
| executor = ThreadPoolExecutor(max_workers=50) | ||||
| 
 | ||||
| 
 | ||||
| class ChannelMessageService(BaseService): | ||||
|     mapper_name = "channel_message" | ||||
| @ -69,10 +74,11 @@ class ChannelMessageService(BaseService): | ||||
|                 "color": user["color"], | ||||
|             } | ||||
|         ) | ||||
|         loop = asyncio.get_event_loop() | ||||
|         try: | ||||
|             template = self.app.jinja2_env.get_template("message.html") | ||||
|             model["html"] = template.render(**context) | ||||
|             model['html'] = sanitize_html(model['html']) | ||||
|             model["html"] = await loop.run_in_executor(executor, lambda: template.render(**context)) | ||||
|             model['html'] = await loop.run_in_executor(executor, lambda:sanitize_html(model['html'])) | ||||
|         except Exception as ex: | ||||
|             print(ex, flush=True) | ||||
| 
 | ||||
| @ -128,8 +134,10 @@ class ChannelMessageService(BaseService): | ||||
|             } | ||||
|         ) | ||||
|         template = self.app.jinja2_env.get_template("message.html") | ||||
|         model["html"] = template.render(**context) | ||||
|         model['html'] = sanitize_html(model['html']) | ||||
|          | ||||
|         loop = asyncio.get_event_loop() | ||||
|         model["html"] = await loop.run_in_executor(executor, lambda: template.render(**context)) | ||||
|         model['html'] = await loop.run_in_executor(executor, lambda: sanitize_html(model['html'])) | ||||
|         return await super().save(model) | ||||
| 
 | ||||
|     async def offset(self, channel_uid, page=0, timestamp=None, page_size=30): | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user