diff --git a/apps/collection/models.py b/apps/collection/models.py index f8d02a80..e7f02591 100644 --- a/apps/collection/models.py +++ b/apps/collection/models.py @@ -976,8 +976,3 @@ class GuideElement(ProjectBaseMixin, MPTTModel): def __str__(self): """Overridden dunder method.""" return self.guide_element_type.name if self.guide_element_type else self.id - - @property - def advertorial_page(self): - if self.advertorial: - return self.advertorial.right_pages diff --git a/apps/collection/serializers/common.py b/apps/collection/serializers/common.py index fa218920..da33d271 100644 --- a/apps/collection/serializers/common.py +++ b/apps/collection/serializers/common.py @@ -239,10 +239,7 @@ class GuideElementExportSerializer(GuideElementBaseSerializer): default=None) metadata = serializers.ListField(source='establishment.metadata', default=None) - # advertorial_number_of_pages = serializers.IntegerField(source='number_of_pages', - # default=None) - # advertorial_right_pages = serializers.IntegerField(source='right_pages', - # default=None) + advertorial = serializers.DictField(source='advertorial.__dict__', default=None) # PRODUCT product_name = serializers.CharField(source='product.name', @@ -279,8 +276,7 @@ class GuideElementExportSerializer(GuideElementBaseSerializer): 'review', 'price_level', 'metadata', - # 'advertorial_number_of_pages', - # 'advertorial_right_pages', + 'advertorial', 'product_name', 'product_review', 'product_type', diff --git a/apps/utils/export.py b/apps/utils/export.py index 97272251..9a4630ff 100644 --- a/apps/utils/export.py +++ b/apps/utils/export.py @@ -381,7 +381,7 @@ class SendGuideExport(SendExportBase): return f'export_{name}.{self.file_type}' def get_headers(self): - headers = list(self.data[0].keys()) + headers = list(self.get_data()[0].keys()) headers.pop(headers.index('node_name')) self.success = True return headers @@ -431,29 +431,32 @@ class SendGuideExport(SendExportBase): objects = [] city_name = None section_name = None - advertorial_page = None + ad_number_of_pages = None + ad_right_pages = None - for instance in init_data: - row_advertorial_page = instance.get('advertorial_page') - if row_advertorial_page: - advertorial_page = row_advertorial_page + for row in init_data: + row_advertorial = row.pop('advertorial') + if row_advertorial: + ad_number_of_pages = row_advertorial.get('number_of_pages') + ad_right_pages = row_advertorial.get('right_pages') else: - instance['advertorial_page'] = advertorial_page + row['ad_number_of_pages'] = ad_number_of_pages + row['ad_right_pages'] = ad_right_pages - row_city = instance.get('city_name') + row_city = row.get('city_name') if row_city: city_name = row_city else: - instance['city_name'] = city_name + row['city_name'] = city_name - row_section = instance.get('node_name') + row_section = row.get('node_name') if row_section.endswith('SectionNode'): section_name = row_section else: - instance['section_name'] = section_name + row['section_name'] = section_name - if instance.pop('node_name', None) == 'EstablishmentNode': - objects.append(instance.items()) + if row.pop('node_name', None) == 'EstablishmentNode': + objects.append(row.items()) return objects def send(self): @@ -477,6 +480,9 @@ class SendGuideExport(SendExportBase): # Write headers to CSV file file_writer.writerow(file_header) city = None + ad_number_of_pages = None + ad_right_pages = None + for row in self.get_data(): row_city = row.get('city_name') if row_city: @@ -484,6 +490,14 @@ class SendGuideExport(SendExportBase): else: row['city_name'] = city + row_advertorial = row.get('advertorial') + if row_advertorial: + ad_number_of_pages = row_advertorial.get('number_of_pages') + ad_right_pages = row_advertorial.get('right_pages') + else: + row['ad_number_of_pages'] = ad_number_of_pages + row['ad_right_pages'] = ad_right_pages + if row.pop("node_name") == "EstablishmentNode": file_writer.writerow(row.values()) @@ -494,13 +508,22 @@ class SendGuideExport(SendExportBase): wine_color = None establishment_name = None establishment_address = None - advertorial = None + ad_number_of_pages = None + ad_right_pages = None # create the file structure data = ET.Element('data') products = ET.SubElement(data, 'products') for row in self.get_data(): + row_advertorial = row.pop('advertorial') + if row_advertorial: + ad_number_of_pages = row_advertorial.get('number_of_pages') + ad_right_pages = row_advertorial.get('right_pages') + else: + row['ad_number_of_pages'] = ad_number_of_pages + row['ad_right_pages'] = ad_right_pages + row_establishment_address = row.get('address') if row_establishment_address: establishment_address = row_establishment_address @@ -544,8 +567,18 @@ class SendGuideExport(SendExportBase): data = ET.Element('data') items = ET.SubElement(data, 'cities') city = None + ad_number_of_pages = None + ad_right_pages = None for row in self.get_data(): + row_advertorial = row.pop('advertorial') + if row_advertorial: + ad_number_of_pages = row_advertorial.get('number_of_pages') + ad_right_pages = row_advertorial.get('right_pages') + else: + row['ad_number_of_pages'] = ad_number_of_pages + row['ad_right_pages'] = ad_right_pages + row_city = row.get('city_name') if row_city: city = row_city