survey CSV export: fix encoding, add institution column
This commit is contained in:
		
							parent
							
								
									17af65c461
								
							
						
					
					
						commit
						2f74920692
					
				
					 2 changed files with 12 additions and 7 deletions
				
			
		|  | @ -31,7 +31,7 @@ from cybertools.knowledge.survey.questionnaire import Response | ||||||
| from cybertools.util.date import formatTimeStamp | from cybertools.util.date import formatTimeStamp | ||||||
| from loops.browser.concept import ConceptView | from loops.browser.concept import ConceptView | ||||||
| from loops.browser.node import NodeView | from loops.browser.node import NodeView | ||||||
| from loops.common import adapted | from loops.common import adapted, baseObject | ||||||
| from loops.knowledge.survey.response import Responses | from loops.knowledge.survey.response import Responses | ||||||
| from loops.organize.party import getPersonForUser | from loops.organize.party import getPersonForUser | ||||||
| from loops.util import getObjectForUid | from loops.util import getObjectForUid | ||||||
|  | @ -248,7 +248,7 @@ class SurveyCsvExport(NodeView): | ||||||
|     encoding = 'ISO8859-15' |     encoding = 'ISO8859-15' | ||||||
| 
 | 
 | ||||||
|     def encode(self, text): |     def encode(self, text): | ||||||
|         text.encode(self.encoding) |         return text.encode(self.encoding) | ||||||
| 
 | 
 | ||||||
|     @Lazy |     @Lazy | ||||||
|     def questions(self): |     def questions(self): | ||||||
|  | @ -261,24 +261,30 @@ class SurveyCsvExport(NodeView): | ||||||
| 
 | 
 | ||||||
|     @Lazy |     @Lazy | ||||||
|     def columns(self): |     def columns(self): | ||||||
|         infoCols = ['Name', 'Timestamp'] |         infoCols = ['Institution', 'Name', 'Timestamp'] | ||||||
|         dataCols = ['%02i-%02i' % (item[0], item[1]) for item in self.questions] |         dataCols = ['%02i-%02i' % (item[0], item[1]) for item in self.questions] | ||||||
|         return infoCols + dataCols |         return infoCols + dataCols | ||||||
| 
 | 
 | ||||||
|     def getRows(self): |     def getRows(self): | ||||||
|  |         memberPred = self.conceptManager.get('ismember') | ||||||
|         for tr in Responses(self.virtualTargetObject).getAllTracks(): |         for tr in Responses(self.virtualTargetObject).getAllTracks(): | ||||||
|             p = adapted(getObjectForUid(tr.userName)) |             p = adapted(getObjectForUid(tr.userName)) | ||||||
|             name = p and p.title or u'???' |             name = self.encode(p and p.title or u'???') | ||||||
|  |             inst = u'' | ||||||
|  |             if memberPred is not None: | ||||||
|  |                 for i in baseObject(p).getParents([memberPred]): | ||||||
|  |                     inst = self.encode(i.title) | ||||||
|  |                     break | ||||||
|             ts = formatTimeStamp(tr.timeStamp) |             ts = formatTimeStamp(tr.timeStamp) | ||||||
|             cells = [tr.data.get(qu.uid, -1)  |             cells = [tr.data.get(qu.uid, -1)  | ||||||
|                         for (idx1, idx2, qug, qu) in self.questions] |                         for (idx1, idx2, qug, qu) in self.questions] | ||||||
|             yield [name, ts] + cells |             yield [inst, name, ts] + cells | ||||||
| 
 | 
 | ||||||
|     def __call__(self): |     def __call__(self): | ||||||
|         f = StringIO() |         f = StringIO() | ||||||
|         writer = csv.writer(f, delimiter=',') |         writer = csv.writer(f, delimiter=',') | ||||||
|         writer.writerow(self.columns) |         writer.writerow(self.columns) | ||||||
|         for row in self.getRows(): |         for row in sorted(self.getRows()): | ||||||
|             writer.writerow(row) |             writer.writerow(row) | ||||||
|         text = f.getvalue() |         text = f.getvalue() | ||||||
|         self.setDownloadHeader(text) |         self.setDownloadHeader(text) | ||||||
|  |  | ||||||
|  | @ -115,7 +115,6 @@ class EditForm(BaseTrackView): | ||||||
|         if not form.get('form_submitted'): |         if not form.get('form_submitted'): | ||||||
|             return True |             return True | ||||||
|         data = {} |         data = {} | ||||||
|         print '*** update', form |  | ||||||
|         for row in form.get('data') or []: |         for row in form.get('data') or []: | ||||||
|             key = row['key'] |             key = row['key'] | ||||||
|             if not key: |             if not key: | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue