mirror of
https://github.com/arcan1s/ahriman.git
synced 2026-04-01 06:03:39 +00:00
feat: load http views dynamically (#113)
This commit is contained in:
@@ -34,6 +34,7 @@ class DocsView(BaseView):
|
||||
"""
|
||||
|
||||
GET_PERMISSION = UserAccess.Unauthorized
|
||||
ROUTES = ["/api-docs"]
|
||||
|
||||
@aiohttp_jinja2.template("api.jinja2")
|
||||
async def get(self) -> dict[str, Any]:
|
||||
|
||||
@@ -34,6 +34,7 @@ class SwaggerView(BaseView):
|
||||
"""
|
||||
|
||||
GET_PERMISSION = UserAccess.Unauthorized
|
||||
ROUTES = ["/api-docs/swagger.json"]
|
||||
|
||||
async def get(self) -> Response:
|
||||
"""
|
||||
|
||||
@@ -38,9 +38,11 @@ class BaseView(View, CorsViewMixin):
|
||||
|
||||
Attributes:
|
||||
OPTIONS_PERMISSION(UserAccess): (class attribute) options permissions of self
|
||||
ROUTES(list[str]): (class attribute) list of supported routes
|
||||
"""
|
||||
|
||||
OPTIONS_PERMISSION = UserAccess.Unauthorized
|
||||
ROUTES: list[str] = []
|
||||
|
||||
@property
|
||||
def configuration(self) -> Configuration:
|
||||
|
||||
@@ -44,6 +44,7 @@ class IndexView(BaseView):
|
||||
"""
|
||||
|
||||
GET_PERMISSION = UserAccess.Unauthorized
|
||||
ROUTES = ["/", "/index.html"]
|
||||
|
||||
@aiohttp_jinja2.template("build-status.jinja2")
|
||||
async def get(self) -> dict[str, Any]:
|
||||
|
||||
@@ -17,20 +17,3 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
from ahriman.web.views.v1.service.add import AddView
|
||||
from ahriman.web.views.v1.service.pgp import PGPView
|
||||
from ahriman.web.views.v1.service.process import ProcessView
|
||||
from ahriman.web.views.v1.service.rebuild import RebuildView
|
||||
from ahriman.web.views.v1.service.remove import RemoveView
|
||||
from ahriman.web.views.v1.service.request import RequestView
|
||||
from ahriman.web.views.v1.service.search import SearchView
|
||||
from ahriman.web.views.v1.service.update import UpdateView
|
||||
from ahriman.web.views.v1.service.upload import UploadView
|
||||
|
||||
from ahriman.web.views.v1.status.logs import LogsView
|
||||
from ahriman.web.views.v1.status.package import PackageView
|
||||
from ahriman.web.views.v1.status.packages import PackagesView
|
||||
from ahriman.web.views.v1.status.status import StatusView
|
||||
|
||||
from ahriman.web.views.v1.user.login import LoginView
|
||||
from ahriman.web.views.v1.user.logout import LogoutView
|
||||
|
||||
@@ -35,6 +35,7 @@ class AddView(BaseView):
|
||||
"""
|
||||
|
||||
POST_PERMISSION = UserAccess.Full
|
||||
ROUTES = ["/api/v1/service/add"]
|
||||
|
||||
@aiohttp_apispec.docs(
|
||||
tags=["Actions"],
|
||||
|
||||
@@ -35,8 +35,9 @@ class PGPView(BaseView):
|
||||
POST_PERMISSION(UserAccess): (class attribute) post permissions of self
|
||||
"""
|
||||
|
||||
POST_PERMISSION = UserAccess.Full
|
||||
GET_PERMISSION = UserAccess.Reporter
|
||||
POST_PERMISSION = UserAccess.Full
|
||||
ROUTES = ["/api/v1/service/pgp"]
|
||||
|
||||
@aiohttp_apispec.docs(
|
||||
tags=["Actions"],
|
||||
|
||||
@@ -35,6 +35,7 @@ class ProcessView(BaseView):
|
||||
"""
|
||||
|
||||
GET_PERMISSION = UserAccess.Reporter
|
||||
ROUTES = ["/api/v1/service/process/{process_id}"]
|
||||
|
||||
@aiohttp_apispec.docs(
|
||||
tags=["Actions"],
|
||||
|
||||
@@ -35,6 +35,7 @@ class RebuildView(BaseView):
|
||||
"""
|
||||
|
||||
POST_PERMISSION = UserAccess.Full
|
||||
ROUTES = ["/api/v1/service/rebuild"]
|
||||
|
||||
@aiohttp_apispec.docs(
|
||||
tags=["Actions"],
|
||||
|
||||
@@ -35,6 +35,7 @@ class RemoveView(BaseView):
|
||||
"""
|
||||
|
||||
POST_PERMISSION = UserAccess.Full
|
||||
ROUTES = ["/api/v1/service/remove"]
|
||||
|
||||
@aiohttp_apispec.docs(
|
||||
tags=["Actions"],
|
||||
|
||||
@@ -35,6 +35,7 @@ class RequestView(BaseView):
|
||||
"""
|
||||
|
||||
POST_PERMISSION = UserAccess.Reporter
|
||||
ROUTES = ["/api/v1/service/request"]
|
||||
|
||||
@aiohttp_apispec.docs(
|
||||
tags=["Actions"],
|
||||
|
||||
@@ -38,6 +38,7 @@ class SearchView(BaseView):
|
||||
"""
|
||||
|
||||
GET_PERMISSION = UserAccess.Reporter
|
||||
ROUTES = ["/api/v1/service/search"]
|
||||
|
||||
@aiohttp_apispec.docs(
|
||||
tags=["Actions"],
|
||||
|
||||
@@ -35,6 +35,7 @@ class UpdateView(BaseView):
|
||||
"""
|
||||
|
||||
POST_PERMISSION = UserAccess.Full
|
||||
ROUTES = ["/api/v1/service/update"]
|
||||
|
||||
@aiohttp_apispec.docs(
|
||||
tags=["Actions"],
|
||||
|
||||
@@ -39,6 +39,7 @@ class UploadView(BaseView):
|
||||
"""
|
||||
|
||||
POST_PERMISSION = UserAccess.Full
|
||||
ROUTES = ["/api/v1/service/upload"]
|
||||
|
||||
@staticmethod
|
||||
async def save_file(part: BodyPartReader, target: Path, *, max_body_size: int | None = None) -> tuple[str, Path]:
|
||||
|
||||
@@ -41,6 +41,7 @@ class LogsView(BaseView):
|
||||
|
||||
DELETE_PERMISSION = POST_PERMISSION = UserAccess.Full
|
||||
GET_PERMISSION = UserAccess.Reporter
|
||||
ROUTES = ["/api/v1/packages/{package}/logs"]
|
||||
|
||||
@aiohttp_apispec.docs(
|
||||
tags=["Packages"],
|
||||
|
||||
@@ -41,6 +41,7 @@ class PackageView(BaseView):
|
||||
|
||||
DELETE_PERMISSION = POST_PERMISSION = UserAccess.Full
|
||||
GET_PERMISSION = UserAccess.Read
|
||||
ROUTES = ["/api/v1/packages/{package}"]
|
||||
|
||||
@aiohttp_apispec.docs(
|
||||
tags=["Packages"],
|
||||
|
||||
@@ -41,6 +41,7 @@ class PackagesView(BaseView):
|
||||
|
||||
GET_PERMISSION = UserAccess.Read
|
||||
POST_PERMISSION = UserAccess.Full
|
||||
ROUTES = ["/api/v1/packages"]
|
||||
|
||||
@aiohttp_apispec.docs(
|
||||
tags=["Packages"],
|
||||
|
||||
@@ -41,6 +41,7 @@ class StatusView(BaseView):
|
||||
|
||||
GET_PERMISSION = UserAccess.Read
|
||||
POST_PERMISSION = UserAccess.Full
|
||||
ROUTES = ["/api/v1/status"]
|
||||
|
||||
@aiohttp_apispec.docs(
|
||||
tags=["Status"],
|
||||
|
||||
@@ -37,6 +37,7 @@ class LoginView(BaseView):
|
||||
"""
|
||||
|
||||
GET_PERMISSION = POST_PERMISSION = UserAccess.Unauthorized
|
||||
ROUTES = ["/api/v1/login"]
|
||||
|
||||
@aiohttp_apispec.docs(
|
||||
tags=["Login"],
|
||||
|
||||
@@ -36,6 +36,7 @@ class LogoutView(BaseView):
|
||||
"""
|
||||
|
||||
POST_PERMISSION = UserAccess.Unauthorized
|
||||
ROUTES = ["/api/v1/logout"]
|
||||
|
||||
@aiohttp_apispec.docs(
|
||||
tags=["Login"],
|
||||
|
||||
@@ -17,4 +17,3 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
from ahriman.web.views.v2.status.logs import LogsView
|
||||
|
||||
@@ -37,6 +37,7 @@ class LogsView(BaseView):
|
||||
"""
|
||||
|
||||
GET_PERMISSION = UserAccess.Reporter
|
||||
ROUTES = ["/api/v2/packages/{package}/logs"]
|
||||
|
||||
@aiohttp_apispec.docs(
|
||||
tags=["Packages"],
|
||||
|
||||
Reference in New Issue
Block a user