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