Пример #1
0
def user_status_updated(view, status_update):
    event_name = 'user_status_updated'
    event_kwargs = dict(
        distinct_id=status_update.author.profile.get_uuid(),
        event_name=event_name,
        applicant_uuid=status_update.application.form_submission.get_uuid(),
        application_id=status_update.application.id,
        status_type=status_update.status_type.display_name,
        next_steps=[
            step.display_name for step in status_update.next_steps.all()
        ],
        additional_info_length=len(status_update.additional_information),
        other_next_steps_length=len(status_update.other_next_step),
        message_change_ratio=SNService.get_message_change_ratio(status_update),
        contact_info_keys=SNService.get_contact_info_keys(status_update),
        has_unsent_additional_info=SNService.has_unsent_additional_info(
            status_update),
        has_unsent_other_next_step=SNService.has_unsent_other_next_step(
            status_update),
        **mixpanel_applicant_data(
            status_update.application.form_submission.applicant),
        **mixpanel_data_from_view_request_user(view))
    if hasattr(status_update, 'notification'):
        event_kwargs.update(notification_contact_info_types=list(
            status_update.notification.contact_info.keys()))
    log_to_mixpanel(**event_kwargs)
Пример #2
0
def confirmation_sent(submission, contact_methods):
    event_name = 'app_confirmation_sent'
    log_to_mixpanel.delay(
        distinct_id=submission.get_uuid(),
        event_name=event_name,
        contact_info_types=contact_methods,
        **mixpanel_applicant_data(submission.applicant))
Пример #3
0
def confirmation_sent(submission, contact_methods):
    event_name = 'app_confirmation_sent'
    log_to_mixpanel(
        distinct_id=submission.get_uuid(),
        event_name=event_name,
        contact_info_types=contact_methods,
        **mixpanel_applicant_data(submission.applicant))
Пример #4
0
def note_added(view, submission):
    event_name = 'app_note_added'
    log_to_mixpanel(
        distinct_id=submission.get_uuid(),
        event_name=event_name,
        **mixpanel_applicant_data(submission.applicant),
        **mixpanel_data_from_view_request_user(view))
Пример #5
0
def user_status_updated(view, status_update):
    event_name = 'user_status_updated'
    event_kwargs = dict(
        distinct_id=status_update.author.profile.get_uuid(),
        event_name=event_name,
        applicant_uuid=status_update.application.form_submission.get_uuid(),
        application_id=status_update.application.id,
        status_type=status_update.status_type.display_name,
        next_steps=[
            step.display_name for step in status_update.next_steps.all()],
        additional_info_length=len(status_update.additional_information),
        other_next_steps_length=len(status_update.other_next_step),
        message_change_ratio=SNService.get_message_change_ratio(status_update),
        contact_info_keys=SNService.get_contact_info_keys(status_update),
        has_unsent_additional_info=SNService.has_unsent_additional_info(
            status_update),
        has_unsent_other_next_step=SNService.has_unsent_other_next_step(
            status_update),
        **mixpanel_applicant_data(
            status_update.application.form_submission.applicant),
        **mixpanel_data_from_view_request_user(view))
    if hasattr(status_update, 'notification'):
        event_kwargs.update(
            notification_contact_info_types=list(
                status_update.notification.contact_info.keys()))
    log_to_mixpanel(**event_kwargs)
Пример #6
0
def note_added(view, submission):
    event_name = 'app_note_added'
    log_to_mixpanel.delay(
        distinct_id=submission.get_uuid(),
        event_name=event_name,
        **mixpanel_applicant_data(submission.applicant),
        **mixpanel_data_from_view_request_user(view))
Пример #7
0
def form_started(view, counties):
    event_name = 'application_started'
    applicant = ApplicantsService.get_applicant_from_request_or_session(
        view.request)
    log_to_mixpanel(distinct_id=applicant.get_uuid(),
                    event_name=event_name,
                    counties=counties,
                    **mixpanel_applicant_data(applicant),
                    **mixpanel_data_from_view_request_user(view))
Пример #8
0
def tags_added(tag_links):
    event_name = 'app_tag_added'
    for tag_link in tag_links:
        log_to_mixpanel(distinct_id=tag_link.content_object.get_uuid(),
                        event_name=event_name,
                        tag_name=tag_link.tag.name,
                        **mixpanel_applicant_data(
                            tag_link.content_object.applicant),
                        **mixpanel_user_data(tag_link.user))
Пример #9
0
def form_submitted(view, submission):
    event_name = 'application_submitted'
    log_to_mixpanel(distinct_id=submission.get_uuid(),
                    event_name=event_name,
                    organizations=list(
                        submission.organizations.values_list('name',
                                                             flat=True)),
                    **mixpanel_applicant_data(submission.applicant),
                    **mixpanel_data_from_view_request_user(view))
Пример #10
0
def tags_added(tag_links):
    event_name = 'app_tag_added'
    for tag_link in tag_links:
        log_to_mixpanel(
            distinct_id=tag_link.content_object.get_uuid(),
            event_name=event_name,
            tag_name=tag_link.tag.name,
            **mixpanel_applicant_data(tag_link.content_object.applicant),
            **mixpanel_user_data(tag_link.user))
Пример #11
0
def form_submitted(view, submission):
    event_name = 'application_submitted'
    log_to_mixpanel(
        distinct_id=submission.get_uuid(),
        event_name=event_name,
        organizations=list(
            submission.organizations.values_list('name', flat=True)),
        **mixpanel_applicant_data(submission.applicant),
        **mixpanel_data_from_view_request_user(view))
