From f291c0f2e4081fde4ed55d6cc25fdcbb1952af70 Mon Sep 17 00:00:00 2001 From: retoor Date: Sat, 8 Feb 2025 17:07:04 +0100 Subject: [PATCH] Fix. --- src/snek/form/register.py | 2 +- src/snek/service/user.py | 9 +++++ src/snek/templates/web.html | 67 ++----------------------------------- src/snek/view/rpc.py | 5 +++ 4 files changed, 18 insertions(+), 65 deletions(-) diff --git a/src/snek/form/register.py b/src/snek/form/register.py index 1384b8f..9331fae 100644 --- a/src/snek/form/register.py +++ b/src/snek/form/register.py @@ -20,7 +20,7 @@ class RegisterForm(Form): required=True, min_length=2, max_length=20, - regex=r"^[a-zA-Z0-9_]+$", + regex=r"^[a-zA-Z0-9_-]+$", place_holder="Username", type="text", ) diff --git a/src/snek/service/user.py b/src/snek/service/user.py index eb14ee7..1cad3ee 100644 --- a/src/snek/service/user.py +++ b/src/snek/service/user.py @@ -4,6 +4,15 @@ from snek.system.service import BaseService class UserService(BaseService): mapper_name = "user" + + async def search(self, query, **kwargs): + query = query.strip().lower() + if not query: + raise [] + results = [] + async for result in self.find(username=dict(ilike='%' + query + '%'), **kwargs): + results.append(result) + return results async def validate_login(self, username, password): model = await self.get(username=username) diff --git a/src/snek/templates/web.html b/src/snek/templates/web.html index 4202b88..0225965 100644 --- a/src/snek/templates/web.html +++ b/src/snek/templates/web.html @@ -1,65 +1,4 @@ - - - - - - Snek - - - - - - - - - - - - - - - - - -
- - -
-
- +{% extends "app.html" %} +{% block main %} -
- - - +{% endblock %} diff --git a/src/snek/view/rpc.py b/src/snek/view/rpc.py index a144df2..d4b2e59 100644 --- a/src/snek/view/rpc.py +++ b/src/snek/view/rpc.py @@ -46,6 +46,11 @@ class RPCView(BaseView): await self.services.socket.subscribe(self.ws,subscription["channel_uid"]) return record + + async def search_user(self, query): + self._require_login() + return [user['username'] for user in await self.services.user.search(query)] + async def get_user(self, user_uid): self._require_login() if not user_uid: