|
from aiohttp import web
|
|
|
|
from snek.form.settings.profile import SettingsProfileForm
|
|
from snek.system.view import BaseFormView
|
|
|
|
|
|
class SettingsProfileView(BaseFormView):
|
|
form = SettingsProfileForm
|
|
|
|
login_required = True
|
|
|
|
async def get(self):
|
|
form = self.form(app=self.app)
|
|
|
|
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, "profile": profile or ''}
|
|
)
|
|
|
|
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(user["uid"],"profile", data['profile'])
|
|
return web.HTTPFound("/settings/profile.html")
|
|
|
|
|
|
|