Source code for parsons.ngpvan.activist_codes

"""NGPVAN Activist Code Endpoints"""

from parsons.etl.table import Table
from parsons.ngpvan.utilities import action_parse
import logging

logger = logging.getLogger(__name__)


[docs]class ActivistCodes(object): def __init__(self, van_connection): self.connection = van_connection
[docs] def get_activist_codes(self): """ Get activist codes. `Returns:` Parsons Table See :ref:`parsons-table` for output options. """ tbl = Table(self.connection.get_request('activistCodes')) logger.info(f'Found {tbl.num_rows} activist codes.') return tbl
[docs] def get_activist_code(self, activist_code_id): """ Get an activist code. `Args:` activist_code_id : int The activist code id. `Returns:` dict The activist code """ r = self.connection.get_request(f'activistCodes/{activist_code_id}') logger.info(f'Found activist code {activist_code_id}.') return r
def toggle_activist_code(self, id, activist_code_id, action, id_type='vanid'): # Internal method to apply/remove activist codes. Was previously a public method, # but for the sake of simplicity, breaking out into two public methods. response = {"activistCodeId": activist_code_id, "action": action_parse(action), "type": "activistCode"} r = self.apply_response(id, response, id_type) logger.info(f'{id_type.upper()} {id} {action.capitalize()} ' + f'activist code {activist_code_id}') return r
[docs] def apply_activist_code(self, id, activist_code_id, id_type='vanid'): """ Apply an activist code to or from a person. `Args:` id: str A valid person id activist_code_id: int A valid activist code id action: str Either 'apply' or 'remove' id_type: str A known person identifier type available on this VAN instance such as ``dwid`` Returns: ``None`` """ return self.toggle_activist_code(id, activist_code_id, 'Apply', id_type=id_type)
[docs] def remove_activist_code(self, id, activist_code_id, id_type='vanid'): """ Remove an activist code to or from a person. `Args:` id: str A valid person id activist_code_id: int A valid activist code id action: str Either 'apply' or 'remove' id_type: str A known person identifier type available on this VAN instance such as ``dwid`` Returns: ``None`` """ return self.toggle_activist_code(id, activist_code_id, 'Remove', id_type=id_type)