def get(self, key): """ --- summary: Get attribute key details description: | Returns attribute key definition details. Requires `managing_attributes` capability. security: - bearerAuth: [] tags: - attribute parameters: - in: path name: key schema: type: string description: Attribute key responses: 200: description: Attribute key definition content: application/json: schema: MetakeyDefinitionManageItemResponseSchema 403: description: When user doesn't have `managing_attributes` capability. 404: description: When specified attribute key doesn't exist """ metakey = (db.session.query(MetakeyDefinition).filter( MetakeyDefinition.key == key).first()) if metakey is None: raise NotFound("No such metakey") schema = MetakeyDefinitionManageItemResponseSchema() return schema.dump(metakey)
def put(self, key): """ --- summary: Create/update attribute key description: | Creates or updates attribute key definition. Requires `managing_attributes` capability. security: - bearerAuth: [] tags: - attribute parameters: - in: path name: key schema: type: string description: Attribute key requestBody: description: Attribute key definition content: application/json: schema: MetakeyDefinitionItemRequestBodySchema responses: 200: description: When metakey definition is successfully added content: application/json: schema: MetakeyDefinitionManageItemResponseSchema 400: description: | When one of attribute definition fields is missing or incorrect. 403: description: When user doesn't have `managing_attributes` capability. """ schema = MetakeyDefinitionItemRequestArgsSchema() args_obj = load_schema({"key": key}, schema) schema = MetakeyDefinitionItemRequestBodySchema() obj = loads_schema(request.get_data(as_text=True), schema) metakey_definition = MetakeyDefinition( key=args_obj["key"], url_template=obj["url_template"], label=obj["label"], description=obj["description"], hidden=obj["hidden"], ) metakey_definition = db.session.merge(metakey_definition) db.session.commit() schema = MetakeyDefinitionManageItemResponseSchema() return schema.dump(metakey_definition)
def put(self, key, group_name): """ --- summary: Add/modify attribute key permission description: | Adds or modifies attribute key group permission for specified key and group name. Requires `managing_attributes` capability. security: - bearerAuth: [] tags: - attribute parameters: - in: path name: key schema: type: string description: Attribute key - in: path name: group_name schema: type: string description: Group name to add/modify requestBody: description: Attribute key permission definition content: application/json: schema: MetakeyPermissionSetRequestBodySchema responses: 200: description: When group permission has been successfully changed content: application/json: schema: MetakeyDefinitionManageItemResponseSchema 400: description: | When one of attribute permission fields is missing or incorrect. 403: description: When user doesn't have `managing_attributes` capability. 404: description: When attribute key or group doesn't exist """ schema = MetakeyPermissionSetRequestArgsSchema() args_obj = load_schema({"key": key, "group_name": group_name}, schema) schema = MetakeyPermissionSetRequestBodySchema() obj = loads_schema(request.get_data(as_text=True), schema) metakey_definition = (db.session.query(MetakeyDefinition).filter( MetakeyDefinition.key == args_obj["key"]).first()) if metakey_definition is None: raise NotFound("No such metakey") group = (db.session.query(Group).filter( Group.name == args_obj["group_name"]).first()) if group is None: raise NotFound("No such group") permission = MetakeyPermission( key=args_obj["key"], group_id=group.id, can_read=obj["can_read"], can_set=obj["can_set"], ) db.session.merge(permission) db.session.commit() db.session.refresh(metakey_definition) schema = MetakeyDefinitionManageItemResponseSchema() return schema.dump(metakey_definition)