Пример #12
0
def apps_opened(view, applications):
    event_name = 'app_opened'
    for application in applications:
        log_to_mixpanel(
            distinct_id=application.form_submission.get_uuid(),
            event_name=event_name,
            application_id=application.id,
            application_organization_name=application.organization.name,
            **mixpanel_applicant_data(application.form_submission.applicant),
            **mixpanel_data_from_view_request_user(view))
Пример #13
0
def user_app_transferred(old_application, new_application, user):
    event_name = 'user_app_transferred'
    log_to_mixpanel(distinct_id=user.profile.get_uuid(),
                    event_name=event_name,
                    applicant_uuid=old_application.form_submission.get_uuid(),
                    from_org=old_application.organization.name,
                    to_org=new_application.organization.name,
                    **mixpanel_applicant_data(
                        old_application.form_submission.applicant),
                    **mixpanel_user_data(user))
Пример #14
0
def form_page_complete(view):
    """page_name should be the class name of the view instance.
    """
    event_name = 'application_page_complete'
    applicant = ApplicantsService.get_applicant_from_request_or_session(
        view.request)
    log_to_mixpanel(distinct_id=applicant.get_uuid(),
                    event_name=event_name,
                    **mixpanel_applicant_data(applicant),
                    **mixpanel_data_from_view_request_user(view))
Пример #15
0
def apps_opened(view, applications):
    event_name = 'app_opened'
    for application in applications:
        log_to_mixpanel(
            distinct_id=application.form_submission.get_uuid(),
            event_name=event_name,
            application_id=application.id,
            application_organization_name=application.organization.name,
            **mixpanel_applicant_data(application.form_submission.applicant),
            **mixpanel_data_from_view_request_user(view))
Пример #16
0
def form_started(view, counties):
    event_name = 'application_started'
    applicant = ApplicantsService.get_applicant_from_request_or_session(
        view.request)
    log_to_mixpanel(
        distinct_id=applicant.get_uuid(),
        event_name=event_name,
        counties=counties,
        **mixpanel_applicant_data(applicant),
        **mixpanel_data_from_view_request_user(view))
Пример #17
0
def user_app_transferred(old_application, new_application, user):
    event_name = 'user_app_transferred'
    log_to_mixpanel(
        distinct_id=user.profile.get_uuid(),
        event_name=event_name,
        applicant_uuid=old_application.form_submission.get_uuid(),
        from_org=old_application.organization.name,
        to_org=new_application.organization.name,
        **mixpanel_applicant_data(old_application.form_submission.applicant),
        **mixpanel_user_data(user))
Пример #18
0
def form_page_complete(view):
    """page_name should be the class name of the view instance.
    """
    event_name = 'application_page_complete'
    applicant = ApplicantsService.get_applicant_from_request_or_session(
        view.request)
    log_to_mixpanel(
        distinct_id=applicant.get_uuid(),
        event_name=event_name,
        **mixpanel_applicant_data(applicant),
        **mixpanel_data_from_view_request_user(view))
Пример #19
0
def app_transferred(old_application, new_application, user):
    event_name = 'app_transferred'
    log_to_mixpanel(distinct_id=old_application.form_submission.get_uuid(),
                    event_name=event_name,
                    user_email=user.email,
                    from_application_id=old_application.id,
                    to_application_id=new_application.id,
                    from_organization_name=old_application.organization.name,
                    to_organization_name=new_application.organization.name,
                    **mixpanel_applicant_data(
                        old_application.form_submission.applicant),
                    **mixpanel_user_data(user))
Пример #20
0
def app_transferred(old_application, new_application, user):
    event_name = 'app_transferred'
    log_to_mixpanel(
        distinct_id=old_application.form_submission.get_uuid(),
        event_name=event_name,
        user_email=user.email,
        from_application_id=old_application.id,
        to_application_id=new_application.id,
        from_organization_name=old_application.organization.name,
        to_organization_name=new_application.organization.name,
        **mixpanel_applicant_data(old_application.form_submission.applicant),
        **mixpanel_user_data(user))
Пример #21
0
def form_validation_failed(view, errors):
    """
    security concerns addressed here:
    MP gets just keys (avoid PII)
    std_out gets k-v pair for errors, but misses application identifiers
    """
    event_name = 'application_errors'
    applicant = ApplicantsService.get_applicant_from_request_or_session(
        view.request)
    for error_key, errors in errors.items():
        log_to_mixpanel.delay(
            distinct_id=applicant.get_uuid(),
            event_name=event_name,
            error=error_key,
            **mixpanel_applicant_data(applicant),
            **mixpanel_data_from_view_request_user(view))
        LoggingService.format_and_log(
            event_name, url=view.request.path,
            view_name=view.__class__.__name__, field=error_key, errors=errors)
Пример #22
0
def form_validation_failed(view, errors):
    """
    security concerns addressed here:
    MP gets just keys (avoid PII)
    std_out gets k-v pair for errors, but misses application identifiers
    """
    event_name = 'application_errors'
    applicant = ApplicantsService.get_applicant_from_request_or_session(
        view.request)
    for error_key, errors in errors.items():
        log_to_mixpanel(
            distinct_id=applicant.get_uuid(),
            event_name=event_name,
            error=error_key,
            **mixpanel_applicant_data(applicant),
            **mixpanel_data_from_view_request_user(view))
        LoggingService.format_and_log(
            event_name, url=view.request.path,
            view_name=view.__class__.__name__, field=error_key, errors=errors)
Пример #23
0
def followup_sent(submission, contact_methods):
    event_name = 'app_followup_sent'
    log_to_mixpanel(distinct_id=submission.get_uuid(),
                    event_name=event_name,
                    contact_info_types=contact_methods,
                    **mixpanel_applicant_data(submission.applicant))