Esempio n. 1
0
 def post(self) -> Response:
     """Creates a new Chart
     ---
     post:
       description: >-
         Create a new Chart.
       requestBody:
         description: Chart schema
         required: true
         content:
           application/json:
             schema:
               $ref: '#/components/schemas/{{self.__class__.__name__}}.post'
       responses:
         201:
           description: Chart added
           content:
             application/json:
               schema:
                 type: object
                 properties:
                   id:
                     type: number
                   result:
                     $ref: '#/components/schemas/{{self.__class__.__name__}}.post'
         400:
           $ref: '#/components/responses/400'
         401:
           $ref: '#/components/responses/401'
         422:
           $ref: '#/components/responses/422'
         500:
           $ref: '#/components/responses/500'
     """
     if not request.is_json:
         return self.response_400(message="Request is not JSON")
     try:
         item = self.add_model_schema.load(request.json)
     # This validates custom Schema with custom validations
     except ValidationError as error:
         return self.response_400(message=error.messages)
     try:
         new_model = CreateChartCommand(g.user, item).run()
         return self.response(201, id=new_model.id, result=item)
     except ChartInvalidError as ex:
         return self.response_422(message=ex.normalized_messages())
     except ChartCreateFailedError as ex:
         logger.error("Error creating model %s: %s",
                      self.__class__.__name__, str(ex))
         return self.response_422(message=str(ex))
Esempio n. 2
0
 def test_create_v1_response(self, mock_sm_g, mock_c_g, mock_u_g):
     """Test that the create chart command creates a chart"""
     user = security_manager.find_user(username="******")
     mock_u_g.user = mock_c_g.user = mock_sm_g.user = user
     chart_data = {
         "slice_name": "new chart",
         "description": "new description",
         "owners": [user.id],
         "viz_type": "new_viz_type",
         "params": json.dumps({"viz_type": "new_viz_type"}),
         "cache_timeout": 1000,
         "datasource_id": 1,
         "datasource_type": "table",
     }
     command = CreateChartCommand(chart_data)
     chart = command.run()
     chart = db.session.query(Slice).get(chart.id)
     assert chart.viz_type == "new_viz_type"
     json_params = json.loads(chart.params)
     assert json_params == {"viz_type": "new_viz_type"}
     assert chart.slice_name == "new chart"
     assert chart.owners == [user]
     db.session.delete(chart)
     db.session.commit()