def root_view(self): contents = [] for obj in self.context.values(): if IOrganisation.providedBy(obj) and security.context_has_permission(obj, security.VIEW, self.userid): contents.append(obj) contents = sorted(contents, key = lambda x: x.title.lower()) self.response['listing'] = self.listing_sniplet(contents) return self.response
def listing_sniplet(self, contents=None, display_type = False): response = {} if contents is None: response['contents'] = [x for x in self.context.values() if security.context_has_permission(x, security.VIEW, self.userid)] else: response['contents'] = contents response['context_has_permission'] = self.context_has_permission response['display_type'] = display_type return render('templates/sniplets/listing.pt', response, request=self.request)
def questions_view(self): """ This view is for any IQuestions context, both the global one and the local one + the Organisation objects 'variants' view. """ schema = createSchema('QuestionSearchSchema').bind(context = self.context, request = self.request) form = Form(schema, buttons = (), formid = 'tag_select', action = 'javascript:') self.response['form_resources'] = form.get_widget_resources() self.response['tag_form'] = form.render() #Get questions, sorted - behaves differently for variants! if IOrganisation.providedBy(self.context): questions = self.root['questions'].values() else: questions = self.context.values() self.response['questions'] = sorted(questions, key = lambda q: q.get_field_value('title').lower()) self.response['is_org'] = IOrganisation.providedBy(self.context) self.response['show_edit_variants'] = self.response['is_org'] and \ security.context_has_permission(self.context, security.MANAGE_SURVEY, self.userid) self.response['show_edit'] = IQuestions.providedBy(self.context) and \ security.context_has_permission(self.context, security.EDIT, self.userid) or False return self.response
def context_has_permission(self, context, permission): """ Check if a user has view permission on a specific context. """ return security.context_has_permission(context, permission, self.userid)
def _valid_organisaitons(root, userid): results = [] for obj in root.values(): if IOrganisation.providedBy(obj) and context_has_permission(obj, EDIT, userid): results.append(obj) return sorted(results, key = lambda x: x.title.lower())