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