0003-workflows-ease-filtering-common-fields-of-related-fo.patch
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 |
- |