feeder: create an unique slug if necessary (#42911)

This commit is contained in:
Benjamin Dauvergne 2021-05-28 08:48:53 +02:00
parent 05c4031776
commit a08c629f75
1 changed files with 17 additions and 5 deletions

View File

@ -561,9 +561,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):
@ -739,18 +750,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)