diff --git a/knowledge/survey/browser.py b/knowledge/survey/browser.py index 7f4549c..4e95d4d 100644 --- a/knowledge/survey/browser.py +++ b/knowledge/survey/browser.py @@ -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): diff --git a/knowledge/survey/response.py b/knowledge/survey/response.py index 6f5635d..8ba293c 100644 --- a/knowledge/survey/response.py +++ b/knowledge/survey/response.py @@ -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,20 +34,32 @@ 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: - tracks = self.storage.getUserTracks(self.uid, 0, 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 return {} diff --git a/organize/tracking/browser.py b/organize/tracking/browser.py index 7e2cd7a..5450983 100644 --- a/organize/tracking/browser.py +++ b/organize/tracking/browser.py @@ -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):