mangroveorg/datawinners

View on GitHub
datawinners/custom_reports/crs/handler.py

Summary

Maintainability
A
0 mins
Test Coverage
from datawinners.custom_reports.crs.models import PhysicalInventorySheet, WayBillSent, WayBillReceived,\
    crs_model_creator, way_bill_sent_mapping, way_bill_received_mapping, way_bill_sent_by_site_mapping,\
    way_bill_received_by_site_mapping, Distribution, sfm_distribution_mapping, sfe_distribution_mapping,\
    ffa_distribution_mapping, BillOfLading, bill_of_lading_mapping, BreakBulkSent, break_bulk_sent_mapping,\
    WayBillReceivedPort, break_bulk_received_at_port_mapping, ContainerSent, container_sent_mapping,\
    container_received_at_port_mapping, BAV, ffa_bav_mapping, sf_bav_mapping, cps_bav_mapping, cps_bav_defaults,\
    NumberOfRecipientServed, sfm_no_of_recipient_defaults, sfe_no_of_recipient_defaults, cps_no_of_recipient_defaults,\
    ffa_no_of_recipient_defaults, DistributionAtCPS, crs_record_delete, PackingList, packing_list_mapping

from datawinners.custom_reports.crs.models import sfm_distribution_defaults, ffa_distribution_defaults,\
    sfe_distribution_defaults, ffa_bav_defaults

from datawinners.settings import WAYBILL_SENT_QUESTIONNAIRE_CODE, WAYBILL_RECEIVED_QUESTIONNAIRE_CODE,\
    PHYSICAL_INVENTORY_QUESTIONNAIRE_CODE, WAYBILL_SENT_BY_SITE, WAYBILL_RECEIVED_BY_SITE, WAYBILL_RECEIVED_BY_WH,\
    SFM_DISTRIBUTION_CODE, SFE_DISTRIBUTION_CODE, FFA_DISTRIBUTION_CODE, BILL_OF_LADING_QUESTIONNAIRE_CODE,\
    BREAK_BULK_SENT_QUESTIONNAIRE_CODE, BREAK_BULK_RECEIVED_PORT_QUESTIONNAIRE_CODE, CONTAINER_SENT_QUESTIONNAIRE_CODE,\
    CONTAINER_RECEIVED_PORT_QUESTIONNAIRE_CODE, BAV_FFA_CODE, BAV_SF_CODE, BAV_CPS_CODE, NO_OF_RECIPIENT_SFM_CODE,\
    NO_OF_RECIPIENT_SFE_CODE, NO_OF_RECIPIENT_CPS_CODE, NO_OF_RECIPIENT_FFA_CODE, CPS_DISTRIBUTION_CODE,\
    PACKING_LIST_QUESTIONNAIRE_CODE


model_routing_dict = {
    WAYBILL_SENT_QUESTIONNAIRE_CODE: {'model': WayBillSent, 'question_mapping': way_bill_sent_mapping},
    WAYBILL_SENT_BY_SITE: {'model': WayBillSent, 'question_mapping': way_bill_sent_by_site_mapping},
    WAYBILL_RECEIVED_QUESTIONNAIRE_CODE: {'model': WayBillReceived, 'question_mapping': way_bill_received_mapping},
    WAYBILL_RECEIVED_BY_WH: {'model': WayBillReceived, 'question_mapping': way_bill_received_mapping},
    WAYBILL_RECEIVED_BY_SITE: {'model': WayBillReceived, 'question_mapping': way_bill_received_by_site_mapping},
    PHYSICAL_INVENTORY_QUESTIONNAIRE_CODE: {'model': PhysicalInventorySheet},
    BILL_OF_LADING_QUESTIONNAIRE_CODE: {'model': BillOfLading, 'question_mapping': bill_of_lading_mapping},
    BREAK_BULK_SENT_QUESTIONNAIRE_CODE: {'model': BreakBulkSent, 'question_mapping': break_bulk_sent_mapping},
    BREAK_BULK_RECEIVED_PORT_QUESTIONNAIRE_CODE: {'model': WayBillReceivedPort,
                                                  'question_mapping': break_bulk_received_at_port_mapping},
    CONTAINER_SENT_QUESTIONNAIRE_CODE: {'model': ContainerSent, 'question_mapping': container_sent_mapping},
    CONTAINER_RECEIVED_PORT_QUESTIONNAIRE_CODE: {'model': WayBillReceivedPort,
                                                 'question_mapping': container_received_at_port_mapping},
    FFA_DISTRIBUTION_CODE: {'model': Distribution, 'question_mapping': ffa_distribution_mapping,
                            'defaults': ffa_distribution_defaults},
    SFE_DISTRIBUTION_CODE: {'model': Distribution, 'question_mapping': sfe_distribution_mapping,
                            'defaults': sfe_distribution_defaults},
    SFM_DISTRIBUTION_CODE: {'model': Distribution, 'question_mapping': sfm_distribution_mapping,
                            'defaults': sfm_distribution_defaults},
    BAV_FFA_CODE: {'model': BAV, 'question_mapping': ffa_bav_mapping, 'defaults': ffa_bav_defaults},
    BAV_CPS_CODE: {'model': BAV, 'question_mapping': cps_bav_mapping, 'defaults': cps_bav_defaults},
    BAV_SF_CODE: {'model': BAV, 'question_mapping': sf_bav_mapping},
    NO_OF_RECIPIENT_SFM_CODE: {'model': NumberOfRecipientServed, 'defaults': sfm_no_of_recipient_defaults},
    NO_OF_RECIPIENT_SFE_CODE: {'model': NumberOfRecipientServed, 'defaults': sfe_no_of_recipient_defaults},
    NO_OF_RECIPIENT_FFA_CODE: {'model': NumberOfRecipientServed, 'defaults': ffa_no_of_recipient_defaults},
    NO_OF_RECIPIENT_CPS_CODE: {'model': NumberOfRecipientServed, 'defaults': cps_no_of_recipient_defaults},
    CPS_DISTRIBUTION_CODE: {'model': DistributionAtCPS},
    PACKING_LIST_QUESTIONNAIRE_CODE: {'model': PackingList, 'question_mapping': packing_list_mapping},
}

class CRSCustomReportHandler(object):
    def __init__(self, routing_dict=None):
        self.routing_dict = routing_dict or model_routing_dict

    def handle(self, form_code, submission_data, data_record_id):
        dictionary = self.routing_dict.get(form_code)
        if dictionary:
            crs_model_creator(data_record_id, submission_data, dictionary.get('model'),
                dictionary.get('question_mapping'), dictionary.get('defaults'))

    def delete_handler(self, form_code, data_record_id):
        dictionary = self.routing_dict.get(form_code)
        if dictionary:
            crs_record_delete(data_record_id, dictionary.get('model'))