from aiohttp import web
import aiohttp_jinja2
from aiohttp_session import get_session
from pydantic import ValidationError
from ..services.user_service import UserService
from ..helpers.auth import login_required
from ..models import QuotaUpdateModel
from .auth import CustomPydanticView
class SiteView(web.View):
async def get(self):
if self.request.path == "/dashboard":
return await self.dashboard()
elif self.request.path == "/solutions":
return await self.solutions()
elif self.request.path == "/pricing":
return await self.pricing()
elif self.request.path == "/security":
return await self.security()
elif self.request.path == "/support":
return await self.support()
elif self.request.path == "/use_cases":
return await self.use_cases()
return aiohttp_jinja2.render_template(
"pages/index.html", self.request, {"request": self.request, "errors": {}, "user": self.request.get("user")}
)
@login_required
async def dashboard(self):
return aiohttp_jinja2.render_template(
"pages/dashboard.html",
self.request,
{"user": self.request["user"], "request": self.request, "errors": {}},
)
async def solutions(self):
return aiohttp_jinja2.render_template(
"pages/solutions.html", self.request, {"request": self.request, "errors": {}, "user": self.request.get("user")}
)
async def pricing(self):
return aiohttp_jinja2.render_template(
"pages/pricing.html", self.request, {"request": self.request, "errors": {}, "user": self.request.get("user")}
)
async def security(self):
return aiohttp_jinja2.render_template(
"pages/security.html", self.request, {"request": self.request, "errors": {}, "user": self.request.get("user")}
)
async def support(self):
return aiohttp_jinja2.render_template(
"pages/support.html", self.request, {"request": self.request, "errors": {}, "user": self.request.get("user")}
)
async def use_cases(self):
return aiohttp_jinja2.render_template(
"pages/use_cases.html", self.request, {"request": self.request, "errors": {}, "user": self.request.get("user")}
)
class OrderView(CustomPydanticView):
template_name = "pages/order.html"
@login_required
async def get(self):
config_service = self.request.app["config_service"]
price_per_gb = config_service.get_price_per_gb()
return aiohttp_jinja2.render_template(
self.template_name, self.request, {
"request": self.request,
"errors": {},
"user": self.request.get("user"),
"price_per_gb": price_per_gb
}
)
@login_required
async def post(self):
# The quota update for the main user is now handled via AJAX in order.js
# This POST method will simply re-render the page.
config_service = self.request.app["config_service"]
price_per_gb = config_service.get_price_per_gb()
return aiohttp_jinja2.render_template(
self.template_name, self.request, {
"request": self.request,
"errors": {},
"user": self.request.get("user"),
"price_per_gb": price_per_gb
}
)