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 getPickerEntries(self, term_values, context_object, **kwarg): """See `IPickerEntrySource`""" entries = [] for term_value in term_values: extra = PickerEntry() if hasattr(term_value, 'summary'): extra.description = term_value.summary display_api = ObjectImageDisplayAPI(term_value) image_url = display_api.custom_icon_url() or None css = display_api.sprite_css() or 'sprite bullet' if image_url is not None: extra.image = image_url else: extra.css = css entries.append(extra) return entries