Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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)