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", omit_contact=True ): # 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", "omitActivistCodeContactHistory": omit_contact, } r = self.apply_response(id, response, id_type, omit_contact=omit_contact) 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", omit_contact=True): """ 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`` omit_contact: boolean If set to false the contact history will be updated with a contact attempt. Returns: ``None`` """ return self.toggle_activist_code( id, activist_code_id, "Apply", id_type=id_type, omit_contact=omit_contact )
[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)