diff -r 5cf0625dfa73 -r b8e25769880d app/soc/views/models/survey.py --- a/app/soc/views/models/survey.py Wed Jul 01 16:22:35 2009 +0200 +++ b/app/soc/views/models/survey.py Wed Jul 01 16:28:27 2009 +0200 @@ -487,69 +487,6 @@ return super(View, self).editGet(request, entity, context, params=params) - def getMenusForScope(self, entity, params): - """List featured surveys if after the survey_start date and before survey_end. - """ - - # only list surveys for registered users - user = user_logic.getForCurrentAccount() - if not user: - return [] - - filter = { - 'prefix' : params['url_name'], - 'scope_path': entity.key().id_or_name(), - 'is_featured': True, - } - - entities = self._logic.getForFields(filter) - submenus = [] - now = datetime.datetime.now() - - # cache ACL - survey_rights = {} - - # add a link to all featured documents - for entity in entities: - - # only list those surveys the user can read - if entity.read_access not in survey_rights: - - params = dict(prefix=entity.prefix, scope_path=entity.scope_path, - link_id=entity.link_id, user=user) - - # TODO(ajaksu) use access.Checker.checkIsSurveyReadable - checker = access.rights_logic.Checker(entity.prefix) - roles = checker.getMembership(entity.read_access) - rights = self._params['rights'] - can_read = access.Checker.hasMembership(rights, roles, params) - - # cache ACL for a given entity.read_access - survey_rights[entity.read_access] = can_read - - if not can_read: - pass#continue - - elif not survey_rights[entity.read_access]: - pass#continue - - # omit if either before survey_start or after survey_end - if entity.survey_start and entity.survey_start > now: - pass#continue - - if entity.survey_end and entity.survey_end < now: - pass#continue - - taken_status = "" - taken_status = "(new)" - #TODO only if a document is readable it might be added - submenu = (redirects.getPublicRedirect(entity, self._params), - 'Survey ' + taken_status + ': ' + entity.short_name, - 'show') - - submenus.append(submenu) - return submenus - def activate(self, request, **kwargs): """This is a hack to support the 'Enable grades' button. """ @@ -557,7 +494,6 @@ redirect_path = request.path.replace('/activate/', '/edit/') + '?activate=1' return http.HttpResponseRedirect(redirect_path) - def activateGrades(self, request, **kwargs): """Updates SurveyRecord's grades for a given Survey. """ @@ -693,6 +629,69 @@ return entity, context + def getMenusForScope(self, entity, params): + """List featured surveys if after the survey_start date and before survey_end. + """ + + # only list surveys for registered users + user = user_logic.getForCurrentAccount() + if not user: + return [] + + filter = { + 'prefix' : params['url_name'], + 'scope_path': entity.key().id_or_name(), + 'is_featured': True, + } + + entities = self._logic.getForFields(filter) + submenus = [] + now = datetime.datetime.now() + + # cache ACL + survey_rights = {} + + # add a link to all featured documents + for entity in entities: + + # only list those surveys the user can read + if entity.read_access not in survey_rights: + + params = dict(prefix=entity.prefix, scope_path=entity.scope_path, + link_id=entity.link_id, user=user) + + # TODO(ajaksu) use access.Checker.checkIsSurveyReadable + checker = access.rights_logic.Checker(entity.prefix) + roles = checker.getMembership(entity.read_access) + rights = self._params['rights'] + can_read = access.Checker.hasMembership(rights, roles, params) + + # cache ACL for a given entity.read_access + survey_rights[entity.read_access] = can_read + + if not can_read: + pass#continue + + elif not survey_rights[entity.read_access]: + pass#continue + + # omit if either before survey_start or after survey_end + if entity.survey_start and entity.survey_start > now: + pass#continue + + if entity.survey_end and entity.survey_end < now: + pass#continue + + taken_status = "" + taken_status = "(new)" + #TODO only if a document is readable it might be added + submenu = (redirects.getPublicRedirect(entity, self._params), + 'Survey ' + taken_status + ': ' + entity.short_name, + 'show') + + submenus.append(submenu) + return submenus + class HelperForm(object): """Thin wrapper for adding values to params['edit_form'].fields. """