Source code for caspia.homeserver.views.wall

from sanic import response

from caspia.homeserver.models.schemas import WallSchema

from .base import View


[docs]class WallView(View):
[docs] async def get(self, request, identifier): fields = request.args.get('fields', 'identifier,name,layout,tiles').split(',') wall = await self.wall_service.get_wall(identifier) return response.json(WallSchema(only=fields).dump(wall).data)
[docs] async def patch(self, request, identifier): schema = WallSchema(strict=True, partial=True, exclude=('identifier', )) data = schema.load(request.json).data await self.wall_service.update_wall(identifier, data) wall = await self.wall_service.get_wall(identifier) return response.json(WallSchema().dump(wall).data)
[docs] async def delete(self, request, identifier): await self.wall_service.remove_wall(identifier) return response.HTTPResponse(status=204)
[docs]class WallsView(View):
[docs] async def get(self, request): fields = request.args.get('fields', 'identifier,name').split(',') walls = [w async for w in self.wall_service.get_walls()] return response.json(WallSchema(only=fields, many=True).dump(walls).data)
[docs] async def post(self, request): data = WallSchema(exclude=('identifier', ), strict=True).load(request.json).data wall = await self.wall_service.create_wall(data) return response.json(WallSchema().dump(wall).data)