Source code for parsons.controlshift.controlshift

from parsons.etl.table import Table
from parsons.utilities import check_env
from parsons.utilities.oauth_api_connector import OAuth2APIConnector


[docs]class Controlshift(object): """ Instantiate the Controlshift class. Requires an API Application integration. For more info on setup, see: https://developers.controlshiftlabs.com/#authenticated-rest-api-quickstart-guide `Args:` hostname: str The URL for the homepage/login page of the organization's Controlshift instance (e.g. https://demo.controlshift.app). Not required if ``CONTROLSHIFT_HOSTNAME`` env variable is set. client_id: str The Client ID for your REST API Application. Not required if ``CONTROLSHIFT_CLIENT_ID`` env variable is set. client_secret: str The Client Secret for your REST API Application. Not required if ``CONTROLSHIFT_CLIENT_SECRET`` env variable is set. `Returns:` Controlshift Class """ def __init__(self, hostname=None, client_id=None, client_secret=None): self.hostname = check_env.check("CONTROLSHIFT_HOSTNAME", hostname) # Hostname must start with 'https://' if self.hostname.startswith("http://"): self.hostname = self.hostname.replace("http://", "https://") if not self.hostname.startswith("https://"): self.hostname = "https://" + self.hostname token_url = f"{self.hostname}/oauth/token" self.client = OAuth2APIConnector( self.hostname, client_id=check_env.check("CONTROLSHIFT_CLIENT_ID", client_id), client_secret=check_env.check("CONTROLSHIFT_CLIENT_SECRET", client_secret), token_url=token_url, auto_refresh_url=token_url, )
[docs] def get_petitions(self) -> Table: """ Get a full list of all petitions, including ones that are unlaunched or otherwise not visible to the public. `Return:` Table Class """ next_page = 1 petitions = [] while next_page: response = self.client.get_request( f"{self.hostname}/api/v1/petitions", {"page": next_page} ) next_page = response["meta"]["next_page"] petitions.extend(response["petitions"]) return Table(petitions) def get_signatures(self): pass def get_members(self): pass def get_partnerships(self): pass def get_events(self): pass def get_attendees(self): pass def get_calendars(self): pass def get_local_groups(self): pass