Source code for parsons.sisense.sisense

import json
import logging

from parsons.utilities import check_env
from parsons.utilities.api_connector import APIConnector

logger = logging.getLogger(__name__)

URI = 'https://app.periscopedata.com/api/v1/'


[docs]class Sisense(object): """ Instantiate the Sisense class. `Args:` site_name: str The name of the site. Not required if the ``SISENSE_SITE_NAME`` environmental variable is set. api_key: str The Sisense API Key. Not required if the ``SISENSE_API_KEY`` environmental variable is set. `Returns:` Sisense class """ def __init__(self, site_name=None, api_key=None): self.site_name = check_env.check('SISENSE_SITE_NAME', site_name) self.api_key = check_env.check('SISENSE_API_KEY', api_key) self.uri = URI self.api = self._api() def _api(self): headers = {'HTTP-X-PARTNER-AUTH': self.site_name + ":" + self.api_key} return APIConnector(uri=self.uri, headers=headers)
[docs] def publish_shared_dashboard(self, dashboard_id, chart_id=None, **kwargs): """ This method publishes a dashboard or chart using the provided arguments. For available options, see the `API documentation <https://dtdocs.sisense.com/article/embed-api-options>`_. # noqa `Args:` dashboard_id: str or int The ID of the dashboard (required). chart_id: str or int The ID of the chart. Only required for publishing individual charts. **kwargs: Optional arguments. `Returns:` Response (dict containing the URL) or an error """ payload = {'dashboard': dashboard_id, 'chart': chart_id, **kwargs} return self.api.post_request('shared_dashboard/create', data=json.dumps(payload))
[docs] def list_shared_dashboards(self, dashboard_id): """ List all shares of a given dashboard. `Args:` dashboard_id: str or int The ID the dashboard (required). `Returns:` Response or an error """ payload = {'dashboard': dashboard_id} return self.api.post_request('shared_dashboard/list', data=json.dumps(payload))
[docs] def delete_shared_dashboard(self, token): """ To delete a shared dashboard you must provide the token for the shared dashboard. The token is the last part of the shared dashboard URL. i.e. if the shared URL is: https://app.periscopedata.com/shared/9dda9dda-9dda-9dda-9dda-9dda9dda9dda The token is '9dda9dda-9dda-9dda-9dda-9dda9dda9dda'. `Args:` token: str or int The token of the shared dashboard (required). `Returns:` Response or an error """ payload = {'token': token} return self.api.post_request('shared_dashboard/delete', data=json.dumps(payload))