import logging
from aiohttp import web
from snek.system.view import BaseView
logger = logging.getLogger(__name__)
class ProfilePageView(BaseView):
login_required = False
async def get(self):
user_uid = self.request.match_info.get("user_uid")
slug = self.request.match_info.get("slug")
user = await self.services.user.get(uid=user_uid, deleted_at=None)
if not user:
user = await self.services.user.get(username=user_uid, deleted_at=None)
if not user:
raise web.HTTPNotFound()
page = await self.services.profile_page.get(
user_uid=user["uid"],
slug=slug,
deleted_at=None
)
if not page:
raise web.HTTPNotFound()
if not page["is_published"]:
if not self.session.get("uid") or self.session.get("uid") != user["uid"]:
raise web.HTTPNotFound()
all_pages = await self.services.profile_page.get_user_pages(
user["uid"],
include_unpublished=False
)
return await self.render_template(
"profile_page.html",
{
"page": page,
"profile_user": user,
"all_pages": all_pages
}
)