Projet

Général

Profil

0001-feeder-create-an-unique-slug-if-necessary-42911.patch

Benjamin Dauvergne, 28 mai 2021 08:49

Télécharger (2,47 ko)

Voir les différences:

Subject: [PATCH] feeder: create an unique slug if necessary (#42911)

 wcs_olap/feeder.py | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)
wcs_olap/feeder.py
529 529
        table_name = self.default_ctx['form_table']
530 530
        self.create_referenced_table(table_name, formdef_fields, 'types de formulaire')
531 531

  
532
        formdefs = [(form.slug, categories_mapping.get(form.schema.category),
533
                     form.schema.name) for form in self.formdefs]
532
        formdefs = [(formdef.slug, categories_mapping.get(formdef.schema.category),
533
                     formdef.schema.name) for formdef in self.formdefs]
534 534
        self.formdefs_mapping = self.do_referenced_data(table_name, formdefs, 'ref')
535
        self.formdefs_unique_slug = {}
536
        seen = set()
537
        for slug, _, _ in formdefs:
538
            slugified_slug = slug.replace('-', '_')
539
            final_slug = slugified_slug
540
            counter = 0
541
            while final_slug in seen:
542
                final_slug = slugified_slug + '_%s' % counter
543
                counter += 1
544
            seen.add(final_slug)
545
            self.formdefs_unique_slug[slug] = final_slug
535 546
        self.update_table_sequence_number(table_name)
536 547

  
537 548
    def do_base_table(self):
......
669 680
        self.do_feed = do_feed
670 681
        self.fields = []
671 682
        self.item_id_mappings = {}
683
        self.unique_slug = self.formdefs_unique_slug[formdef.slug]
672 684

  
673 685
    @property
674 686
    def table_name(self):
675
        return self.hash_table_name('formdata_%s' % self.formdef.slug.replace('-', '_'))
687
        return self.hash_table_name('formdata_%s' % self.unique_slug)
676 688

  
677 689
    @property
678 690
    def status_table_name(self):
679
        return self.hash_table_name('status_%s' % self.formdef.slug.replace('-', '_'))
691
        return self.hash_table_name('status_%s' % self.unique_slug)
680 692

  
681 693
    @property
682 694
    def evolution_table_name(self):
683
        return self.hash_table_name('evolution_%s' % self.formdef.slug.replace('-', '_'))
695
        return self.hash_table_name('evolution_%s' % self.unique_slug)
684 696

  
685 697
    def __getattr__(self, name):
686 698
        return getattr(self.olap_feeder, name)
687
-