def initialize(self): self.pillar = self.context.pillar self.person = self.context.person self.label = "Information shared with %s" % self.person.displayname self.page_title = "%s" % self.person.displayname self.sharing_service = getUtility(IService, 'sharing') self._loadSharedArtifacts() cache = IJSONRequestCache(self.request) request = get_current_web_service_request() branch_data = self._build_branch_template_data(self.branches, request) bug_data = self._build_bug_template_data(self.bugtasks, request) spec_data = self._build_specification_template_data( self.specifications, request) grantee_data = { 'displayname': self.person.displayname, 'self_link': absoluteURL(self.person, request) } pillar_data = {'self_link': absoluteURL(self.pillar, request)} cache.objects['grantee'] = grantee_data cache.objects['pillar'] = pillar_data cache.objects['bugs'] = bug_data cache.objects['branches'] = branch_data cache.objects['specifications'] = spec_data
def jsonGranteeData(self, grant_permissions): """See `ISharingService`.""" result = [] request = get_current_web_service_request() browser_request = IWebBrowserOriginatingRequest(request) # We need to precache icon and validity information for the batch. grantee_ids = [grantee[0].id for grantee in grant_permissions] list(getUtility(IPersonSet).getPrecachedPersonsFromIDs( grantee_ids, need_icon=True, need_validity=True)) for (grantee, permissions, shared_artifact_types) in grant_permissions: some_things_shared = len(shared_artifact_types) > 0 grantee_permissions = {} for (policy, permission) in permissions.iteritems(): grantee_permissions[policy.type.name] = permission.name shared_artifact_type_names = [ info_type.name for info_type in shared_artifact_types] display_api = ObjectImageDisplayAPI(grantee) icon_url = display_api.custom_icon_url() sprite_css = display_api.sprite_css() result.append({ 'name': grantee.name, 'icon_url': icon_url, 'sprite_css': sprite_css, 'display_name': grantee.displayname, 'self_link': absoluteURL(grantee, request), 'web_link': absoluteURL(grantee, browser_request), 'permissions': grantee_permissions, 'shared_artifact_types': shared_artifact_type_names, 'shared_items_exist': some_things_shared}) return result
def test_view_data_model(self): # Test that the json request cache contains the view data model. pillarperson = self.getPillarPerson() view = create_initialized_view(pillarperson, '+index') bugtask = list(view.bugtasks)[0] bug = bugtask.bug cache = IJSONRequestCache(view.request) request = get_current_web_service_request() self.assertEqual({ 'self_link': absoluteURL(pillarperson.person, request), 'displayname': pillarperson.person.displayname }, cache.objects.get('grantee')) self.assertEqual({ 'self_link': absoluteURL(pillarperson.pillar, request), }, cache.objects.get('pillar')) self.assertEqual({ 'bug_id': bug.id, 'bug_summary': bug.title, 'bug_importance': bugtask.importance.title.lower(), 'information_type': bug.information_type.title, 'web_link': canonical_url( bugtask, path_only_if_possible=True), 'self_link': absoluteURL(bug, request), }, cache.objects.get('bugs')[0]) if self.pillar_type == 'product': branch = list(view.branches)[0] self.assertEqual({ 'branch_id': branch.id, 'branch_name': branch.unique_name, 'information_type': branch.information_type.title, 'web_link': canonical_url(branch, path_only_if_possible=True), 'self_link': absoluteURL(branch, request), }, cache.objects.get('branches')[0])
def initialize(self): self.pillar = self.context.pillar self.person = self.context.person self.label = "Information shared with %s" % self.person.displayname self.page_title = "%s" % self.person.displayname self.sharing_service = getUtility(IService, 'sharing') self._loadSharedArtifacts() cache = IJSONRequestCache(self.request) request = get_current_web_service_request() branch_data = self._build_branch_template_data(self.branches, request) bug_data = self._build_bug_template_data(self.bugtasks, request) spec_data = self._build_specification_template_data( self.specifications, request) grantee_data = { 'displayname': self.person.displayname, 'self_link': absoluteURL(self.person, request) } pillar_data = { 'self_link': absoluteURL(self.pillar, request) } cache.objects['grantee'] = grantee_data cache.objects['pillar'] = pillar_data cache.objects['bugs'] = bug_data cache.objects['branches'] = branch_data cache.objects['specifications'] = spec_data
def test_person(self): # Test the XHTML representation of a person. eric = self.factory.makePerson() # We need something that has an IPersonChoice, a project will do. product = self.factory.makeProduct(owner=eric) field = IProduct['owner'] request = get_current_web_service_request() renderer = getMultiAdapter( (product, field, request), IFieldHTMLRenderer) # The representation of a person is the same as a tales # PersonFormatter. self.assertEqual(format_link(eric), renderer(eric))
def test_text(self): # Test the XHTML representation of a text field. text = u'\N{SNOWMAN} [email protected] bug 1' # We need something that has an IPersonChoice, a project will do. product = self.factory.makeProduct() field = IProduct['description'] request = get_current_web_service_request() renderer = getMultiAdapter((product, field, request), IFieldHTMLRenderer) # The representation is linkified html. self.assertEqual( u'<p>\N{SNOWMAN} [email protected] ' '<a href="/bugs/1" class="bug-link">bug 1</a></p>', renderer(text))
def test_text(self): # Test the XHTML representation of a text field. text = u'\N{SNOWMAN} [email protected] bug 1' # We need something that has an IPersonChoice, a project will do. product = self.factory.makeProduct() field = IProduct['description'] request = get_current_web_service_request() renderer = getMultiAdapter( (product, field, request), IFieldHTMLRenderer) # The representation is linkified html. self.assertEqual( u'<p>\N{SNOWMAN} [email protected] ' '<a href="/bugs/1" class="bug-link">bug 1</a></p>', renderer(text))