コード例 #1
0
 def test_update_v1_response(self, mock_sm_g, mock_g):
     """"Test that a chart command updates properties"""
     pk = db.session.query(Slice).all()[0].id
     actor = security_manager.find_user(username="******")
     mock_g.user = mock_sm_g.user = actor
     model_id = pk
     json_obj = {
         "description": "test for update",
         "cache_timeout": None,
         "owners": [actor.id],
     }
     command = UpdateChartCommand(actor, model_id, json_obj)
     last_saved_before = db.session.query(Slice).get(pk).last_saved_at
     command.run()
     chart = db.session.query(Slice).get(pk)
     assert chart.last_saved_at != last_saved_before
     assert chart.last_saved_by == actor
コード例 #2
0
    def test_query_context_update_command(self, mock_sm_g, mock_g):
        """"
        Test that a user can generate the chart query context
        payloadwithout affecting owners
        """
        chart = db.session.query(Slice).all()[0]
        pk = chart.id
        admin = security_manager.find_user(username="******")
        chart.owners = [admin]
        db.session.commit()

        actor = security_manager.find_user(username="******")
        mock_g.user = mock_sm_g.user = actor
        query_context = json.dumps({"foo": "bar"})
        json_obj = {
            "query_context_generation": True,
            "query_context": query_context,
        }
        command = UpdateChartCommand(actor, pk, json_obj)
        command.run()
        chart = db.session.query(Slice).get(pk)
        assert chart.query_context == query_context
        assert len(chart.owners) == 1
        assert chart.owners[0] == admin
コード例 #3
0
ファイル: api.py プロジェクト: milindgv94/incubator-superset
 def put(  # pylint: disable=too-many-return-statements, arguments-differ
         self, pk: int) -> Response:
     """Changes a Chart
     ---
     put:
       description: >-
         Changes a Chart.
       parameters:
       - in: path
         schema:
           type: integer
         name: pk
       requestBody:
         description: Chart schema
         required: true
         content:
           application/json:
             schema:
               $ref: '#/components/schemas/{{self.__class__.__name__}}.put'
       responses:
         200:
           description: Chart 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")
     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 = UpdateChartCommand(g.user, pk, item).run()
         return self.response(200, id=changed_model.id, result=item)
     except ChartNotFoundError:
         return self.response_404()
     except ChartForbiddenError:
         return self.response_403()
     except ChartInvalidError as ex:
         return self.response_422(message=ex.normalized_messages())
     except ChartUpdateFailedError as ex:
         logger.error("Error updating model %s: %s",
                      self.__class__.__name__, str(ex))
         return self.response_422(message=str(ex))