Exemplo n.º 1
0
 def put(  # pylint: disable=too-many-return-statements, arguments-differ
         self, pk: int) -> Response:
     """Changes a Dataset
     ---
     put:
       description: >-
         Changes a Dataset
       parameters:
       - in: path
         schema:
           type: integer
         name: pk
       requestBody:
         description: Dataset schema
         required: true
         content:
           application/json:
             schema:
               $ref: '#/components/schemas/{{self.__class__.__name__}}.put'
       responses:
         200:
           description: Dataset changed
           content:
             application/json:
               schema:
                 type: object
                 properties:
                   id:
                     type: number
                   result:
                     $ref: '#/components/schemas/{{self.__class__.__name__}}.put'
         400:
           $ref: '#/components/responses/400'
         401:
           $ref: '#/components/responses/401'
         403:
           $ref: '#/components/responses/403'
         404:
           $ref: '#/components/responses/404'
         422:
           $ref: '#/components/responses/422'
         500:
           $ref: '#/components/responses/500'
     """
     if not request.is_json:
         return self.response_400(message="Request is not JSON")
     item = self.edit_model_schema.load(request.json)
     # This validates custom Schema with custom validations
     if item.errors:
         return self.response_400(message=item.errors)
     try:
         changed_model = UpdateDatasetCommand(g.user, pk, item.data).run()
         return self.response(200, id=changed_model.id, result=item.data)
     except DatasetNotFoundError:
         return self.response_404()
     except DatasetForbiddenError:
         return self.response_403()
     except DatasetInvalidError as e:
         return self.response_422(message=e.normalized_messages())
     except DatasetUpdateFailedError as e:
         logger.error(
             f"Error updating model {self.__class__.__name__}: {e}")
         return self.response_422(message=str(e))
Exemplo n.º 2
0
 def put(self, pk: int) -> Response:
     """Changes a Dataset
     ---
     put:
       description: >-
         Changes a Dataset
       parameters:
       - in: path
         schema:
           type: integer
         name: pk
       - in: query
         schema:
           type: bool
         name: override_columns
       requestBody:
         description: Dataset schema
         required: true
         content:
           application/json:
             schema:
               $ref: '#/components/schemas/{{self.__class__.__name__}}.put'
       responses:
         200:
           description: Dataset changed
           content:
             application/json:
               schema:
                 type: object
                 properties:
                   id:
                     type: number
                   result:
                     $ref: '#/components/schemas/{{self.__class__.__name__}}.put'
         400:
           $ref: '#/components/responses/400'
         401:
           $ref: '#/components/responses/401'
         403:
           $ref: '#/components/responses/403'
         404:
           $ref: '#/components/responses/404'
         422:
           $ref: '#/components/responses/422'
         500:
           $ref: '#/components/responses/500'
     """
     override_columns = (bool(strtobool(request.args["override_columns"]))
                         if "override_columns" in request.args else False)
     if not request.is_json:
         return self.response_400(message="Request is not JSON")
     try:
         item = self.edit_model_schema.load(request.json)
     # This validates custom Schema with custom validations
     except ValidationError as error:
         return self.response_400(message=error.messages)
     try:
         changed_model = UpdateDatasetCommand(g.user, pk, item,
                                              override_columns).run()
         response = self.response(200, id=changed_model.id, result=item)
     except DatasetNotFoundError:
         response = self.response_404()
     except DatasetForbiddenError:
         response = self.response_403()
     except DatasetInvalidError as ex:
         response = self.response_422(message=ex.normalized_messages())
     except DatasetUpdateFailedError as ex:
         logger.error("Error updating model %s: %s",
                      self.__class__.__name__, str(ex))
         response = self.response_422(message=str(ex))
     return response