Example #1
0
def create_full_fixture():
    """This fixture fills out all the dynamic reporting tables.

    Its purpose is to support unit and UI testing.

    WARNING: existing data is deleted from the tables to preserve stable ids
    and test behavior.

    It covers:
        * Standard known reports.
        * All known forms of inactive records for every table.
        * UI and "active_..." manager methods should never return or show
          an inactive record. So UI should never see "Dead" or "Maybe Dead"
          items.
    """

    # For each model create one or more plausible active records.
    # - If a reference to this record isn't needed, don't make a variable for
    #   it.
    # - Otherwise, the variable name is short but named like:
    #   modelabbreviation_purpose
    # Also create an inactive record.
    # - If a variable is needed, name the variable "..._dead".
    # Also, create an active version of the record meant to be linked via an
    # inactive through record.
    # - If a variable is needed, name the variable "..._maybe_dead".

    # Delete all
    UserType.objects.all().delete()
    ut_emp_dead = UserTypeFactory.create(
        id=1, user_type="EMPLOYER", is_active=False)
    ut_emp = UserTypeFactory.create(id=2, user_type="EMPLOYER")
    ut_staff = UserTypeFactory.create(id=3, user_type="STAFF")

    ReportingType.objects.all().delete()
    rit_prm = ReportingTypeFactory.create(
        id=1,
        reporting_type="PRM",
        description="PRM Reports")
    rit_comp = ReportingTypeFactory.create(
        id=2,
        reporting_type="Compliance",
        description="Compliance Reports")
    rit_dead = ReportingTypeFactory.create(
        id=3,
        reporting_type="Dead",
        description="Dead Reports",
        is_active=False)
    rit_maybe_dead = ReportingTypeFactory.create(
        id=4,
        reporting_type="Maybe Dead",
        description="Maybe Dead Reports",
        is_active=False)
    rit_wrong = ReportingTypeFactory.create(
        id=5,
        reporting_type="Wrong UT",
        description="Wrong UserType")

    UserReportingTypes.objects.all().delete()
    UserReportingTypesFactory.create(
        user_type=ut_emp, reporting_type=rit_prm)
    UserReportingTypesFactory.create(
        user_type=ut_emp, reporting_type=rit_dead)
    UserReportingTypesFactory.create(
        user_type=ut_emp, reporting_type=rit_maybe_dead, is_active=False)
    UserReportingTypesFactory.create(
        user_type=ut_emp_dead, reporting_type=rit_wrong)
    UserReportingTypesFactory.create(
        user_type=ut_staff, reporting_type=rit_comp)

    ReportType.objects.all().delete()
    rt_partners = ReportTypeFactory(
        id=1,
        report_type="Partners",
        description="Partners Report",
        datasource="partners")
    rt_con = ReportTypeFactory(
        id=2,
        report_type="Contacts",
        description="Contacts Report",
        datasource="contacts")
    rt_comm = ReportTypeFactory(
        id=3,
        report_type="Communication Records",
        description="Communication Records Report",
        datasource="comm_records")
    rt_state = ReportTypeFactory(
        id=4,
        report_type="State",
        description="State Report")
    rt_screen = ReportTypeFactory(
        id=5,
        report_type="Screenshots",
        description="Screenshots Report")
    rt_dead = ReportTypeFactory(
        id=6,
        report_type="Dead",
        description="Dead Report",
        is_active=False)
    rt_maybe_dead = ReportTypeFactory(
        id=7,
        report_type="Maybe Dead",
        description="Maybe Dead Report")

    ReportingTypeReportTypes.objects.all().delete()
    ReportingTypeReportTypesFactory.create(
        report_type=rt_partners, reporting_type=rit_prm)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_con, reporting_type=rit_prm)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_comm, reporting_type=rit_prm)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_dead, reporting_type=rit_prm)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_maybe_dead, reporting_type=rit_prm,
        is_active=False)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_state, reporting_type=rit_comp)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_screen, reporting_type=rit_comp)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_dead, reporting_type=rit_comp)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_maybe_dead, reporting_type=rit_prm,
        is_active=False)

    DataType.objects.all().delete()
    dt_dead = DataTypeFactory.create(
        id=1,
        data_type="",
        description="Dead",
        is_active=False)
    dt_maybe_dead = DataTypeFactory.create(
        id=2,
        data_type="",
        description="Maybe Dead")
    dt_unagg = DataTypeFactory.create(
        id=3,
        data_type="unaggregated",
        description="Unaggregated")
    dt_count_comm_per_month_per_partner = DataTypeFactory.create(
        id=4,
        data_type="count_comm_rec_per_month",
        description="Number of Communication Records per Month per Partner")

    ReportTypeDataTypes.objects.all().delete()
    ReportTypeDataTypesFactory.create(
        report_type=rt_con, data_type=dt_dead)
    ReportTypeDataTypesFactory.create(
        report_type=rt_con, data_type=dt_maybe_dead, is_active=False)
    rtdt_con_unagg = ReportTypeDataTypesFactory.create(
        report_type=rt_con, data_type=dt_unagg)
    rtdt_part_unagg = ReportTypeDataTypesFactory.create(
        report_type=rt_partners, data_type=dt_unagg)
    rtdt_comm_unagg = ReportTypeDataTypesFactory.create(
        report_type=rt_comm, data_type=dt_unagg)
    rtdt_comm_count_pmpp = ReportTypeDataTypesFactory.create(
        report_type=rt_partners,
        data_type=dt_count_comm_per_month_per_partner)

    PresentationType.objects.all().delete()
    pre_dead = PresentationTypeFactory.create(
        id=1, description="Inactive", is_active=False)
    pre_maybe_dead = PresentationTypeFactory.create(
        id=2, description="Maybe Inactive")
    pre_csv = PresentationTypeFactory.create(
        id=3, presentation_type="csv", description="Unformatted CSV")
    pre_xlsx = PresentationTypeFactory.create(
        id=4, presentation_type="xlsx", description="Excel xlsx")
    pre_json = PresentationTypeFactory.create(
        id=5,
        is_active=False,
        presentation_type="json_pass",
        description="JSON Passthrough")

    Configuration.objects.all().delete()
    con_dead = ConfigurationFactory.create(
        id=1, name="Inactive", is_active=False)
    ConfigurationFactory.create(
        id=2, name="Maybe Inactive")
    con_con = ConfigurationFactory.create(
        id=3, name="Contact Basic Report")
    con_part = ConfigurationFactory.create(
        id=4, name="Partner Basic Report")
    con_comm = ConfigurationFactory.create(
        id=5, name="Communication Records Basic Report")
    con_comm_count = ConfigurationFactory.create(
        id=6, name="Partners Comm Record Count Per Month Report")

    ConfigurationColumn.objects.all().delete()
    ConfigurationColumnFactory.create(
        id=1,
        column_name="dead",
        output_format="text",
        configuration=con_con,
        multi_value_expansion=False,
        is_active=False)
    ConfigurationColumnFactory.create(
        id=3,
        column_name="name",
        order=100,
        output_format="text",
        configuration=con_con,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=4,
        column_name="partner",
        order=101,
        output_format="text",
        filter_interface_type='search_multiselect',
        filter_interface_display='Partners',
        configuration=con_con,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(
        id=5,
        column_name="email",
        order=102,
        output_format="text",
        configuration=con_con,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=6,
        column_name="phone",
        order=103,
        output_format="text",
        configuration=con_con,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=7,
        column_name="date",
        order=104,
        configuration=con_con,
        output_format="us_date",
        filter_interface_type='date_range',
        filter_interface_display='Date',
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=8,
        column_name="notes",
        order=105,
        output_format="text",
        configuration=con_con,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=9,
        column_name="locations",
        order=106,
        output_format="city_state_list",
        filter_interface_type='city_state',
        filter_interface_display='Location',
        configuration=con_con,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(
        id=10,
        column_name="tags",
        order=107,
        output_format="tags_list",
        filter_interface_type='tags',
        filter_interface_display='Tags',
        configuration=con_con,
        multi_value_expansion=False,
        has_help=True)

    ConfigurationColumnFactory.create(
        id=30,
        column_name="data_source",
        order=103,
        output_format="text",
        filter_interface_type='search_select',
        filter_interface_display='Data Source',
        configuration=con_part,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=31,
        column_name="name",
        order=104,
        output_format="text",
        configuration=con_part,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=32,
        column_name="date",
        order=105,
        configuration=con_part,
        output_format="us_date",
        filter_interface_type='date_range',
        filter_interface_display='Date',
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=33,
        column_name="primary_contact",
        order=106,
        output_format="text",
        configuration=con_part,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=34,
        column_name="tags",
        order=107,
        output_format="tags_list",
        filter_interface_type='tags',
        filter_interface_display='Tags',
        configuration=con_part,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(
        id=35,
        column_name="uri",
        order=108,
        output_format="text",
        filter_interface_type='search_select',
        filter_interface_display='URL',
        configuration=con_part,
        multi_value_expansion=False)

    ConfigurationColumnFactory.create(
        id=60,
        column_name="contact",
        order=123,
        output_format="text",
        filter_interface_type='search_multiselect',
        filter_interface_display='Contacts',
        configuration=con_comm,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(
        id=61,
        column_name="contact_email",
        order=104,
        output_format="text",
        configuration=con_comm,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=62,
        column_name="contact_phone",
        order=105,
        configuration=con_comm,
        output_format="text",
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=63,
        column_name="communication_type",
        order=109,
        filter_interface_type='search_select',
        filter_interface_display='Communication Type',
        configuration=con_comm,
        output_format="text",
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=64,
        column_name="created_on",
        order=107,
        configuration=con_comm,
        output_format="us_date",
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=65,
        column_name="created_by",
        order=108,
        configuration=con_comm,
        output_format="text",
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=66,
        column_name="date_time",
        order=106,
        configuration=con_comm,
        output_format="us_date",
        filter_interface_type='date_range',
        filter_interface_display='Date',
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=67,
        column_name="job_applications",
        order=110,
        output_format="text",
        configuration=con_comm,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=68,
        column_name="job_applications",
        order=111,
        output_format="text",
        configuration=con_comm,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=69,
        column_name="job_hires",
        order=112,
        output_format="text",
        configuration=con_comm,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=70,
        column_name="job_id",
        order=113,
        output_format="text",
        configuration=con_comm,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=71,
        column_name="job_interviews",
        order=114,
        output_format="text",
        configuration=con_comm,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=72,
        column_name="last_action_time",
        order=115,
        output_format="us_date",
        configuration=con_comm,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=73,
        column_name="length",
        order=116,
        output_format="text",
        configuration=con_comm,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=74,
        column_name="location",
        order=117,
        output_format="text",
        configuration=con_comm,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=75,
        column_name="notes",
        order=118,
        output_format="text",
        configuration=con_comm,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=76,
        column_name="partner",
        order=122,
        output_format="text",
        filter_interface_type='search_multiselect',
        filter_interface_display='Partners',
        configuration=con_comm,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(
        id=77,
        column_name="subject",
        order=120,
        output_format="text",
        configuration=con_comm,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=78,
        column_name="tags",
        order=121,
        output_format="tags_list",
        filter_interface_type='tags',
        filter_interface_display='Tags',
        configuration=con_comm,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(
        id=79,
        order=102,
        filter_interface_type='city_state',
        filter_interface_display='Contact Location',
        filter_only=True,
        configuration=con_comm,
        multi_value_expansion=False,
        has_help=True)

    ConfigurationColumnFactory.create(
        id=100,
        column_name="data_source",
        order=103,
        output_format="text",
        filter_interface_type='search_select',
        filter_interface_display='Data Source',
        configuration=con_comm_count,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=101,
        column_name="name",
        order=104,
        output_format="text",
        configuration=con_comm_count,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=102,
        column_name="date",
        order=105,
        configuration=con_comm_count,
        output_format="us_date",
        filter_interface_type='date_range',
        filter_interface_display='Date',
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=103,
        column_name="primary_contact",
        order=106,
        output_format="text",
        configuration=con_comm_count,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=104,
        column_name="tags",
        order=107,
        output_format="tags_list",
        filter_interface_type='tags',
        filter_interface_display='Tags',
        configuration=con_comm_count,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(
        id=105,
        column_name="uri",
        order=108,
        output_format="text",
        filter_interface_type='search_select',
        filter_interface_display='URL',
        configuration=con_comm_count,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=106,
        column_name="year",
        order=109,
        output_format="text",
        configuration=con_comm_count,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=108,
        column_name="month",
        order=110,
        output_format="text",
        configuration=con_comm_count,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=109,
        column_name="comm_rec_count",
        order=111,
        output_format="text",
        configuration=con_comm_count,
        multi_value_expansion=False)

    ReportPresentation.objects.all().delete()
    ReportPresentationFactory.create(
        id=1, presentation_type=pre_maybe_dead, configuration=con_con,
        display_name="Dead", report_data=rtdt_con_unagg, is_active=False)
    ReportPresentationFactory.create(
        id=2, presentation_type=pre_dead, configuration=con_con,
        display_name="Dead Presentation",
        report_data=rtdt_con_unagg, is_active=True)
    ReportPresentationFactory.create(
        id=3, presentation_type=pre_csv, configuration=con_con,
        display_name="Contact CSV",
        report_data=rtdt_con_unagg, is_active=True)
    ReportPresentationFactory.create(
        id=4, presentation_type=pre_csv, configuration=con_dead,
        display_name="Dead Configuration",
        report_data=rtdt_con_unagg, is_active=True)
    ReportPresentationFactory.create(
        id=5, presentation_type=pre_csv, configuration=con_part,
        display_name="Partner CSV",
        report_data=rtdt_part_unagg, is_active=True)
    ReportPresentationFactory.create(
        id=6, presentation_type=pre_csv, configuration=con_comm,
        display_name="Communication Record CSV",
        report_data=rtdt_comm_unagg, is_active=True)
    ReportPresentationFactory.create(
        id=7, presentation_type=pre_xlsx, configuration=con_con,
        display_name="Contact Excel Spreadsheet",
        report_data=rtdt_con_unagg, is_active=True)
    ReportPresentationFactory.create(
        id=8, presentation_type=pre_xlsx, configuration=con_part,
        display_name="Partner Excel Spreadsheet",
        report_data=rtdt_part_unagg, is_active=True)
    ReportPresentationFactory.create(
        id=9, presentation_type=pre_xlsx, configuration=con_comm,
        display_name="Communication Record Excel Spreadsheet",
        report_data=rtdt_comm_unagg, is_active=True)
    ReportPresentationFactory.create(
        id=10, presentation_type=pre_json, configuration=con_part,
        display_name="Partner JSON Passthrough",
        report_data=rtdt_part_unagg, is_active=True)
    ReportPresentationFactory.create(
        id=11, presentation_type=pre_json, configuration=con_con,
        display_name="Contact JSON Passthrough",
        report_data=rtdt_con_unagg, is_active=True)
    ReportPresentationFactory.create(
        id=12, presentation_type=pre_json, configuration=con_comm,
        display_name="Communication Record JSON Passthrough",
        report_data=rtdt_comm_unagg, is_active=True)
    ReportPresentationFactory.create(
        id=13, presentation_type=pre_csv, configuration=con_comm_count,
        display_name="Communication Record Count CSV",
        report_data=rtdt_comm_count_pmpp, is_active=True)
    ReportPresentationFactory.create(
        id=14, presentation_type=pre_json, configuration=con_comm_count,
        display_name="Communication Record Count JSON Passthrough",
        report_data=rtdt_comm_count_pmpp, is_active=True)
Example #2
0
def create_full_fixture():
    """This fixture fills out all the dynamic reporting tables.

    Its purpose is to support unit and UI testing.

    WARNING: existing data is deleted from the tables to preserve stable ids
    and test behavior.

    It covers:
        * Standard known reports.
        * All known forms of inactive records for every table.
        * UI and "active_..." manager methods should never return or show
          an inactive record. So UI should never see "Dead" or "Maybe Dead"
          items.

    returns:
        a dictionary of references to models important for testing
        Keys named "dead" or "maybe_dead" refer to models that exist to
        catch failures to filter out various kinds of inactive-ness.
    """

    # For each model create one or more plausible active records.
    # - If a reference to this record isn't needed, don't make a variable for
    #   it.
    # - Otherwise, the variable name is short but named like:
    #   modelabbreviation_purpose
    # Also create an inactive record.
    # - If a variable is needed, name the variable "..._dead".
    # Also, create an active version of the record meant to be linked via an
    # inactive through record.
    # - If a variable is needed, name the variable "..._maybe_dead".

    # Naming convention:
    # ut_... User Type
    # rit_... ReportING Type
    # rt_... Report Type
    # dt_... Data Type
    # pre... Presentation Type
    # con... Configuration
    # rtdt... Report Type/Data Type
    # rtpt... Report Type/Presentation Type
    # ...con Contact
    # ...comm Communication Record
    # ...dead Record is marked inactive
    # ...maybe_dead Record will be related to another inactive record.
    # ...unagg Unagregated

    UserType.objects.all().delete()
    ut_emp_dead = UserTypeFactory.create(user_type="EMPLOYER", is_active=False)
    ut_emp = UserTypeFactory.create(user_type="EMPLOYER")
    ut_staff = UserTypeFactory.create(user_type="STAFF")

    ReportingType.objects.all().delete()
    rit_prm = ReportingTypeFactory.create(reporting_type="prm",
                                          description="PRM Reports")
    rit_comp = ReportingTypeFactory.create(reporting_type="compliance",
                                           description="Compliance Reports")
    rit_dead = ReportingTypeFactory.create(reporting_type="Dead",
                                           description="Dead Reports",
                                           is_active=False)
    rit_maybe_dead = ReportingTypeFactory.create(
        reporting_type="Maybe Dead",
        description="Maybe Dead Reports",
        is_active=False)
    rit_wrong = ReportingTypeFactory.create(reporting_type="Wrong UT",
                                            description="Wrong UserType")

    UserReportingTypes.objects.all().delete()
    UserReportingTypesFactory.create(user_type=ut_emp, reporting_type=rit_prm)
    UserReportingTypesFactory.create(user_type=ut_emp, reporting_type=rit_comp)
    UserReportingTypesFactory.create(user_type=ut_emp, reporting_type=rit_dead)
    UserReportingTypesFactory.create(user_type=ut_emp,
                                     reporting_type=rit_maybe_dead,
                                     is_active=False)
    UserReportingTypesFactory.create(user_type=ut_emp_dead,
                                     reporting_type=rit_wrong)
    UserReportingTypesFactory.create(user_type=ut_staff,
                                     reporting_type=rit_comp)

    ReportType.objects.all().delete()
    rt_partners = ReportTypeFactory(report_type="partners",
                                    description="Partners Report",
                                    datasource="partners")
    rt_con = ReportTypeFactory(report_type="contacts",
                               description="Contacts Report",
                               datasource="contacts")
    rt_comm = ReportTypeFactory(report_type="communication-records",
                                description="Communication Records Report",
                                datasource="comm_records")
    rt_state = ReportTypeFactory(report_type="state",
                                 description="State Report")
    rt_screen = ReportTypeFactory(report_type="screenshots",
                                  description="Screenshots Report")
    rt_dead = ReportTypeFactory(report_type="Dead",
                                description="Dead Report",
                                is_active=False)
    rt_maybe_dead = ReportTypeFactory(report_type="Maybe Dead",
                                      description="Maybe Dead Report")

    ReportingTypeReportTypes.objects.all().delete()
    ReportingTypeReportTypesFactory.create(report_type=rt_partners,
                                           reporting_type=rit_prm)
    ReportingTypeReportTypesFactory.create(report_type=rt_con,
                                           reporting_type=rit_prm)
    ReportingTypeReportTypesFactory.create(report_type=rt_comm,
                                           reporting_type=rit_prm)
    ReportingTypeReportTypesFactory.create(report_type=rt_dead,
                                           reporting_type=rit_prm)
    ReportingTypeReportTypesFactory.create(report_type=rt_maybe_dead,
                                           reporting_type=rit_prm,
                                           is_active=False)
    ReportingTypeReportTypesFactory.create(report_type=rt_state,
                                           reporting_type=rit_comp)
    ReportingTypeReportTypesFactory.create(report_type=rt_screen,
                                           reporting_type=rit_comp)
    ReportingTypeReportTypesFactory.create(report_type=rt_dead,
                                           reporting_type=rit_comp)
    ReportingTypeReportTypesFactory.create(report_type=rt_maybe_dead,
                                           reporting_type=rit_prm,
                                           is_active=False)

    DataType.objects.all().delete()
    dt_dead = DataTypeFactory.create(data_type="",
                                     description="Dead",
                                     is_active=False)
    dt_maybe_dead = DataTypeFactory.create(data_type="",
                                           description="Maybe Dead")
    dt_unagg = DataTypeFactory.create(data_type="unaggregated",
                                      description="Unaggregated")
    dt_count_comm_per_month_per_partner = DataTypeFactory.create(
        is_active=False,
        data_type="count_comm_rec_per_month",
        description="Number of Communication Records per Month per Partner")

    PresentationType.objects.all().delete()
    pre_dead = PresentationTypeFactory.create(description="Inactive",
                                              is_active=False)
    pre_maybe_dead = PresentationTypeFactory.create(
        description="Maybe Inactive")
    pre_csv = PresentationTypeFactory.create(presentation_type="csv",
                                             description="Unformatted CSV")
    pre_xlsx = PresentationTypeFactory.create(presentation_type="xlsx",
                                              description="Excel xlsx")
    pre_json = PresentationTypeFactory.create(is_active=False,
                                              presentation_type="json_pass",
                                              description="JSON Passthrough")

    Configuration.objects.all().delete()
    con_dead = ConfigurationFactory.create(name="Inactive", is_active=False)
    ConfigurationFactory.create(name="Maybe Inactive")
    con_con = ConfigurationFactory.create(name="Contact Basic Report")
    con_part = ConfigurationFactory.create(name="Partner Basic Report")
    con_comm = ConfigurationFactory.create(
        name="Communication Records Basic Report")
    con_comm_count = ConfigurationFactory.create(
        name="Partners Comm Record Count Per Month Report")

    ConfigurationColumn.objects.all().delete()
    ConfigurationColumnFactory.create(column_name="date",
                                      alias='Date',
                                      order=100,
                                      configuration=con_con,
                                      output_format="us_datetime",
                                      filter_interface_type='date_range',
                                      filter_interface_display='Date',
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="locations",
                                      alias='Location',
                                      order=101,
                                      output_format="city_state_list",
                                      filter_interface_type='city_state',
                                      filter_interface_display='Location',
                                      configuration=con_con,
                                      multi_value_expansion=False,
                                      has_help=True)
    ConfigurationColumnFactory.create(column_name="tags",
                                      alias='Tags',
                                      order=102,
                                      output_format="tags_list",
                                      filter_interface_type='tags',
                                      filter_interface_display='Tags',
                                      configuration=con_con,
                                      multi_value_expansion=False,
                                      has_help=True)
    ConfigurationColumnFactory.create(
        column_name="partner",
        alias='Partners',
        order=103,
        output_format="text",
        filter_interface_type='search_multiselect',
        filter_interface_display='Partners',
        configuration=con_con,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(column_name="dead",
                                      output_format="text",
                                      configuration=con_con,
                                      multi_value_expansion=False,
                                      is_active=False)
    ConfigurationColumnFactory.create(column_name="name",
                                      alias="Name",
                                      order=104,
                                      output_format="text",
                                      configuration=con_con,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="email",
                                      alias="Email",
                                      order=105,
                                      output_format="text",
                                      configuration=con_con,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="phone",
                                      alias="Phone",
                                      order=106,
                                      output_format="text",
                                      configuration=con_con,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="notes",
                                      alias="Notes",
                                      order=107,
                                      output_format="text",
                                      configuration=con_con,
                                      multi_value_expansion=False)

    ConfigurationColumnFactory.create(column_name="date",
                                      alias="Date",
                                      order=100,
                                      configuration=con_part,
                                      output_format="us_datetime",
                                      filter_interface_type='date_range',
                                      filter_interface_display='Date',
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        order=101,
        column_name="locations",
        alias='Contact Location',
        filter_interface_type='city_state',
        filter_interface_display='Contact Location',
        filter_only=True,
        configuration=con_part,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(column_name="tags",
                                      alias='Tags',
                                      order=102,
                                      output_format="tags_list",
                                      filter_interface_type='tags',
                                      filter_interface_display='Tags',
                                      configuration=con_part,
                                      multi_value_expansion=False,
                                      has_help=True)
    ConfigurationColumnFactory.create(column_name="uri",
                                      alias='URL',
                                      order=103,
                                      output_format="text",
                                      filter_interface_type='search_select',
                                      filter_interface_display='URL',
                                      configuration=con_part,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="data_source",
                                      alias='Source',
                                      order=104,
                                      output_format="text",
                                      filter_interface_type='search_select',
                                      filter_interface_display='Source',
                                      configuration=con_part,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="name",
                                      alias="Name",
                                      order=105,
                                      output_format="text",
                                      configuration=con_part,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="primary_contact",
                                      alias="Primary Contact",
                                      order=106,
                                      output_format="text",
                                      configuration=con_part,
                                      multi_value_expansion=False)

    ConfigurationColumnFactory.create(column_name="date_time",
                                      alias="Date of Communication",
                                      order=107,
                                      configuration=con_comm,
                                      output_format="us_datetime",
                                      filter_interface_type='date_range',
                                      filter_interface_display='Date',
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        order=108,
        column_name="locations",
        alias='Contact Location',
        filter_interface_type='city_state',
        filter_interface_display='Contact Location',
        filter_only=True,
        configuration=con_comm,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(column_name="tags",
                                      alias='Tags',
                                      order=109,
                                      output_format="tags_list",
                                      filter_interface_type='tags',
                                      filter_interface_display='Tags',
                                      configuration=con_comm,
                                      multi_value_expansion=False,
                                      has_help=True)
    ConfigurationColumnFactory.create(
        column_name="communication_type",
        alias='Communication Type',
        order=110,
        filter_interface_type='search_multiselect',
        filter_interface_display='Communication Type',
        configuration=con_comm,
        output_format="comm_types_list",
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="partner",
        alias='Partners',
        order=111,
        output_format="text",
        filter_interface_type='search_multiselect',
        filter_interface_display='Partners',
        configuration=con_comm,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(
        column_name="contact",
        alias='Contacts',
        order=112,
        output_format="text",
        filter_interface_type='search_multiselect',
        filter_interface_display='Contacts',
        configuration=con_comm,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(column_name="contact_email",
                                      alias="Contact Email",
                                      order=113,
                                      output_format="text",
                                      configuration=con_comm,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="contact_phone",
                                      alias="Contact Phone",
                                      order=114,
                                      configuration=con_comm,
                                      output_format="text",
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="created_on",
                                      alias="Created On",
                                      order=115,
                                      configuration=con_comm,
                                      output_format="us_date",
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="created_by",
                                      alias="Created By",
                                      order=116,
                                      configuration=con_comm,
                                      output_format="text",
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="job_applications",
                                      alias="Job Applications",
                                      order=117,
                                      output_format="text",
                                      configuration=con_comm,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="job_hires",
                                      alias="Job Hires",
                                      order=118,
                                      output_format="text",
                                      configuration=con_comm,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="job_id",
                                      alias="Job ID",
                                      order=119,
                                      output_format="text",
                                      configuration=con_comm,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="job_interviews",
                                      alias="Job Interviews",
                                      order=120,
                                      output_format="text",
                                      configuration=con_comm,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="last_action_time",
                                      order=121,
                                      output_format="us_datetime",
                                      configuration=con_comm,
                                      is_active=False,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="length",
                                      alias="Length",
                                      order=122,
                                      output_format="text",
                                      configuration=con_comm,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="location",
                                      alias="Location",
                                      order=123,
                                      output_format="text",
                                      configuration=con_comm,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="notes",
                                      alias="Notes",
                                      order=124,
                                      output_format="text",
                                      configuration=con_comm,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="subject",
                                      alias="Subject",
                                      order=125,
                                      output_format="text",
                                      configuration=con_comm,
                                      multi_value_expansion=False)

    ConfigurationColumnFactory.create(column_name="data_source",
                                      alias='Source',
                                      order=103,
                                      output_format="text",
                                      filter_interface_type='search_select',
                                      filter_interface_display='Source',
                                      configuration=con_comm_count,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="name",
                                      alias="Name",
                                      order=104,
                                      output_format="text",
                                      configuration=con_comm_count,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="date",
                                      alias='Date',
                                      order=105,
                                      configuration=con_comm_count,
                                      output_format="us_datetime",
                                      filter_interface_type='date_range',
                                      filter_interface_display='Date',
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="primary_contact",
                                      alias="Primary Contact",
                                      order=106,
                                      output_format="text",
                                      configuration=con_comm_count,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="tags",
                                      alias='Tags',
                                      order=107,
                                      output_format="tags_list",
                                      filter_interface_type='tags',
                                      filter_interface_display='Tags',
                                      configuration=con_comm_count,
                                      multi_value_expansion=False,
                                      has_help=True)
    ConfigurationColumnFactory.create(column_name="uri",
                                      alias='URL',
                                      order=108,
                                      output_format="text",
                                      filter_interface_type='search_select',
                                      filter_interface_display='URL',
                                      configuration=con_comm_count,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="year",
                                      alias='Year',
                                      order=109,
                                      output_format="text",
                                      configuration=con_comm_count,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="month",
                                      alias='Month',
                                      order=110,
                                      output_format="text",
                                      configuration=con_comm_count,
                                      multi_value_expansion=False)
    ConfigurationColumnFactory.create(column_name="comm_rec_count",
                                      alias='Communication Record Count',
                                      order=111,
                                      output_format="text",
                                      configuration=con_comm_count,
                                      multi_value_expansion=False)

    ReportTypeDataTypes.objects.all().delete()
    ReportTypeDataTypesFactory.create(report_type=rt_con,
                                      data_type=dt_dead,
                                      configuration=con_con)
    ReportTypeDataTypesFactory.create(report_type=rt_con,
                                      data_type=dt_maybe_dead,
                                      is_active=False,
                                      configuration=con_con)
    ReportTypeDataTypesFactory.create(report_type=rt_con,
                                      data_type=dt_maybe_dead,
                                      is_active=False,
                                      configuration=con_dead)
    rtdt_con_unagg = ReportTypeDataTypesFactory.create(report_type=rt_con,
                                                       data_type=dt_unagg,
                                                       configuration=con_con)
    rtdt_part_unagg = ReportTypeDataTypesFactory.create(
        report_type=rt_partners, data_type=dt_unagg, configuration=con_part)
    rtdt_comm_unagg = ReportTypeDataTypesFactory.create(report_type=rt_comm,
                                                        data_type=dt_unagg,
                                                        configuration=con_comm)
    rtdt_comm_count_pmpp = ReportTypeDataTypesFactory.create(
        report_type=rt_partners,
        configuration=con_comm_count,
        data_type=dt_count_comm_per_month_per_partner)
    ReportTypeDataTypesFactory.create(report_type=rt_con,
                                      data_type=dt_unagg,
                                      is_active=False,
                                      configuration=con_dead)

    ReportPresentation.objects.all().delete()
    ReportPresentationFactory.create(presentation_type=pre_maybe_dead,
                                     display_name="Dead",
                                     report_data=rtdt_con_unagg,
                                     is_active=False)
    ReportPresentationFactory.create(presentation_type=pre_dead,
                                     display_name="Dead Presentation",
                                     report_data=rtdt_con_unagg,
                                     is_active=True)
    rtpt_con = ReportPresentationFactory.create(presentation_type=pre_csv,
                                                display_name="Contact CSV",
                                                report_data=rtdt_con_unagg,
                                                is_active=True)
    ReportPresentationFactory.create(presentation_type=pre_csv,
                                     display_name="Partner CSV",
                                     report_data=rtdt_part_unagg,
                                     is_active=True)
    ReportPresentationFactory.create(presentation_type=pre_csv,
                                     display_name="Communication Record CSV",
                                     report_data=rtdt_comm_unagg,
                                     is_active=True)
    rtpt_xlsx = ReportPresentationFactory.create(
        presentation_type=pre_xlsx,
        display_name="Contact Excel Spreadsheet",
        report_data=rtdt_con_unagg,
        is_active=True)
    ReportPresentationFactory.create(presentation_type=pre_xlsx,
                                     display_name="Partner Excel Spreadsheet",
                                     report_data=rtdt_part_unagg,
                                     is_active=True)
    ReportPresentationFactory.create(
        presentation_type=pre_xlsx,
        display_name="Communication Record Excel Spreadsheet",
        report_data=rtdt_comm_unagg,
        is_active=True)
    ReportPresentationFactory.create(presentation_type=pre_json,
                                     display_name="Partner JSON Passthrough",
                                     report_data=rtdt_part_unagg,
                                     is_active=True)
    ReportPresentationFactory.create(presentation_type=pre_json,
                                     display_name="Contact JSON Passthrough",
                                     report_data=rtdt_con_unagg,
                                     is_active=True)
    ReportPresentationFactory.create(
        presentation_type=pre_json,
        display_name="Communication Record JSON Passthrough",
        report_data=rtdt_comm_unagg,
        is_active=True)
    ReportPresentationFactory.create(
        presentation_type=pre_csv,
        display_name="Communication Record Count CSV",
        report_data=rtdt_comm_count_pmpp,
        is_active=True)
    ReportPresentationFactory.create(
        presentation_type=pre_json,
        display_name="Communication Record Count JSON Passthrough",
        report_data=rtdt_comm_count_pmpp,
        is_active=True)

    return {
        'user_type': {
            'dead': ut_emp_dead,
            'employee': ut_emp,
            'staff': ut_staff,
        },
        'reporting_type': {
            'prm': rit_prm,
            'compliance': rit_comp,
            'dead': rit_dead,
            'maybe_dead': rit_maybe_dead,
            'wrong': rit_wrong,
        },
        'report_type': {
            'partners': rt_partners,
            'contacts': rt_con,
            'communication_records': rt_comm,
            'state': rt_state,
            'screenshots': rt_screen,
            'dead': rt_dead,
            'maybe_dead': rt_maybe_dead,
        },
        'data_type': {
            'dead':
            dt_dead,
            'maybe_dead':
            dt_maybe_dead,
            'unaggregated':
            dt_unagg,
            'count_comm_per_month_per_partner':
            dt_count_comm_per_month_per_partner,
        },
        'presentation_type': {
            'dead': pre_dead,
            'maybe_dead': pre_maybe_dead,
            'csv': pre_csv,
            'xlsx': pre_xlsx,
            'json': pre_json,
        },
        'configuration': {
            'dead': con_dead,
            'contacts': con_con,
            'partners': con_part,
            'communication_records': con_comm,
            'communication_records_count': con_comm_count,
        },
        'report_type/data_type': {
            'contacts/unaggregated': rtdt_con_unagg,
            'partners/unaggregated': rtdt_part_unagg,
            'communication_records/unaggregated': rtdt_comm_unagg,
            'communication_records_count/unaggregated': rtdt_comm_count_pmpp,
        },
        'report_type/presentation_type': {
            'contacts/csv': rtpt_con,
            'contacts/xlsx': rtpt_xlsx,
        },
    }
Example #3
0
def create_full_fixture():
    """This fixture fills out all the dynamic reporting tables.

    Its purpose is to support unit and UI testing.

    WARNING: existing data is deleted from the tables to preserve stable ids
    and test behavior.

    It covers:
        * Standard known reports.
        * All known forms of inactive records for every table.
        * UI and "active_..." manager methods should never return or show
          an inactive record. So UI should never see "Dead" or "Maybe Dead"
          items.

    returns:
        a dictionary of references to models important for testing
        Keys named "dead" or "maybe_dead" refer to models that exist to
        catch failures to filter out various kinds of inactive-ness.
    """

    # For each model create one or more plausible active records.
    # - If a reference to this record isn't needed, don't make a variable for
    #   it.
    # - Otherwise, the variable name is short but named like:
    #   modelabbreviation_purpose
    # Also create an inactive record.
    # - If a variable is needed, name the variable "..._dead".
    # Also, create an active version of the record meant to be linked via an
    # inactive through record.
    # - If a variable is needed, name the variable "..._maybe_dead".

    # Naming convention:
    # ut_... User Type
    # rit_... ReportING Type
    # rt_... Report Type
    # dt_... Data Type
    # pre... Presentation Type
    # con... Configuration
    # rtdt... Report Type/Data Type
    # rtpt... Report Type/Presentation Type
    # ...con Contact
    # ...comm Communication Record
    # ...dead Record is marked inactive
    # ...maybe_dead Record will be related to another inactive record.
    # ...unagg Unagregated

    UserType.objects.all().delete()
    ut_emp_dead = UserTypeFactory.create(
        user_type="EMPLOYER", is_active=False)
    ut_emp = UserTypeFactory.create(user_type="EMPLOYER")
    ut_staff = UserTypeFactory.create(user_type="STAFF")

    ReportingType.objects.all().delete()
    rit_prm = ReportingTypeFactory.create(
        reporting_type="prm",
        description="PRM Reports")
    rit_comp = ReportingTypeFactory.create(
        reporting_type="compliance",
        description="Compliance Reports")
    rit_dead = ReportingTypeFactory.create(
        reporting_type="Dead",
        description="Dead Reports",
        is_active=False)
    rit_maybe_dead = ReportingTypeFactory.create(
        reporting_type="Maybe Dead",
        description="Maybe Dead Reports",
        is_active=False)
    rit_wrong = ReportingTypeFactory.create(
        reporting_type="Wrong UT",
        description="Wrong UserType")

    UserReportingTypes.objects.all().delete()
    UserReportingTypesFactory.create(
        user_type=ut_emp, reporting_type=rit_prm)
    UserReportingTypesFactory.create(
        user_type=ut_emp, reporting_type=rit_comp)
    UserReportingTypesFactory.create(
        user_type=ut_emp, reporting_type=rit_dead)
    UserReportingTypesFactory.create(
        user_type=ut_emp, reporting_type=rit_maybe_dead, is_active=False)
    UserReportingTypesFactory.create(
        user_type=ut_emp_dead, reporting_type=rit_wrong)
    UserReportingTypesFactory.create(
        user_type=ut_staff, reporting_type=rit_comp)

    ReportType.objects.all().delete()
    rt_partners = ReportTypeFactory(
        report_type="partners",
        description="Partners Report",
        datasource="partners")
    rt_con = ReportTypeFactory(
        report_type="contacts",
        description="Contacts Report",
        datasource="contacts")
    rt_comm = ReportTypeFactory(
        report_type="communication-records",
        description="Communication Records Report",
        datasource="comm_records")
    rt_state = ReportTypeFactory(
        report_type="state",
        description="State Report")
    rt_screen = ReportTypeFactory(
        report_type="screenshots",
        description="Screenshots Report")
    rt_dead = ReportTypeFactory(
        report_type="Dead",
        description="Dead Report",
        is_active=False)
    rt_maybe_dead = ReportTypeFactory(
        report_type="Maybe Dead",
        description="Maybe Dead Report")

    ReportingTypeReportTypes.objects.all().delete()
    ReportingTypeReportTypesFactory.create(
        report_type=rt_partners, reporting_type=rit_prm)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_con, reporting_type=rit_prm)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_comm, reporting_type=rit_prm)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_dead, reporting_type=rit_prm)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_maybe_dead, reporting_type=rit_prm,
        is_active=False)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_state, reporting_type=rit_comp)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_screen, reporting_type=rit_comp)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_dead, reporting_type=rit_comp)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_maybe_dead, reporting_type=rit_prm,
        is_active=False)

    DataType.objects.all().delete()
    dt_dead = DataTypeFactory.create(
        data_type="",
        description="Dead",
        is_active=False)
    dt_maybe_dead = DataTypeFactory.create(
        data_type="",
        description="Maybe Dead")
    dt_unagg = DataTypeFactory.create(
        data_type="unaggregated",
        description="Unaggregated")
    dt_count_comm_per_month_per_partner = DataTypeFactory.create(
        is_active=False,
        data_type="count_comm_rec_per_month",
        description="Number of Communication Records per Month per Partner")

    PresentationType.objects.all().delete()
    pre_dead = PresentationTypeFactory.create(
        description="Inactive", is_active=False)
    pre_maybe_dead = PresentationTypeFactory.create(
        description="Maybe Inactive")
    pre_csv = PresentationTypeFactory.create(
        presentation_type="csv", description="Unformatted CSV")
    pre_xlsx = PresentationTypeFactory.create(
        presentation_type="xlsx", description="Excel xlsx")
    pre_json = PresentationTypeFactory.create(
        is_active=False,
        presentation_type="json_pass",
        description="JSON Passthrough")

    Configuration.objects.all().delete()
    con_dead = ConfigurationFactory.create(
        name="Inactive", is_active=False)
    ConfigurationFactory.create(
        name="Maybe Inactive")
    con_con = ConfigurationFactory.create(
        name="Contact Basic Report")
    con_part = ConfigurationFactory.create(
        name="Partner Basic Report")
    con_comm = ConfigurationFactory.create(
        name="Communication Records Basic Report")
    con_comm_count = ConfigurationFactory.create(
        name="Partners Comm Record Count Per Month Report")

    ConfigurationColumn.objects.all().delete()
    ConfigurationColumnFactory.create(
        column_name="date",
        alias='Date',
        order=100,
        configuration=con_con,
        output_format="us_datetime",
        filter_interface_type='date_range',
        filter_interface_display='Date',
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="locations",
        alias='Location',
        order=101,
        output_format="city_state_list",
        filter_interface_type='city_state',
        filter_interface_display='Location',
        configuration=con_con,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(
        column_name="tags",
        alias='Tags',
        order=102,
        output_format="tags_list",
        filter_interface_type='tags',
        filter_interface_display='Tags',
        configuration=con_con,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(
        column_name="partner",
        alias='Partners',
        order=103,
        output_format="text",
        filter_interface_type='search_multiselect',
        filter_interface_display='Partners',
        configuration=con_con,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(
        column_name="dead",
        output_format="text",
        configuration=con_con,
        multi_value_expansion=False,
        is_active=False)
    ConfigurationColumnFactory.create(
        column_name="name",
        alias="Name",
        order=104,
        output_format="text",
        configuration=con_con,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="email",
        alias="Email",
        order=105,
        output_format="text",
        configuration=con_con,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="phone",
        alias="Phone",
        order=106,
        output_format="text",
        configuration=con_con,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="notes",
        alias="Notes",
        order=107,
        output_format="text",
        configuration=con_con,
        multi_value_expansion=False)

    ConfigurationColumnFactory.create(
        column_name="date",
        alias="Date",
        order=100,
        configuration=con_part,
        output_format="us_datetime",
        filter_interface_type='date_range',
        filter_interface_display='Date',
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        order=101,
        column_name="locations",
        alias='Contact Location',
        filter_interface_type='city_state',
        filter_interface_display='Contact Location',
        filter_only=True,
        configuration=con_part,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(
        column_name="tags",
        alias='Tags',
        order=102,
        output_format="tags_list",
        filter_interface_type='tags',
        filter_interface_display='Tags',
        configuration=con_part,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(
        column_name="uri",
        alias='URL',
        order=103,
        output_format="text",
        filter_interface_type='search_select',
        filter_interface_display='URL',
        configuration=con_part,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="data_source",
        alias='Source',
        order=104,
        output_format="text",
        filter_interface_type='search_select',
        filter_interface_display='Source',
        configuration=con_part,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="name",
        alias="Name",
        order=105,
        output_format="text",
        configuration=con_part,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="primary_contact",
        alias="Primary Contact",
        order=106,
        output_format="text",
        configuration=con_part,
        multi_value_expansion=False)

    ConfigurationColumnFactory.create(
        column_name="date_time",
        alias="Date of Communication",
        order=107,
        configuration=con_comm,
        output_format="us_datetime",
        filter_interface_type='date_range',
        filter_interface_display='Date',
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        order=108,
        column_name="locations",
        alias='Contact Location',
        filter_interface_type='city_state',
        filter_interface_display='Contact Location',
        filter_only=True,
        configuration=con_comm,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(
        column_name="tags",
        alias='Tags',
        order=109,
        output_format="tags_list",
        filter_interface_type='tags',
        filter_interface_display='Tags',
        configuration=con_comm,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(
        column_name="communication_type",
        alias='Communication Type',
        order=110,
        filter_interface_type='search_multiselect',
        filter_interface_display='Communication Type',
        configuration=con_comm,
        output_format="comm_types_list",
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="partner",
        alias='Partners',
        order=111,
        output_format="text",
        filter_interface_type='search_multiselect',
        filter_interface_display='Partners',
        configuration=con_comm,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(
        column_name="contact",
        alias='Contacts',
        order=112,
        output_format="text",
        filter_interface_type='search_multiselect',
        filter_interface_display='Contacts',
        configuration=con_comm,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(
        column_name="contact_email",
        alias="Contact Email",
        order=113,
        output_format="text",
        configuration=con_comm,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="contact_phone",
        alias="Contact Phone",
        order=114,
        configuration=con_comm,
        output_format="text",
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="created_on",
        alias="Created On",
        order=115,
        configuration=con_comm,
        output_format="us_date",
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="created_by",
        alias="Created By",
        order=116,
        configuration=con_comm,
        output_format="text",
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="job_applications",
        alias="Job Applications",
        order=117,
        output_format="text",
        configuration=con_comm,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="job_hires",
        alias="Job Hires",
        order=118,
        output_format="text",
        configuration=con_comm,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="job_id",
        alias="Job ID",
        order=119,
        output_format="text",
        configuration=con_comm,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="job_interviews",
        alias="Job Interviews",
        order=120,
        output_format="text",
        configuration=con_comm,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="last_action_time",
        order=121,
        output_format="us_datetime",
        configuration=con_comm,
        is_active=False,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="length",
        alias="Length",
        order=122,
        output_format="text",
        configuration=con_comm,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="location",
        alias="Location",
        order=123,
        output_format="text",
        configuration=con_comm,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="notes",
        alias="Notes",
        order=124,
        output_format="text",
        configuration=con_comm,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="subject",
        alias="Subject",
        order=125,
        output_format="text",
        configuration=con_comm,
        multi_value_expansion=False)

    ConfigurationColumnFactory.create(
        column_name="data_source",
        alias='Source',
        order=103,
        output_format="text",
        filter_interface_type='search_select',
        filter_interface_display='Source',
        configuration=con_comm_count,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="name",
        alias="Name",
        order=104,
        output_format="text",
        configuration=con_comm_count,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="date",
        alias='Date',
        order=105,
        configuration=con_comm_count,
        output_format="us_datetime",
        filter_interface_type='date_range',
        filter_interface_display='Date',
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="primary_contact",
        alias="Primary Contact",
        order=106,
        output_format="text",
        configuration=con_comm_count,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="tags",
        alias='Tags',
        order=107,
        output_format="tags_list",
        filter_interface_type='tags',
        filter_interface_display='Tags',
        configuration=con_comm_count,
        multi_value_expansion=False,
        has_help=True)
    ConfigurationColumnFactory.create(
        column_name="uri",
        alias='URL',
        order=108,
        output_format="text",
        filter_interface_type='search_select',
        filter_interface_display='URL',
        configuration=con_comm_count,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="year",
        alias='Year',
        order=109,
        output_format="text",
        configuration=con_comm_count,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="month",
        alias='Month',
        order=110,
        output_format="text",
        configuration=con_comm_count,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        column_name="comm_rec_count",
        alias='Communication Record Count',
        order=111,
        output_format="text",
        configuration=con_comm_count,
        multi_value_expansion=False)

    ReportTypeDataTypes.objects.all().delete()
    ReportTypeDataTypesFactory.create(
        report_type=rt_con, data_type=dt_dead,  configuration=con_con)
    ReportTypeDataTypesFactory.create(
        report_type=rt_con, data_type=dt_maybe_dead, is_active=False,
        configuration=con_con)
    ReportTypeDataTypesFactory.create(
        report_type=rt_con, data_type=dt_maybe_dead, is_active=False,
        configuration=con_dead)
    rtdt_con_unagg = ReportTypeDataTypesFactory.create(
        report_type=rt_con, data_type=dt_unagg, configuration=con_con)
    rtdt_part_unagg = ReportTypeDataTypesFactory.create(
        report_type=rt_partners, data_type=dt_unagg,
        configuration=con_part)
    rtdt_comm_unagg = ReportTypeDataTypesFactory.create(
        report_type=rt_comm, data_type=dt_unagg, configuration=con_comm)
    rtdt_comm_count_pmpp = ReportTypeDataTypesFactory.create(
        report_type=rt_partners, configuration=con_comm_count,
        data_type=dt_count_comm_per_month_per_partner)
    ReportTypeDataTypesFactory.create(
        report_type=rt_con, data_type=dt_unagg, is_active=False,
        configuration=con_dead)

    ReportPresentation.objects.all().delete()
    ReportPresentationFactory.create(
        presentation_type=pre_maybe_dead,
        display_name="Dead", report_data=rtdt_con_unagg, is_active=False)
    ReportPresentationFactory.create(
        presentation_type=pre_dead,
        display_name="Dead Presentation",
        report_data=rtdt_con_unagg, is_active=True)
    rtpt_con = ReportPresentationFactory.create(
        presentation_type=pre_csv,
        display_name="Contact CSV",
        report_data=rtdt_con_unagg, is_active=True)
    ReportPresentationFactory.create(
        presentation_type=pre_csv,
        display_name="Partner CSV",
        report_data=rtdt_part_unagg, is_active=True)
    ReportPresentationFactory.create(
        presentation_type=pre_csv,
        display_name="Communication Record CSV",
        report_data=rtdt_comm_unagg, is_active=True)
    rtpt_xlsx = ReportPresentationFactory.create(
        presentation_type=pre_xlsx,
        display_name="Contact Excel Spreadsheet",
        report_data=rtdt_con_unagg, is_active=True)
    ReportPresentationFactory.create(
        presentation_type=pre_xlsx,
        display_name="Partner Excel Spreadsheet",
        report_data=rtdt_part_unagg, is_active=True)
    ReportPresentationFactory.create(
        presentation_type=pre_xlsx,
        display_name="Communication Record Excel Spreadsheet",
        report_data=rtdt_comm_unagg, is_active=True)
    ReportPresentationFactory.create(
        presentation_type=pre_json,
        display_name="Partner JSON Passthrough",
        report_data=rtdt_part_unagg, is_active=True)
    ReportPresentationFactory.create(
        presentation_type=pre_json,
        display_name="Contact JSON Passthrough",
        report_data=rtdt_con_unagg, is_active=True)
    ReportPresentationFactory.create(
        presentation_type=pre_json,
        display_name="Communication Record JSON Passthrough",
        report_data=rtdt_comm_unagg, is_active=True)
    ReportPresentationFactory.create(
        presentation_type=pre_csv,
        display_name="Communication Record Count CSV",
        report_data=rtdt_comm_count_pmpp, is_active=True)
    ReportPresentationFactory.create(
        presentation_type=pre_json,
        display_name="Communication Record Count JSON Passthrough",
        report_data=rtdt_comm_count_pmpp, is_active=True)

    return {
        'user_type': {
            'dead': ut_emp_dead,
            'employee': ut_emp,
            'staff': ut_staff,
        },
        'reporting_type': {
            'prm': rit_prm,
            'compliance': rit_comp,
            'dead': rit_dead,
            'maybe_dead': rit_maybe_dead,
            'wrong': rit_wrong,
        },
        'report_type': {
            'partners': rt_partners,
            'contacts': rt_con,
            'communication_records': rt_comm,
            'state': rt_state,
            'screenshots': rt_screen,
            'dead': rt_dead,
            'maybe_dead': rt_maybe_dead,
        },
        'data_type': {
            'dead': dt_dead,
            'maybe_dead': dt_maybe_dead,
            'unaggregated': dt_unagg,
            'count_comm_per_month_per_partner':
                dt_count_comm_per_month_per_partner,
        },
        'presentation_type': {
            'dead': pre_dead,
            'maybe_dead': pre_maybe_dead,
            'csv': pre_csv,
            'xlsx': pre_xlsx,
            'json': pre_json,
        },
        'configuration': {
            'dead': con_dead,
            'contacts': con_con,
            'partners': con_part,
            'communication_records': con_comm,
            'communication_records_count': con_comm_count,
        },
        'report_type/data_type': {
            'contacts/unaggregated': rtdt_con_unagg,
            'partners/unaggregated': rtdt_part_unagg,
            'communication_records/unaggregated': rtdt_comm_unagg,
            'communication_records_count/unaggregated':
                rtdt_comm_count_pmpp,
        },
        'report_type/presentation_type': {
            'contacts/csv': rtpt_con,
            'contacts/xlsx': rtpt_xlsx,
        },
    }
Example #4
0
def create_full_fixture():
    """This fixture fills out all the dynamic reporting tables.

    Its purpose is to support unit and UI testing.

    WARNING: existing data is deleted from the tables to preserve stable ids
    and test behavior.

    It covers:
        * Standard known reports.
        * All known forms of inactive records for every table.
        * UI and "active_..." manager methods should never return or show
          an inactive record. So UI should never see "Dead" or "Maybe Dead"
          items.
    """

    # For each model create one or more plausible active records.
    # - If a reference to this record isn't needed, don't make a variable for
    #   it.
    # - Otherwise, the variable name is short but named like:
    #   modelabbreviation_purpose
    # Also create an inactive record.
    # - If a variable is needed, name the variable "..._dead".
    # Also, create an active version of the record meant to be linked via an
    # inactive through record.
    # - If a variable is needed, name the variable "..._maybe_dead".

    # Delete all
    UserType.objects.all().delete()
    ut_emp_dead = UserTypeFactory.create(
        id=1, user_type="EMPLOYER", is_active=False)
    ut_emp = UserTypeFactory.create(id=2, user_type="EMPLOYER")
    ut_staff = UserTypeFactory.create(id=3, user_type="STAFF")

    ReportingType.objects.all().delete()
    rit_prm = ReportingTypeFactory.create(
        id=1,
        reporting_type="PRM",
        description="PRM Reports")
    rit_comp = ReportingTypeFactory.create(
        id=2,
        reporting_type="Compliance",
        description="Compliance Reports")
    rit_dead = ReportingTypeFactory.create(
        id=3,
        reporting_type="Dead",
        description="Dead Reports",
        is_active=False)
    rit_maybe_dead = ReportingTypeFactory.create(
        id=4,
        reporting_type="Maybe Dead",
        description="Maybe Dead Reports",
        is_active=False)
    rit_wrong = ReportingTypeFactory.create(
        id=5,
        reporting_type="Wrong UT",
        description="Wrong UserType")

    UserReportingTypes.objects.all().delete()
    UserReportingTypesFactory.create(
        user_type=ut_emp, reporting_type=rit_prm)
    UserReportingTypesFactory.create(
        user_type=ut_emp, reporting_type=rit_dead)
    UserReportingTypesFactory.create(
        user_type=ut_emp, reporting_type=rit_maybe_dead, is_active=False)
    UserReportingTypesFactory.create(
        user_type=ut_emp_dead, reporting_type=rit_wrong)
    UserReportingTypesFactory.create(
        user_type=ut_staff, reporting_type=rit_comp)

    ReportType.objects.all().delete()
    rt_partners = ReportTypeFactory(
        id=1,
        report_type="Partners",
        description="Partners Report")
    rt_con = ReportTypeFactory(
        id=2,
        report_type="Contacts",
        description="Contacts Report")
    rt_comm = ReportTypeFactory(
        id=3,
        report_type="Communication Records",
        description="Communication Records Report")
    rt_state = ReportTypeFactory(
        id=4,
        report_type="State",
        description="State Report")
    rt_screen = ReportTypeFactory(
        id=5,
        report_type="Screenshots",
        description="Screenshots Report")
    rt_dead = ReportTypeFactory(
        id=6,
        report_type="Dead",
        description="Dead Report",
        is_active=False)
    rt_maybe_dead = ReportTypeFactory(
        id=7,
        report_type="Maybe Dead",
        description="Maybe Dead Report")

    ReportingTypeReportTypes.objects.all().delete()
    ReportingTypeReportTypesFactory.create(
        report_type=rt_partners, reporting_type=rit_prm)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_con, reporting_type=rit_prm)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_comm, reporting_type=rit_prm)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_dead, reporting_type=rit_prm)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_maybe_dead, reporting_type=rit_prm,
        is_active=False)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_state, reporting_type=rit_comp)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_screen, reporting_type=rit_comp)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_dead, reporting_type=rit_comp)
    ReportingTypeReportTypesFactory.create(
        report_type=rt_maybe_dead, reporting_type=rit_prm,
        is_active=False)

    DataType.objects.all().delete()
    dt_dead = DataTypeFactory.create(
        id=1,
        data_type="Dead",
        description="Dead Data Type",
        is_active=False)
    dt_maybe_dead = DataTypeFactory.create(
        id=2,
        data_type="Maybe Dead",
        description="Maybe Dead Data Type")
    dt_unagg = DataTypeFactory.create(
        id=3,
        data_type="Unaggregated",
        description="Unaggregated Data Type")

    ReportTypeDataTypes.objects.all().delete()
    ReportTypeDataTypesFactory.create(
        report_type=rt_con, data_type=dt_dead)
    ReportTypeDataTypesFactory.create(
        report_type=rt_con, data_type=dt_maybe_dead, is_active=False)
    rtdt_conn_unagg = ReportTypeDataTypesFactory.create(
        report_type=rt_con, data_type=dt_unagg)

    PresentationType.objects.all().delete()
    pre_dead = PresentationTypeFactory.create(
        id=1, presentation_type="Inactive", is_active=False)
    pre_maybe_dead = PresentationTypeFactory.create(
        id=2, presentation_type="Maybe Inactive")
    pre_csv = PresentationTypeFactory.create(
        id=3, presentation_type="Unformatted CSV")

    Configuration.objects.all().delete()
    con_dead = ConfigurationFactory.create(
        id=1, name="Inactive", is_active=False)
    ConfigurationFactory.create(
        id=2, name="Maybe Inactive")
    con_con = ConfigurationFactory.create(
        id=3, name="Basic Report")

    InterfaceElementType.objects.all().delete()
    int_dead = InterfaceElementTypeFactory.create(
        id=1,
        interface_element_type="inactive",
        description="Inactive Element Type",
        element_code="div",
        is_active=False)

    Column.objects.all().delete()
    col_1 = ColumnFactory.create(
        id=1,
        column_name=u'inactive-zzz',
        is_active=False)
    col_2 = ColumnFactory.create(
        id=2,
        column_name=u'maybe-inactive-zzz')
    col_4 = ColumnFactory.create(
        id=4,
        column_name=u'name')
    col_5 = ColumnFactory.create(
        id=5,
        column_name=u'email')
    col_6 = ColumnFactory.create(
        id=6,
        column_name=u'locations')
    col_7 = ColumnFactory.create(
        id=7,
        column_name=u'tags')
    col_8 = ColumnFactory.create(
        id=8,
        column_name=u'partner')

    ConfigurationColumn.objects.all().delete()
    ConfigurationColumnFactory.create(
        id=1,
        configuration=con_con,
        interface_element_type=int_dead,
        column=col_1,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=2,
        configuration=con_con,
        interface_element_type=int_dead,
        column=col_2,
        multi_value_expansion=False,
        is_active=False)
    ConfigurationColumnFactory.create(
        id=4,
        configuration=con_con,
        interface_element_type=int_dead,
        column=col_4,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=5,
        configuration=con_con,
        interface_element_type=int_dead,
        column=col_5,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=6,
        configuration=con_con,
        interface_element_type=int_dead,
        column=col_6,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=7,
        configuration=con_con,
        interface_element_type=int_dead,
        column=col_7,
        multi_value_expansion=False)
    ConfigurationColumnFactory.create(
        id=8,
        configuration=con_con,
        interface_element_type=int_dead,
        column=col_8,
        multi_value_expansion=False)

    ReportPresentation.objects.all().delete()
    ReportPresentationFactory.create(
        id=1, presentation_type=pre_maybe_dead, configuration=con_con,
        display_name="Dead", report_data=rtdt_conn_unagg, is_active=False)
    ReportPresentationFactory.create(
        id=2, presentation_type=pre_dead, configuration=con_con,
        display_name="Dead Presentation",
        report_data=rtdt_conn_unagg, is_active=True)
    ReportPresentationFactory.create(
        id=3, presentation_type=pre_csv, configuration=con_con,
        display_name="Contact CSV",
        report_data=rtdt_conn_unagg, is_active=True)
    ReportPresentationFactory.create(
        id=4, presentation_type=pre_csv, configuration=con_dead,
        display_name="Dead Configuration",
        report_data=rtdt_conn_unagg, is_active=True)