diff --git a/knowledge/survey/browser.py b/knowledge/survey/browser.py index 1ca783c..0607ca3 100644 --- a/knowledge/survey/browser.py +++ b/knowledge/survey/browser.py @@ -31,7 +31,7 @@ from cybertools.knowledge.survey.questionnaire import Response from cybertools.util.date import formatTimeStamp from loops.browser.concept import ConceptView 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.organize.party import getPersonForUser from loops.util import getObjectForUid @@ -248,7 +248,7 @@ class SurveyCsvExport(NodeView): encoding = 'ISO8859-15' def encode(self, text): - text.encode(self.encoding) + return text.encode(self.encoding) @Lazy def questions(self): @@ -261,24 +261,30 @@ class SurveyCsvExport(NodeView): @Lazy def columns(self): - infoCols = ['Name', 'Timestamp'] + infoCols = ['Institution', 'Name', 'Timestamp'] dataCols = ['%02i-%02i' % (item[0], item[1]) for item in self.questions] return infoCols + dataCols def getRows(self): + memberPred = self.conceptManager.get('ismember') for tr in Responses(self.virtualTargetObject).getAllTracks(): 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) cells = [tr.data.get(qu.uid, -1) for (idx1, idx2, qug, qu) in self.questions] - yield [name, ts] + cells + yield [inst, name, ts] + cells def __call__(self): f = StringIO() writer = csv.writer(f, delimiter=',') writer.writerow(self.columns) - for row in self.getRows(): + for row in sorted(self.getRows()): writer.writerow(row) text = f.getvalue() self.setDownloadHeader(text) diff --git a/organize/tracking/browser.py b/organize/tracking/browser.py index cbe486d..7e2cd7a 100644 --- a/organize/tracking/browser.py +++ b/organize/tracking/browser.py @@ -115,7 +115,6 @@ class EditForm(BaseTrackView): if not form.get('form_submitted'): return True data = {} - print '*** update', form for row in form.get('data') or []: key = row['key'] if not key: