def generate_item_feedback_report(user, host_name, items_feedback): csv_export_service = ItemFeedbackReportExporter(host_name) CSVExportService.generate(csv_export_service.assemble_csv_data(items_feedback), csv_export_service.export_category, csv_export_service.get_export_csv_file_name()) CSVExportService.notify(user, *csv_export_service.notification_details())
def generate_item_feedback_report(user, host_name, items_feedback): items_with_item_received_info = map(set_item_received_to_report_item, items_feedback) items_feedback_with_contact = map(set_remote_contact_to_report_item, items_with_item_received_info) csv_export_service = ItemFeedbackReportExporter(host_name) CSVExportService.generate(csv_export_service.assemble_csv_data(items_feedback_with_contact), csv_export_service.export_category, csv_export_service.get_export_csv_file_name()) CSVExportService.notify(user, *csv_export_service.notification_details())
def test_generate_item_feedback_report_should_return_correct_notification_details(self, generate_exported_csv_file_name): file_name = 'items_feedback_report_1448892495779.csv' generate_exported_csv_file_name.return_value = file_name item_feedback_report_csv_export = ItemFeedbackReportExporter(self.HOSTNAME) category = 'report/feedback' details = ('Item Feedback Report Download', '%s some content Item Feedback Report other content http://ha.ha/static/exports/' + category + '/' + file_name) self.assertEqual(item_feedback_report_csv_export.notification_details(), details)
def test_generate_item_feedback_report_should_return_correct_notification_details(self, generate_exported_csv_file_name): file_name = 'items_feedback_report_1448892495779.csv' generate_exported_csv_file_name.return_value = file_name item_feedback_report_csv_export = ItemFeedbackReportExporter(self.HOSTNAME) category = 'report/feedback' export_label = item_feedback_report_csv_export.export_label details = (settings_export.EMAIL_COMMON_SUBJECT, settings_export.EMAIL_NOTIFICATION_CONTENT.format(export_label, 'http://ha.ha/static/exports/' + category + '/' + file_name, CSV_EXPIRED_HOURS)) self.assertEqual(item_feedback_report_csv_export.notification_details(), details)
def test_generate_item_feedback_report_should_return_correct_notification_details( self, generate_exported_csv_file_name): file_name = 'items_feedback_report_1448892495779.csv' generate_exported_csv_file_name.return_value = file_name item_feedback_report_csv_export = ItemFeedbackReportExporter( self.HOSTNAME) category = 'report/feedback' export_label = item_feedback_report_csv_export.export_label details = (settings_export.EMAIL_COMMON_SUBJECT, settings_export.EMAIL_NOTIFICATION_CONTENT.format( export_label, 'http://ha.ha/static/exports/' + category + '/' + file_name, CSV_EXPIRED_HOURS)) self.assertEqual( item_feedback_report_csv_export.notification_details(), details)
def test_assemble_csv_data(self): item_description = 'Cable binder black2.5x100mm' programme = {'id': 1, 'name': ''} tree_position = 'IMPLEMENTING_PARTNER' consignee = 'WAKISO DHO' implementing_partner = 'WAKISO DHO' order_number = 81020737 quantity_shipped = 4 value = 4.48 answers = {'qualityOfProduct': 'Good', 'amountReceived': 4, 'itemReceived': 'Yes', 'satisfiedWithProduct': 'Yes', 'additionalDeliveryComments': ''} amount_received = 4 quality_of_product = 'Good' satisfied_with_product = 'Yes' additional_delivery_comments = '' items_feedback = [{'tree_position': tree_position, 'additionalDeliveryComments': additional_delivery_comments, 'qualityOfProduct': quality_of_product, 'amountReceived': amount_received, 'consignee': consignee, 'answers': answers, 'satisfiedWithProduct': satisfied_with_product, 'implementing_partner': implementing_partner, 'value': value, 'programme': programme, 'order_number': order_number, 'item_description': item_description, 'quantity_shipped': quantity_shipped}, ] row_value = [ item_description, programme.get('name'), implementing_partner, consignee, tree_position, order_number, quantity_shipped, value, answers.get('itemReceived'), answers.get('dateOfReceipt'), amount_received, quality_of_product, satisfied_with_product, additional_delivery_comments, ] csv_exporter = ItemFeedbackReportExporter(self.HOSTNAME) assembled_data = csv_exporter.assemble_csv_data(items_feedback) header = csv_exporter.config_headers() expect_data = [header, row_value] self.assertEqual(expect_data, assembled_data) assemble_row_value = assembled_data[1] self.assertTrue(len(assembled_data) is 2) self.assertTrue(len(assemble_row_value) is len(header)) self.assertTrue(order_number in assemble_row_value) self.assertTrue(consignee in assemble_row_value) self.assertTrue(value in assemble_row_value) self.assertTrue(programme.get('name') in assemble_row_value) self.assertTrue(quantity_shipped in assemble_row_value) self.assertTrue(answers.get('itemReceived') in assemble_row_value) self.assertTrue(tree_position in assemble_row_value) self.assertTrue(satisfied_with_product in assemble_row_value) self.assertTrue(answers.get('dateOfReceipt') in assemble_row_value) self.assertTrue(implementing_partner in assemble_row_value) self.assertTrue(item_description in assemble_row_value) self.assertTrue(additional_delivery_comments in assemble_row_value) self.assertTrue(quality_of_product in assemble_row_value) self.assertTrue(amount_received in assemble_row_value)
def test_assemble_csv_data(self): item_description = 'Cable binder black2.5x100mm' programme = {'id': 1, 'name': ''} tree_position = 'IMPLEMENTING_PARTNER' consignee = 'WAKISO DHO' implementing_partner = 'WAKISO DHO' order_number = 81020737 quantity_shipped = 4 value = 4.48 answers = {'qualityOfProduct': 'Good', 'amountReceived': 4, 'itemReceived': 'Yes', 'satisfiedWithProduct': 'Yes', 'additionalDeliveryComments': ''} amount_received = 4 quality_of_product = 'Good' satisfied_with_product = 'Yes' additional_delivery_comments = '' first_name = 'Shenjian' last_name = 'Yuan' phone = '18192235667' contact_name = '%s %s' % (first_name, last_name) additional_remarks = 'additional remarks' items_feedback = [{'tree_position': tree_position, 'additionalDeliveryComments': additional_delivery_comments, 'qualityOfProduct': quality_of_product, 'amountReceived': amount_received, 'consignee': consignee, 'answers': answers, 'satisfiedWithProduct': satisfied_with_product, 'implementing_partner': implementing_partner, 'value': value, 'programme': programme, 'order_number': order_number, 'contactName': contact_name, 'contactPhone': phone, 'item_description': item_description, 'quantity_shipped': quantity_shipped, 'additional_remarks': additional_remarks }, ] row_value = [ item_description, programme.get('name'), implementing_partner, consignee, tree_position, contact_name, phone, order_number, quantity_shipped, value, answers.get('itemReceived'), answers.get('dateOfReceipt'), amount_received, quality_of_product, satisfied_with_product, additional_delivery_comments, additional_remarks ] csv_exporter = ItemFeedbackReportExporter(self.HOSTNAME) assembled_data = csv_exporter.assemble_csv_data(items_feedback) header = csv_exporter.config_headers() expect_data = [header, row_value] self.assertEqual(expect_data, assembled_data) self.assertTrue(len(assembled_data) is 2)
def test_assemble_csv_data(self): item_description = 'Cable binder black2.5x100mm' programme = {'id': 1, 'name': ''} tree_position = 'IMPLEMENTING_PARTNER' consignee = 'WAKISO DHO' implementing_partner = 'WAKISO DHO' order_number = 81020737 quantity_shipped = 4 value = 4.48 answers = { 'qualityOfProduct': 'Good', 'amountReceived': 4, 'itemReceived': 'Yes', 'satisfiedWithProduct': 'Yes', 'additionalDeliveryComments': '' } amount_received = 4 quality_of_product = 'Good' satisfied_with_product = 'Yes' additional_delivery_comments = '' first_name = 'Shenjian' last_name = 'Yuan' phone = '18192235667' contact_name = '%s %s' % (first_name, last_name) additional_remarks = 'additional remarks' items_feedback = [ { 'tree_position': tree_position, 'additionalDeliveryComments': additional_delivery_comments, 'qualityOfProduct': quality_of_product, 'amountReceived': amount_received, 'consignee': consignee, 'answers': answers, 'satisfiedWithProduct': satisfied_with_product, 'implementing_partner': implementing_partner, 'value': value, 'programme': programme, 'order_number': order_number, 'contactName': contact_name, 'contactPhone': phone, 'item_description': item_description, 'quantity_shipped': quantity_shipped, 'additional_remarks': additional_remarks }, ] row_value = [ item_description, programme.get('name'), implementing_partner, consignee, tree_position, contact_name, phone, order_number, quantity_shipped, value, answers.get('itemReceived'), answers.get('dateOfReceipt'), amount_received, quality_of_product, satisfied_with_product, additional_delivery_comments, additional_remarks ] csv_exporter = ItemFeedbackReportExporter(self.HOSTNAME) assembled_data = csv_exporter.assemble_csv_data(items_feedback) header = csv_exporter.config_headers() expect_data = [header, row_value] self.assertEqual(expect_data, assembled_data) self.assertTrue(len(assembled_data) is 2)