store response data of team-based surveys under person + institution key

This commit is contained in:
Helmut Merz 2015-04-21 07:40:49 +02:00
parent 328c1fbaaf
commit 57aee009b6
3 changed files with 33 additions and 6 deletions

View file

@ -141,10 +141,11 @@ class SurveyView(InstitutionMixin, ConceptView):
#person = self.getObjectForUid(personId)
#inst = person.getParents([pred])
inst = self.institution
instUid = self.getUidForObject(inst)
if inst:
for c in inst.getChildren([pred]):
uid = self.getUidForObject(c)
data = respManager.load(uid)
data = respManager.load(uid, instUid)
if data:
resp = Response(self.adapted, None)
for qu in self.adapted.questions:
@ -177,6 +178,9 @@ class SurveyView(InstitutionMixin, ConceptView):
respManager = Responses(self.context)
respManager.personId = (self.request.form.get('person') or
respManager.getPersonId())
if self.adapted.teamBasedEvaluation and self.institution:
respManager.institutionId = self.getUidForObject(
baseObject(self.institution))
data = {}
response = Response(self.adapted, None)
for key, value in form.items():
@ -257,6 +261,9 @@ class SurveyView(InstitutionMixin, ConceptView):
respManager = Responses(self.context)
respManager.personId = (self.request.form.get('person') or
respManager.getPersonId())
if self.adapted.teamBasedEvaluation and self.institution:
respManager.institutionId = self.getUidForObject(
baseObject(self.institution))
self.data = respManager.load()
def getValues(self, question):

View file

@ -1,5 +1,5 @@
#
# Copyright (c) 2013 Helmut Merz helmutm@cy55.de
# Copyright (c) 2015 Helmut Merz helmutm@cy55.de
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -34,19 +34,31 @@ class Responses(BaseRecordManager):
implements(IResponses)
storageName = 'survey_responses'
personId = None
institutionId = None
def __init__(self, context):
self.context = context
def save(self, data):
if self.personId:
self.storage.saveUserTrack(self.uid, 0, self.personId, data,
id = self.personId
if self.institutionId:
id += '.' + self.institutionId
self.storage.saveUserTrack(self.uid, 0, id, data,
update=True, overwrite=True)
def load(self, personId=None):
def load(self, personId=None, institutionId=None):
if personId is None:
personId = self.personId
if institutionId is None:
institutionId = self.institutionId
if personId:
id = personId
if institutionId:
id += '.' + institutionId
tracks = self.storage.getUserTracks(self.uid, 0, id)
if not tracks: # then try without institution
tracks = self.storage.getUserTracks(self.uid, 0, personId)
if tracks:
return tracks[0].data

View file

@ -66,7 +66,15 @@ class BaseTrackView(TrackView):
obj = util.getObjectForUid(uid)
if obj is not None:
return obj
return uid
result = []
for id in uid.split('.'):
if id.isdigit():
obj = util.getObjectForUid(id)
if obj is not None:
result.append(obj.title)
continue
result.append(id)
return ' / '.join(result)
@Lazy
def authentication(self):