diff --git a/src/snek/service/user_property.py b/src/snek/service/user_property.py index e95d62e..5f607ad 100644 --- a/src/snek/service/user_property.py +++ b/src/snek/service/user_property.py @@ -7,7 +7,7 @@ class UserPropertyService(BaseService): mapper_name = "user_property" async def set(self, user_uid, name, value): - prop = await self.get(user_uid=user_uid, name=name) + prop = await super().get(user_uid=user_uid, name=name) if not prop: prop = await self.new() prop["user_uid"] = user_uid @@ -18,8 +18,9 @@ class UserPropertyService(BaseService): async def get(self, user_uid, name): try: - return json.loads((await self.get(user_uid=user_uid, name=name)).value) - except: + return json.loads((await super().get(user_uid=user_uid, name=name))["value"]) + except Exception as ex: + print(ex) return None async def search(self, query, **kwargs): diff --git a/src/snek/templates/settings/profile.html b/src/snek/templates/settings/profile.html index 964f9b7..915fcad 100644 --- a/src/snek/templates/settings/profile.html +++ b/src/snek/templates/settings/profile.html @@ -4,16 +4,22 @@ {% block main %} <section> -<form> + <form method="post"> <h2>Nickname</h2> <input type="text" name="nick" placeholder="Your nickname" value="{{ user.nick.value }}" /> -</form> <h2>Description</h2> +<textarea name="profile" id="profile">{{profile}}</textarea> + + +<input type="submit" name="action" value="Save" /> +</form> + + + -<textarea id="profile"></textarea> </section> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/easymde/dist/easymde.min.css"> <script src="https://cdn.jsdelivr.net/npm/easymde/dist/easymde.min.js"></script> diff --git a/src/snek/view/index.py b/src/snek/view/index.py index 6ad6e70..2313ea9 100644 --- a/src/snek/view/index.py +++ b/src/snek/view/index.py @@ -15,4 +15,7 @@ from snek.system.view import BaseView class IndexView(BaseView): async def get(self): + if self.session.get("uid"): + return web.HTTPFound("/web.html") + return await self.render_template("index.html") diff --git a/src/snek/view/settings/profile.py b/src/snek/view/settings/profile.py index 4a98a9a..75ebd59 100644 --- a/src/snek/view/settings/profile.py +++ b/src/snek/view/settings/profile.py @@ -14,21 +14,26 @@ class SettingsProfileView(BaseFormView): if self.request.path.endswith(".json"): form["nick"] = self.request["user"]["nick"] + return web.json_response(await form.to_json()) + + + profile = await self.services.user_property.get(self.session.get("uid"), "profile") + user = await self.services.user.get(uid=self.session.get("uid")) return await self.render_template( - "settings/profile.html", {"form": await form.to_json(), "user": user} + "settings/profile.html", {"form": await form.to_json(), "user": user, "profile": profile or ''} ) - async def submit(self, form): - post = await self.request.json() - form.set_user_data(post["form"]) + async def post(self): + data = await self.request.post() + user = await self.services.user.get(uid=self.session.get("uid")) + user['nick'] = data['nick'] + await self.services.user.save(user) + await self.services.user_property.set(self.request["user"]["uid"],"profile", data['profile']) + return web.HTTPFound("/settings/profile.html") + + - if await form.is_valid: - user = self.request["user"] - user["nick"] = form["nick"] - await self.services.user.save(user) - return {"redirect_url": "/settings/profile.html"} - return {"is_valid": False}