def __init__(self, data_provider, output):
        self.output = output
        self.data_provider = data_provider
        self.project_name = self.data_provider.project_name
        self.session_uid = self.data_provider.session_uid
        self.products = self.data_provider[Data.PRODUCTS]
        self.all_products = self.data_provider[Data.ALL_PRODUCTS]
        self.match_product_in_scene = self.data_provider[Data.MATCHES]
        self.visit_date = self.data_provider[Data.VISIT_DATE]
        self.session_info = self.data_provider[Data.SESSION_INFO]
        self.scene_info = self.data_provider[Data.SCENES_INFO]
        self.store_id = self.data_provider[Data.STORE_FK]
        self.scif = self.data_provider[Data.SCENE_ITEM_FACTS]
        self.rds_conn = PSProjectConnector(self.project_name,
                                           DbUsers.CalculationEng)
        self.store_info = self.data_provider[Data.STORE_INFO]
        self.store_type = self.store_info['additional_attribute_1'].values[0]
        self.kpi_static_data = self.get_kpi_static_data()
        self.set_templates_data = {}
        self.match_display_in_scene = self.get_match_display()
        self.kpi_results_queries = []
        self.scores = {self.LEVEL1: {}, self.LEVEL2: {}, self.LEVEL3: {}}

        self.output = output
        self.common = Common(self.data_provider)
        self.commonV2 = CommonV2(self.data_provider)
        self.global_gen = DIAGEOGenerator(self.data_provider, self.output,
                                          self.common)
        self.tools = DIAGEOToolBox(
            self.data_provider,
            output,
            match_display_in_scene=self.match_display_in_scene
        )  # replace the old one
        self.diageo_generator = DIAGEOGenerator(self.data_provider,
                                                self.output, self.common)
Esempio n. 2
0
 def __init__(self, data_provider, output):
     self.data_provider = data_provider
     self.scif = self.data_provider[Data.SCENE_ITEM_FACTS]
     self.output = output
     self.common = Common(self.data_provider)
     self.commonV2 = CommonV2(self.data_provider)
     self.diageo_generator = DIAGEOGenerator(self.data_provider, self.output, self.common)
 def __init__(self, data_provider, output):
     self.k_engine = BaseCalculationsScript(data_provider, output)
     self.output = output
     self.data_provider = data_provider
     self.project_name = self.data_provider.project_name
     self.session_uid = self.data_provider.session_uid
     self.products = self.data_provider[Data.PRODUCTS]
     self.all_products = self.data_provider[Data.ALL_PRODUCTS]
     self.match_product_in_scene = self.data_provider[Data.MATCHES]
     self.visit_date = self.data_provider[Data.VISIT_DATE]
     self.session_info = self.data_provider[Data.SESSION_INFO]
     self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng)
     self.store_info = self.data_provider[Data.STORE_INFO]
     self.store_id = self.data_provider[Data.STORE_FK]
     self.store_channel = self.store_info['store_type'].values[0]
     if self.store_channel:
         self.store_channel = self.store_channel.upper()
     self.store_type = self.store_info['additional_attribute_1'].values[0]
     self.segment = self.get_business_unit_name()
     self.scene_info = self.data_provider[Data.SCENES_INFO]
     self.scif = self.data_provider[Data.SCENE_ITEM_FACTS]
     self.match_display_in_scene = self.get_match_display()
     self.set_templates_data = {}
     self.kpi_static_data = self.get_kpi_static_data()
     self.tools = DIAGEOToolBox(self.data_provider, output, match_display_in_scene=self.match_display_in_scene)
     self.kpi_results_queries = []
     self.common = Common(self.data_provider)
     self.commonV2 = CommonV2(self.data_provider)
     self.diageo_generator = DIAGEOGenerator(self.data_provider, self.output, self.common)
 def __init__(self, data_provider, output):
     self.output = output
     self.data_provider = data_provider
     self.project_name = data_provider.project_name
     self.scif = self.data_provider[Data.SCENE_ITEM_FACTS]
     self.common = Common(self.data_provider)
     self.commonV2 = CommonV2(self.data_provider)
     self.diageo_generator = DIAGEOGenerator(self.data_provider, self.output, self.common)
     self.template_handler = TemplateHandler(self.project_name)
