From e842eda8bca52eaed1c9fd78e254a69655bd21a9 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Fri, 28 May 2021 08:48:53 +0200 Subject: [PATCH] feeder: create an unique slug if necessary (#42911) --- wcs_olap/feeder.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/wcs_olap/feeder.py b/wcs_olap/feeder.py index 1805b61..81f45dd 100644 --- a/wcs_olap/feeder.py +++ b/wcs_olap/feeder.py @@ -529,9 +529,20 @@ class WcsOlapFeeder(object): table_name = self.default_ctx['form_table'] self.create_referenced_table(table_name, formdef_fields, 'types de formulaire') - formdefs = [(form.slug, categories_mapping.get(form.schema.category), - form.schema.name) for form in self.formdefs] + formdefs = [(formdef.slug, categories_mapping.get(formdef.schema.category), + formdef.schema.name) for formdef in self.formdefs] self.formdefs_mapping = self.do_referenced_data(table_name, formdefs, 'ref') + self.formdefs_unique_slug = {} + seen = set() + for slug, _, _ in formdefs: + slugified_slug = slug.replace('-', '_') + final_slug = slugified_slug + counter = 0 + while final_slug in seen: + final_slug = slugified_slug + '_%s' % counter + counter += 1 + seen.add(final_slug) + self.formdefs_unique_slug[slug] = final_slug self.update_table_sequence_number(table_name) def do_base_table(self): @@ -669,18 +680,19 @@ class WcsFormdefFeeder(object): self.do_feed = do_feed self.fields = [] self.item_id_mappings = {} + self.unique_slug = self.formdefs_unique_slug[formdef.slug] @property def table_name(self): - return self.hash_table_name('formdata_%s' % self.formdef.slug.replace('-', '_')) + return self.hash_table_name('formdata_%s' % self.unique_slug) @property def status_table_name(self): - return self.hash_table_name('status_%s' % self.formdef.slug.replace('-', '_')) + return self.hash_table_name('status_%s' % self.unique_slug) @property def evolution_table_name(self): - return self.hash_table_name('evolution_%s' % self.formdef.slug.replace('-', '_')) + return self.hash_table_name('evolution_%s' % self.unique_slug) def __getattr__(self, name): return getattr(self.olap_feeder, name) -- 2.32.0.rc0