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