allow entering of survey data for other person; prerequisite: keep URL params in title and breadcrumbs links

This commit is contained in:
Helmut Merz 2015-04-05 10:40:07 +02:00
parent 60604cd38b
commit 396e17c0dc
5 changed files with 36 additions and 4 deletions

View file

@ -252,6 +252,16 @@ class BaseView(GenericView, I18NView, SortableMixin):
result.append(view)
return result
@Lazy
def urlParamString(self):
return self.getUrlParamString()
def getUrlParamString(self):
qs = self.request.get('QUERY_STRING')
if qs:
return '?' + qs
return ''
@Lazy
def principalId(self):
principal = self.request.principal

View file

@ -51,7 +51,7 @@
<h1 tal:define="tabview item/tabview|nothing"
tal:attributes="ondblclick item/openEditWindow">
<a tal:omit-tag="python: level > 1"
tal:attributes="href request/URL"
tal:attributes="href string:${request/URL}${item/urlParamString}"
tal:content="item/title">Title</a>
<a title="Show tabular view"
i18n:attributes="title"

View file

@ -120,6 +120,9 @@ class NodeView(BaseView):
url=absoluteURL(p, self.request)))
if self.virtualTarget:
data.extend(self.virtualTarget.breadcrumbs())
if data and not '?' in data[-1]['url']:
if self.urlParamString:
data[-1]['url'] += self.urlParamString
return data
def viewModes(self):

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
@ -52,6 +52,16 @@ class SurveyView(ConceptView):
self.registerDojo()
return template.macros['survey']
@Lazy
def title(self):
title = self.context.title
personId = self.request.form.get('person')
if personId:
person = adapted(getObjectForUid(personId))
if person is not None:
return '%s: %s' % (title, person.title)
return title
@Lazy
def tabview(self):
if self.editable:
@ -147,6 +157,8 @@ class SurveyView(ConceptView):
if 'submit' not in form:
return []
respManager = Responses(self.context)
respManager.personId = (self.request.form.get('person') or
respManager.getPersonId())
data = {}
response = Response(self.adapted, None)
for key, value in form.items():
@ -222,7 +234,10 @@ class SurveyView(ConceptView):
def getValues(self, question):
setting = None
if self.data is None:
self.data = Responses(self.context).load()
respManager = Responses(self.context)
respManager.personId = (self.request.form.get('person') or
respManager.getPersonId())
self.data = respManager.load()
if self.data:
setting = self.data.get(question.uid)
if setting is None:

View file

@ -45,7 +45,7 @@
<div class="button" id="show_questionnaire">
<a href="" xxonclick="back(); return false"
i18n:translate=""
tal:attributes="href view/virtualTargetUrl">
tal:attributes="href string:${request/URL}${item/urlParamString}">
Back to Questionnaire</a>
<br />
</div>
@ -67,6 +67,10 @@
</div>
<form method="post">
<table class="listing">
<input type="hidden" name="person"
tal:define="personId request/person|nothing"
tal:condition="personId"
tal:attributes="value personId" />
<tal:group repeat="group item/groups">
<tr>
<td>&nbsp;</td>