def contextFieldsList(self,parametre=[]): """ renvoit la liste des champs de form correspondant aux id de champs et de groupes en parametre, qui est une chaine ou une liste de chaines s'il n'y a pas de parametre, renvoit tous les champs de form ou tous les champs du groupe contextuel """ context=self # GESTION DES PARAMETRES SPECIAUX # pas de parametre : tous les champs if not(parametre): # est on dans une sequence... if hasattr(context,'sequence-item'): # et l'iteration correspond-elle a un nom de groupe ? group = getattr(context,'sequence-item') if group in [group.getId() for group in context.form.get_groups()]: # si oui on recupere l'id du groupe et on en fait le parametre parametre = [group.getId()] else: # sinon, alors on renvoit tous les champs return context.form.get_fields() else: return context.form.get_fields() # si le parametre contient une chaine, alors on la considere comme une liste contenant uniquement cette chaine elif same_type(parametre,""): parametre = [parametre] # CONSTRUCTION DE LA LISTE FieldList = [] # si le parametre contient une liste, on renvoit la liste tous les champs dont l'id est dans cette liste if same_type(parametre,[]): for idGroupOrField in parametre: # si l'element de la liste est un nom de champ, on ajoute le champ if idGroupOrField in context.form.get_field_ids(): FieldList.append(context.form.get_field(idGroupOrField)) # si l'element de la liste est un nom de groupe, on ajoute les champs du groupe elif idGroupOrField in [group for group in context.form.get_groups()]: for group \ in [group for group in context.form.get_groups() if group == idGroupOrField]: FieldList = FieldList + context.form.get_fields_in_group(group) break return [field.getId() for field in FieldList]
def _copyReferenceFields(self): """ copy reference fields into the form. old ones are not replaced """ referenceForm = getattr(self.references,self.getTableName()) # CHANGER CA !!! utiliser les ATreferences form = self.form for fieldName in self.requestFields: if not(same_type(fieldName,"")): fieldName = fieldName.getId() # pas tres clean if not(hasattr(form,fieldName)): # adds lacking fields in form referenceField = getattr(referenceForm,fieldName) form.manage_clone(referenceField,fieldName) self._initializeRequestField(getattr(form,fieldName),referenceField)