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)