Example #1
0
    def test_get_cases_for_list_type_by_party_id_todo(self,
                                                      get_cases_by_party_id):
        get_cases_by_party_id.return_value = case_list

        cases = case_controller.get_cases_for_list_type_by_party_id(
            respondent_party['id'], self.app_config['CASE_URL'],
            self.app_config['BASIC_AUTH'])
        for business_case in cases:
            for status in ['COMPLETE', 'COMPLETEDBYPHONE', 'NOLONGERREQUIRED']:
                self.assertNotIn(business_case['caseGroup']['caseGroupStatus'],
                                 status)
    def test_get_cases_for_list_type_by_party_id_history(
            self, get_cases_by_party_id):
        get_cases_by_party_id.return_value = case_list

        cases = case_controller.get_cases_for_list_type_by_party_id(
            respondent_party['id'], list_type='history')

        for business_case in cases:
            for status in ['INPROGRESS', 'NOTSTARTED', 'REOPENED']:
                self.assertNotIn(business_case['caseGroup']['caseGroupStatus'],
                                 status)
    def test_get_cases_for_list_type_by_party_id_todo(self,
                                                      get_cases_by_party_id):
        get_cases_by_party_id.return_value = case_list

        cases = case_controller.get_cases_for_list_type_by_party_id(
            respondent_party["id"], self.app_config["CASE_URL"],
            self.app_config["BASIC_AUTH"])
        for business_case in cases:
            for status in ["COMPLETE", "COMPLETEDBYPHONE", "NOLONGERREQUIRED"]:
                self.assertNotIn(business_case["caseGroup"]["caseGroupStatus"],
                                 status)
    def test_get_cases_for_list_type_by_party_id_history(
            self, get_cases_by_party_id):
        get_cases_by_party_id.return_value = case_list

        cases = case_controller.get_cases_for_list_type_by_party_id(
            respondent_party["id"],
            self.app_config["CASE_URL"],
            self.app_config["BASIC_AUTH"],
            list_type="history")

        for business_case in cases:
            for status in ["INPROGRESS", "NOTSTARTED", "REOPENED"]:
                self.assertNotIn(business_case["caseGroup"]["caseGroupStatus"],
                                 status)
Example #5
0
def get_survey_list_details_for_party(party_id, tag, business_party_id,
                                      survey_id):

    for enrolment in get_respondent_enrolments(party_id):
        business_party = get_party_by_business_id(enrolment['business_id'])
        survey = survey_controller.get_survey(enrolment['survey_id'])

        live_collection_exercises = collection_exercise_controller.get_live_collection_exercises_for_survey(
            survey['id'])
        collection_exercises_by_id = dict(
            (ce['id'], ce) for ce in live_collection_exercises)

        cases = case_controller.get_cases_for_list_type_by_party_id(
            business_party['id'], tag)
        enrolled_cases = [
            case for case in cases if case['caseGroup']['collectionExerciseId']
            in collection_exercises_by_id.keys()
        ]

        for case in enrolled_cases:
            collection_instrument = collection_instrument_controller.get_collection_instrument(
                case['collectionInstrumentId'])
            collection_exercise = collection_exercises_by_id[
                case['caseGroup']['collectionExerciseId']]
            added_survey = True if business_party_id == business_party[
                'id'] and survey_id == survey['id'] else None
            display_access_button = display_button(
                case['caseGroup']['caseGroupStatus'],
                collection_instrument['type'])

            yield {
                'case_id':
                case['id'],
                'status':
                case_controller.calculate_case_status(
                    case['caseGroup']['caseGroupStatus'],
                    collection_instrument['type']),
                'collection_instrument_type':
                collection_instrument['type'],
                'survey_id':
                survey['id'],
                'survey_long_name':
                survey['longName'],
                'survey_short_name':
                survey['shortName'],
                'survey_ref':
                survey['surveyRef'],
                'business_party_id':
                business_party['id'],
                'business_name':
                business_party['name'],
                'trading_as':
                business_party['trading_as'],
                'business_ref':
                business_party['sampleUnitRef'],
                'period':
                collection_exercise['userDescription'],
                'submit_by':
                collection_exercise['events']['return_by']['date'],
                'collection_exercise_ref':
                collection_exercise['exerciseRef'],
                'added_survey':
                added_survey,
                'display_button':
                display_access_button
            }


def display_button(status, ci_type):
    return not (ci_type == 'EQ' and status in CLOSED_STATE)


def is_respondent_enrolled(party_id,
                           business_party_id,
                           survey_short_name,
                           return_survey=False):
    survey = survey_controller.get_survey_by_short_name(survey_short_name)
    for enrolment in get_respondent_enrolments(party_id):
        if enrolment['business_id'] == business_party_id and enrolment[
                'survey_id'] == survey['id']:
            if return_survey:
                return {'survey': survey}
            return True


def notify_party_and_respondent_account_locked(respondent_id,
                                               email_address,
                                               status=None):
    logger.debug(
        'Notifying respondent and party service that account is locked')
    url = f'{app.config["PARTY_URL"]}/party-api/v1/respondents/edit-account-status/{respondent_id}'

    data = {
        'respondent_id': respondent_id,
        'email_address': email_address,
        'status_change': status
    }

    response = requests.put(url, json=data, auth=app.config['PARTY_AUTH'])

    try:
        response.raise_for_status()
    except requests.exceptions.HTTPError:
        logger.error('Failed to notify party',
                     respondent_id=respondent_id,
                     status=status)
        raise ApiError(logger, response)

    logger.info('Successfully notified party and respondent',
                respondent_id=respondent_id,
                status=status)
def get_case(cache_data, business_id, case_url, case_auth, tag):
    cache_data["cases"][
        business_id] = case_controller.get_cases_for_list_type_by_party_id(
            business_id, case_url, case_auth, tag)