|
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
|
|
}
|
|
)
|