예제 #1
0
 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
예제 #2
0
 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)
예제 #3
0
 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
예제 #4
0
 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)
예제 #5
0
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())