Source code for luna_configurator.app.handlers.groups_handler
# -*- coding: utf-8 -*-
"""Limitation group Handler
Module realize limitation group handler.
"""
from sanic.response import HTTPResponse
from app.handlers.base_handler import BaseRequestHandler
from app.handlers.schemas import GROUP_SCHEMA
from app.version import VERSION
from crutches_on_wheels.cow.web.query_getters import listStringsGetter
[docs]class GroupsHandler(BaseRequestHandler):
"""
Handler for limitation groups.
"""
[docs] async def post(self) -> HTTPResponse:
"""
Create group, see `spec newGroup`_
.. _`spec newGroup`:
_static/api.html#operation/newGroup
"""
data = self.request.json
self.validateJson(data, GROUP_SCHEMA, useJsonSchema=False)
await self.dbContext.addGroup(data["group_name"], data.get("description", ""))
self.respHeaders = {"Location": "/{}/groups/{}".format(VERSION["Version"]["api"], data["group_name"])}
return self.success(201, outputJson={"group_name": data["group_name"]})
[docs] async def get(self) -> HTTPResponse:
"""
Get groups by names or limitation names, see `spec getGroups`_
.. _`spec getGroups`:
_static/api.html#operation/getGroups
"""
limitationList = self.getQueryParam("limitation_names", listStringsGetter, False, default=None)
groupList = self.getQueryParam("group_names", listStringsGetter, False, default=None)
groupRes = await self.dbContext.getGroups(limitationList=limitationList, groupList=groupList)
return self.success(200, outputJson={"groups": groupRes})