Source code for parsons.ngpvan.survey_questions

"""NGPVAN Survey Questions Endpoints"""
from parsons.etl.table import Table
import logging

logger = logging.getLogger(__name__)


[docs]class SurveyQuestions(object): def __init__(self, van_connection): self.connection = van_connection
[docs] def get_survey_questions( self, statuses=["Active"], name=None, sq_type=None, question=None, cycle=None ): """ Get survey questions. `Args:` statuses: list Filter to a list of statuses of survey questions. One or more of ``Active``, ``Archived``, and ``Inactive``. name: str Filter to survey questions with names begin with the input. type: str Filter to survey questions of a given type. question: str Filter to survey questions with script questions that contain the given input. cycle: str Filter to survey suestions with the given cycle. A year in the format "YYYY". `Returns:` Parsons Table See :ref:`parsons-table` for output options. """ params = { "statuses": statuses, "$top": self.page_size, "name": name, "type": sq_type, "question": question, "cycle": cycle, } tbl = Table(self.connection.get_request("surveyQuestions", params=params)) logger.info(f"Found {tbl.num_rows} survey questions.") return tbl
[docs] def get_survey_question(self, survey_question_id): """ Get a survey question. `Args:` survey_question_id: int The survey question id. `Returns:` Parsons Table See :ref:`parsons-table` for output options. """ r = self.connection.get_request(f"surveyQuestions/{survey_question_id}") logger.info(f"Found survey question {survey_question_id}.") return r
[docs] def apply_survey_response( self, id, survey_question_id, survey_response_id, id_type="vanid", result_code_id=None, contact_type_id=None, input_type_id=None, date_canvassed=None, ): """ Apply a single survey response to a person. `Args:` id: str A valid person id survey_question_id: int A valid survey question id survey_response_id: int A valid survey response id id_type: str A known person identifier type available on this VAN instance such as ``dwid`` result_code_id : int `Optional`; Specifies the result code of the response. If not included,responses must be specified. Conversely, if responses are specified, result_code_id must be null. Valid ids can be found by using the :meth:`get_canvass_responses_result_codes` contact_type_id : int `Optional`; A valid contact type id input_type_id : int `Optional`; Defaults to 11 (API Input) date_canvassed : str `Optional`; ISO 8601 formatted date. Defaults to todays date """ response = { "surveyQuestionId": survey_question_id, "surveyResponseId": survey_response_id, "type": "surveyResponse", } logger.info(f"Applying survey question {survey_question_id} to {id_type} {id}") self.apply_response( id, response, id_type, result_code_id=result_code_id, contact_type_id=contact_type_id, input_type_id=input_type_id, date_canvassed=date_canvassed, )