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