Esempio n. 5
0
 def __init__(self, data_provider, output=None):
     super(DiageoUtil, self).__init__(data_provider)
     self.data_provider = data_provider
     self.store_id = self.data_provider[Data.STORE_FK]
     self.scif = self.data_provider[Data.SCENE_ITEM_FACTS]
     self.diageo_generator = DIAGEOGenerator(self.data_provider, output, common=None, menu=True)
     self.diageo_manufacturer = int(self.data_provider.own_manufacturer.param_value.values[0])
     self.template_handler = TemplateHandler(self.data_provider.project_name)
     self.template_handler.update_templates()
     self.assortment = Assortment(self.data_provider)
     self.assortment_lvl3_results = self.assortment.calculate_lvl3_assortment()
    def main_calculation(self, set_names):
        """
        This function calculates the KPI results.
        """
        # Global assortment kpis
        assortment_res_dict = DIAGEOGenerator(self.data_provider, self.output,
                                              self.common).diageo_global_assortment_function_v2()
        self.commonV2.save_json_to_new_tables(assortment_res_dict)

        for set_name in set_names:
            set_score = 0
            if set_name not in self.tools.KPI_SETS_WITHOUT_A_TEMPLATE and set_name not in self.set_templates_data.keys():
                self.set_templates_data[set_name] = self.tools.download_template(set_name)


            # Global Visible to Customer / Visible to Consumer
            if set_name in ('Visible to Consumer %', 'Visible to Customer'):
                # Global function
                sku_list = filter(None, self.scif[self.scif['product_type'] == 'SKU'].product_ean_code.tolist())
                res_dict = self.diageo_generator.diageo_global_visible_percentage(sku_list)
                self.commonV2.save_json_to_new_tables(res_dict)

                # Saving to old tables
                filters = {self.tools.VISIBILITY_PRODUCTS_FIELD: 'Y'}
                set_score = self.tools.calculate_visible_percentage(visible_filters=filters)
                self.save_level2_and_level3(set_name, set_name, set_score)

            # Global relative position
            elif set_name in ('Relative Position'):
                # Global function
                res_dict = self.diageo_generator.diageo_global_relative_position_function(
                            self.set_templates_data[set_name], location_type='template_display_name')

                self.commonV2.save_json_to_new_tables(res_dict)

                # since migration is imminent, we aren't using self.tools within the project folder
                set_score = self.calculate_relative_position_sets(set_name)

            # elif set_name in ('MPA', 'New Products',):
            #     set_score = self.calculate_assortment_sets(set_name)

            else:
                continue

            if set_score == 0:
                pass
            elif set_score is False:
                continue

            set_fk = self.kpi_static_data[self.kpi_static_data['kpi_set_name'] == set_name]['kpi_set_fk'].values[0]
            self.write_to_db_result(set_fk, set_score, self.LEVEL1)

        # commiting to new tables
        self.commonV2.commit_results_data()
 def __init__(self, data_provider, output):
     self.data_provider = data_provider
     self.project_name = self.data_provider.project_name
     self.ps_data_provider = PsDataProvider(data_provider)
     self.store_id = self.data_provider[Data.STORE_FK]
     self.scif = self.data_provider[Data.SCENE_ITEM_FACTS]
     self.output = output
     self.common = Common(self.data_provider)
     self.commonV2 = CommonV2(self.data_provider)
     self.diageo_generator = DIAGEOGenerator(self.data_provider,
                                             self.output, self.common)
     self.rds_conn = PSProjectConnector(self.project_name,
                                        DbUsers.CalculationEng)
     self.session_uid = self.data_provider.session_uid
Esempio n. 8
0
 def calculate_kpis(self):
     # self.timer.start()
     # self.scene_generator.scene_score()
     template_path = os.path.join(
         os.path.dirname(os.path.dirname(os.path.realpath(__file__))),
         'Data', 'Brand Score.xlsx')
     diageo_generator = DIAGEOGenerator(self._data_provider, None,
                                        self.common)
     diageo_generator.diageo_global_tap_brand_score_function(
         template_path=template_path,
         rank_kpi=False,
         sub_category_rank_kpi=False,
         save_scene_level=True,
         calculate_components=True)
     self.common.commit_results_data(result_entity='scene')
 def __init__(self, data_provider, output):
     self.data_provider = data_provider
     self.commonV2 = CommonV2(self.data_provider)
     self.rds_conn = PSProjectConnector(self.data_provider.project_name, DbUsers.CalculationEng)
     self.store_assortment = PSAssortmentDataProvider(self.data_provider).execute(policy_name=None)
     self.output = output
     self.kpi_static_data = self.get_kpi_static_data()
     self.store_id = self.data_provider[Data.STORE_FK]
     self.own_manufacturer_fk = 12
     self.store_info = self.get_store_info(self.store_id)
     self.scif = self.data_provider[Data.SCENE_ITEM_FACTS]
     self.all_templates = self.data_provider[Data.ALL_TEMPLATES]
     self.common = Common(self.data_provider)
     self.scene_info = self.data_provider[Data.SCENES_INFO]
     self.diageo_generator = DIAGEOGenerator(self.data_provider, self.output, self.common)
     self.template_handler = TemplateHandler(self.data_provider.project_name)
     self.template_path = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'Data')
     self.template_path = os.path.join(self.template_path, "Template.xlsx")
     self.kpi_template_data = parse_template(self.template_path, sheet_name='KPI')
     self.store_info = self.data_provider[Data.STORE_INFO]
     self.current_date = datetime.now()
 def __init__(self, data_provider):
     super(DIAGEOUKSceneToolBox, self).__init__(data_provider)
     self.common = Common(self._data_provider)
     self.diageo_generator = DIAGEOGenerator(self._data_provider, None,
                                             self.common)
Esempio n. 11
0
 def run_project_calculations(self):
     self.timer.start()
     DIAGEOGenerator(self.data_provider,
                     self.output).diageo_global_main_function()
     self.timer.stop('KPIGenerator.run_project_calculations')