From 78f9679f308016320b64cd49bb3552fb63d26d27 Mon Sep 17 00:00:00 2001 From: retoor Date: Sun, 9 Feb 2025 07:54:46 +0100 Subject: [PATCH] Bugfixes. --- src/snek/app.py | 2 ++ src/snek/view/login.py | 4 ++-- src/snek/view/web.py | 43 ++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/src/snek/app.py b/src/snek/app.py index aaf1029..3020584 100644 --- a/src/snek/app.py +++ b/src/snek/app.py @@ -91,6 +91,8 @@ class Application(BaseApplication): self.router.add_get("/http-get", self.handle_http_get) self.router.add_get("/http-photo", self.handle_http_photo) self.router.add_get("/rpc.ws", RPCView) + self.router.add_view("/channel/{channel}.html", WebView) + self.add_subapp( "/docs", DocsApplication(path=pathlib.Path(__file__).parent.joinpath("docs")), diff --git a/src/snek/view/login.py b/src/snek/view/login.py index 0c2359d..580655f 100644 --- a/src/snek/view/login.py +++ b/src/snek/view/login.py @@ -21,7 +21,7 @@ class LoginView(BaseFormView): return await self.render_template("login.html") async def submit(self, form): - if await form.is_valid(): + if await form.is_valid: user = await self.services.user.get(username=form['username'], deleted_at=None) await self.services.user.save(user) self.session.update({ @@ -31,4 +31,4 @@ class LoginView(BaseFormView): "color": user["color"] }) return {"redirect_url": "/web.html"} - return {"is_valid": False} \ No newline at end of file + return {"is_valid": False} diff --git a/src/snek/view/web.py b/src/snek/view/web.py index e172b8d..4923183 100644 --- a/src/snek/view/web.py +++ b/src/snek/view/web.py @@ -24,11 +24,50 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. - +from aiohttp import web from snek.system.view import BaseView class WebView(BaseView): login_required = True async def get(self): - return await self.render_template("web.html") + + if self.login_required and not self.session.get("logged_in"): + return web.HTTPFound("/") + + if not self.request.match_info.get("channel"): + channel = await self.app.services.channel.get( + tag="public",deleted_at=None + ) + if not channel: + return web.HTTPNotFound() + return web.HTTPFound("/channel/{}.html".format(channel["uid"])) + else: + print(self.request.match_info.get("channel"), flush=True) + channel = await self.app.services.channel.get( + uid=str(self.request.match_info.get("channel")),deleted_at=None + ) + if not channel: + + name = "#" + str(self.request.match_info.get("channel")).lstrip("#") + + print("TADAAA:",name, flush=True) + + channel = await self.app.services.channel.get( + label=name,deleted_at=None + ) + if not channel: + print("NOT found!\n",flush=True) + return web.HTTPNotFound() + channel_member = await self.app.services.channel_member.get( + channel_uid=channel["uid"], user_uid=self.session.get("uid"),deleted_at=None,is_banned=False + ) + if not channel_member: + return web.HTTPNotFound() + + print("HIER\n",flush=True) + user = await self.app.services.user.get(uid=self.session.get("uid")) + if not user: + return web.HTTPNotFound() + + return await self.render_template("web.html", {"channel": channel_member,"user": user})