From d71d5da6bcf22d2daf5ec59832f15fe02472b95c Mon Sep 17 00:00:00 2001 From: retoor <retoor@molodetz.nl> Date: Tue, 8 Apr 2025 04:20:28 +0200 Subject: [PATCH] Updates. --- pyproject.toml | 2 +- src/snek/app.py | 13 +++++++------ src/snek/model/user.py | 22 ++++++++++++++++++++++ src/snek/service/__init__.py | 3 ++- src/snek/static/app.js | 2 +- src/snek/static/base.css | 5 +---- src/snek/templates/search_user.html | 2 ++ src/snek/templates/threads.html | 3 +++ 8 files changed, 39 insertions(+), 13 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 6fbf200..62c1ac7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,7 @@ requires-python = ">=3.12" dependencies = [ "mkdocs>=1.4.0", "lxml", - + "IPython", "shed", "app @ git+https://retoor.molodetz.nl/retoor/app", "beautifulsoup4", diff --git a/src/snek/app.py b/src/snek/app.py index 25913b9..ead9ff8 100644 --- a/src/snek/app.py +++ b/src/snek/app.py @@ -85,12 +85,18 @@ class Application(BaseApplication): self.jinja2_env.add_extension(EmojiExtension) self.setup_router() - + self.executor = None self.cache = Cache(self) self.services = get_services(app=self) self.mappers = get_mappers(app=self) + self.on_startup.append(self.prepare_asyncio) self.on_startup.append(self.prepare_database) + async def prepare_asyncio(self,app): + #app.loop = asyncio.get_running_loop() + app.executor = ThreadPoolExecutor(max_workers=200) + app.loop.set_default_executor(self.executor) + async def create_task(self, task): await self.tasks.put(task) @@ -235,11 +241,6 @@ class Application(BaseApplication): return await super().render_template(template, request, context) -executor = ThreadPoolExecutor(max_workers=200) - -loop = asyncio.get_event_loop() -loop.set_default_executor(executor) - app = Application(db_path="sqlite:///snek.db") diff --git a/src/snek/model/user.py b/src/snek/model/user.py index a35d890..89d46ba 100644 --- a/src/snek/model/user.py +++ b/src/snek/model/user.py @@ -29,6 +29,28 @@ class UserModel(BaseModel): last_ping = ModelField(name="last_ping", required=False, kind=str) + async def get_property(self, name): + prop = await self.app.services.user_property.find_one( + user_uid=self["uid"], name=name + ) + if prop: + return prop["value"] + + async def has_property(self, name): + return await self.app.services.user_property.exists( + user_uid=self["uid"], name=name + ) + + async def set_property(self, name, value): + if not await self.has_property(name): + await self.app.services.user_property.insert( + user_uid=self["uid"], name=name, value=value + ) + else: + await self.app.services.user_property.update( + user_uid=self["uid"], name=name, value=value + ) + async def get_channel_members(self): async for channel_member in self.app.services.channel_member.find( user_uid=self["uid"], is_banned=False, deleted_at=None diff --git a/src/snek/service/__init__.py b/src/snek/service/__init__.py index 4059f77..f491e9b 100644 --- a/src/snek/service/__init__.py +++ b/src/snek/service/__init__.py @@ -11,7 +11,7 @@ from snek.service.socket import SocketService from snek.service.user import UserService from snek.service.util import UtilService from snek.system.object import Object - +from snek.service.user_property import UserPropertyService @functools.cache def get_services(app): @@ -27,6 +27,7 @@ def get_services(app): "util": UtilService(app=app), "drive": DriveService(app=app), "drive_item": DriveItemService(app=app), + "user_property": UserPropertyService(app=app), } ) diff --git a/src/snek/static/app.js b/src/snek/static/app.js index 95e5bc4..0517ff9 100644 --- a/src/snek/static/app.js +++ b/src/snek/static/app.js @@ -233,4 +233,4 @@ export class App extends EventHandler { } export const app = new App(); -window.app = app; \ No newline at end of file +window.app = app; diff --git a/src/snek/static/base.css b/src/snek/static/base.css index 7384ad7..f009c71 100644 --- a/src/snek/static/base.css +++ b/src/snek/static/base.css @@ -374,15 +374,12 @@ a { left: 0; text-overflow: ellipsis; width:100%; - *{ - font-size: 12px !important; - } .logo { text-overflow: ellipsis; white-space: nowrap; overflow: hidden; h2 { - font-size: 12px; + font-size: 14px; } } diff --git a/src/snek/templates/search_user.html b/src/snek/templates/search_user.html index cf35d0d..4aad6eb 100644 --- a/src/snek/templates/search_user.html +++ b/src/snek/templates/search_user.html @@ -2,6 +2,8 @@ {% block title %}Search{% endblock %} +{% block header_text %}<h2 style="color:#fff">Search</h2>{% endblock %} + {% block main %} <section class="chat-area"> diff --git a/src/snek/templates/threads.html b/src/snek/templates/threads.html index ae71c6f..d534df6 100644 --- a/src/snek/templates/threads.html +++ b/src/snek/templates/threads.html @@ -1,7 +1,10 @@ {% extends "app.html" %} +{% block header_text %}<h2 style="color:#fff">Threads</h2>{% endblock %} + {% block main %} <section class="chat-area" id="chat"> + <div class="chat-header"> </div> <div class="threads"> {% for thread in threads %} {% autoescape false %}