Exemplo n.º 1
0
    def save_statement(self, statement):
        """Save statement to LRS and update statement id if necessary

        :param statement: Statement object to be saved
        :type statement: :class:`tincan.statement.Statement`
        :return: LRS Response object with the saved statement as content
        :rtype: :class:`tincan.lrs_response.LRSResponse`
        """
        if not isinstance(statement, Statement):
            statement = Statement(statement)

        request = HTTPRequest(method="POST", resource="statements")
        if statement.id is not None:
            request.method = "PUT"
            request.query_params["statementId"] = statement.id

        request.headers["Content-Type"] = "application/json"
        request.content = statement.to_json(self.version)

        lrs_response = self._send_request(request)

        if lrs_response.success:
            if statement.id is None:
                statement.id = json.loads(lrs_response.data)[0]
            lrs_response.content = statement

        return lrs_response
 def test_with_non_dict_event(self):
     RouterConfigurationFactory.create(
         backend_name=RouterConfiguration.XAPI_BACKEND,
         enabled=True,
         route_url='http://test3.com',
         configurations=ROUTER_CONFIG_FIXTURE[3])
     router = EventsRouter(processors=[],
                           backend_name=RouterConfiguration.XAPI_BACKEND)
     transformed_event = Statement()
     with self.assertRaises(ValueError):
         router.send(transformed_event)