Projet

Général

Profil

0003-workflows-ease-filtering-common-fields-of-related-fo.patch

Benjamin Dauvergne, 18 mai 2019 14:29

Télécharger (1,79 ko)

Voir les différences:

Subject: [PATCH 3/5] workflows: ease filtering common fields of related
 formdefs (#33186)

 wcs/workflows.py | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)
wcs/workflows.py
783 783
    def formdefs(self):
784 784
        return FormDef.select(lambda formdef: formdef.workflow_id == self.id)
785 785

  
786
    @property
787
    def formdefs_common_fields(self):
788
        '''Only keep fields from related formdefs which share their varname, label and type'''
789
        fields = collections.OrderedDict()
790
        formdefs = self.formdefs
791

  
792
        if formdefs:
793
            for field in (formdefs[0].fields or []):
794
                if field.varname and field.label:
795
                    fields[field.varname] = field
796

  
797
            for formdef in formdefs[1:]:
798
                for field in formdef.fields or []:
799
                    if field.varname not in fields:
800
                        continue
801
                    if field.varname in fields:
802
                        first_field = fields[field.varname]
803
                        if first_field.label != field.label or first_field.type != field.type:
804
                            del fields[field.varname]
805

  
806
        for field in self.get_backoffice_fields():
807
            if not field.varname:
808
                continue
809
            if field.varname in fields:
810
                del fields[field.varname]
811
            fields[field.varname] = field
812

  
813
        return fields
814

  
815

  
786 816
class XmlSerialisable(object):
787 817
    node_name = None
788 818
    key = None
789
-