[gen] Added field.persist to avoid storing values for fields that do not require it (like master fields only used to determine selectable values among slave fields).
This commit is contained in:
		
							parent
							
								
									b8ceb66a49
								
							
						
					
					
						commit
						ea08d7981f
					
				
					 19 changed files with 106 additions and 75 deletions
				
			
		|  | @ -417,7 +417,7 @@ class BaseMixin: | |||
|         # Trigger field-specific validation | ||||
|         self.intraFieldValidation(errors, values) | ||||
|         if errors.__dict__: | ||||
|             rq.set('errors', errors.__dict__) | ||||
|             for k,v in errors.__dict__.iteritems(): rq.set('%s_error' % k, v) | ||||
|             self.say(errorMessage) | ||||
|             return self.gotoEdit() | ||||
| 
 | ||||
|  | @ -425,7 +425,7 @@ class BaseMixin: | |||
|         msg = self.interFieldValidation(errors, values) | ||||
|         if not msg: msg = errorMessage | ||||
|         if errors.__dict__: | ||||
|             rq.set('errors', errors.__dict__) | ||||
|             for k,v in errors.__dict__.iteritems(): rq.set('%s_error' % k, v) | ||||
|             self.say(msg) | ||||
|             return self.gotoEdit() | ||||
| 
 | ||||
|  | @ -814,19 +814,27 @@ class BaseMixin: | |||
|             res.append(field) | ||||
|         return res | ||||
| 
 | ||||
|     def getSlaveFieldsRequestValues(self, pageName): | ||||
|         '''Returns the list of slave fields having a masterValue being a | ||||
|            method.''' | ||||
|         res = {} | ||||
|     def getSlavesRequestInfo(self, pageName): | ||||
|         '''When slave fields must be updated via Ajax requests, we must carry | ||||
|            some information from the global request object to the ajax requests: | ||||
|            - the selected values in slave fields; | ||||
|            - validation errors.''' | ||||
|         requestValues = {} | ||||
|         errors = {} | ||||
|         req = self.REQUEST | ||||
|         for field in self.getAllAppyTypes(): | ||||
|             if field.page.name != pageName: continue | ||||
|             if field.masterValue and callable(field.masterValue): | ||||
|                 # We have such a field | ||||
|                 # We have a slave field that is updated via ajax requests. | ||||
|                 name = field.name | ||||
|                 # Remember the request value for this field if present. | ||||
|                 if req.has_key(name) and req[name]: | ||||
|                     res[name] = req[name] | ||||
|         return sutils.getStringDict(res) | ||||
|                     requestValues[name] = req[name] | ||||
|                 # Remember the validation error for this field if present. | ||||
|                 errorKey = '%s_error' % name | ||||
|                 if req.has_key(errorKey): | ||||
|                     errors[name] = req[errorKey] | ||||
|         return sutils.getStringDict(requestValues), sutils.getStringDict(errors) | ||||
| 
 | ||||
|     def getCssJs(self, fields, layoutType, res): | ||||
|         '''Gets, in p_res ~{'css':[s_css], 'js':[s_js]}~ the lists of | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Gaetan Delannay
						Gaetan Delannay