def test_user_home_path_w_subpath(self): from zope.interface import Interface from zope.interface import directlyProvides from pyramid.interfaces import ITraverserFactory from karl.testing import DummyCommunity from karl.testing import DummyProfile karl.testing.registerDummySecurityPolicy("userid") c = DummyCommunity() site = c.__parent__.__parent__ directlyProvides(site, Interface) c["foo"] = foo = testing.DummyModel() site["profiles"] = profiles = testing.DummyModel() profiles["userid"] = profile = DummyProfile() profile.home_path = "/communities/community/foo/bar/baz" karl.testing.registerAdapter(dummy_traverser_factory, Interface, ITraverserFactory) from karl.views.utils import get_user_home request = testing.DummyRequest() # Test from site root target, extra_path = get_user_home(site, request) self.failUnless(foo is target) self.assertEqual(['bar', 'baz'], extra_path) # Test from arbitrary point in tree target, extra_path = get_user_home(c, request) self.failUnless(foo is target) self.assertEqual(['bar', 'baz'], extra_path)
def test_user_home_path_w_subpath(self): from zope.interface import Interface from zope.interface import directlyProvides from pyramid.interfaces import ITraverserFactory from karl.testing import DummyCommunity from karl.testing import DummyProfile karl.testing.registerDummySecurityPolicy("userid") c = DummyCommunity() site = c.__parent__.__parent__ directlyProvides(site, Interface) c["foo"] = foo = testing.DummyModel() site["profiles"] = profiles = testing.DummyModel() profiles["userid"] = profile = DummyProfile() profile.home_path = "/communities/community/foo/bar/baz" karl.testing.registerAdapter( dummy_traverser_factory, Interface, ITraverserFactory ) from karl.views.utils import get_user_home request = testing.DummyRequest() # Test from site root target, extra_path = get_user_home(site, request) self.failUnless(foo is target) self.assertEqual(['bar', 'baz'], extra_path) # Test from arbitrary point in tree target, extra_path = get_user_home(c, request) self.failUnless(foo is target) self.assertEqual(['bar', 'baz'], extra_path)
def exercise(app): """ Simulate the first request to the application in order to prime the ZODB cache. Performing this operation during start up, it is hoped to delay user requests being handed off to this worker by mod_wsgi until after the cache is already primed. Otherwise the first, slow, cache priming request would fall to an unlucky user. """ # Need to be logged in as somebody. Use the first user we find that is a # member of some group. root, closer = get_root(app) for profile in root['profiles'].values(): user = root.users.get_by_id(profile.__name__) if user['groups']: break request = webob.Request.blank('/') request.environ['repoze.who.identity'] = user user['repoze.who.userid'] = user['id'] home, extra_path = get_user_home(root, request) path = model_path(home, *extra_path) request.path_info = path response = request.get_response(app) if response.status_int != 200: logger = get_logger() logger.warn('Status of %s when priming cache. Response body:\n%s' % (response.status, response.body))
def test_not_logged_in(self): from karl.views.utils import get_user_home karl.testing.registerDummySecurityPolicy() context = testing.DummyModel() communities = context["communities"] = testing.DummyModel() request = testing.DummyRequest() target, extra_path = get_user_home(context, request) self.failUnless(target is communities) self.assertEqual(extra_path, [])
def global_logo(context, request): layout = request.layout_manager.layout site = layout.site home_context, home_path = get_user_home(context, request) logo_link = request.resource_url(home_context, *home_path) intranets = find_intranets(site) if layout.current_intranet is not None: logo_link = request.resource_url(intranets) return {'logo_title': request.registry.settings.get('system_name', 'KARL'), 'logo_href': logo_link}
def global_logo(context, request): layout = request.layout_manager.layout site = layout.site home_context, home_path = get_user_home(context, request) logo_link = request.resource_url(home_context, *home_path) intranets = find_intranets(site) if layout.current_intranet is not None: logo_link = request.resource_url(intranets) return { 'logo_title': request.registry.settings.get('system_name', 'KARL'), 'logo_href': logo_link }
def test_no_communities(self): from karl.views.utils import get_user_home from karl.testing import DummyUsers from karl.testing import DummyProfile karl.testing.registerDummySecurityPolicy("userid") context = testing.DummyModel() communities = context["communities"] = testing.DummyModel() profiles = context["profiles"] = testing.DummyModel() profile = profiles["userid"] = DummyProfile() users = context.users = DummyUsers() users.add("userid", "userid", "password", []) request = testing.DummyRequest() target, extra_path = get_user_home(context, request) self.failUnless(target is communities) self.assertEqual(extra_path, [])
def test_space_as_home_path(self): from zope.interface import Interface from pyramid.interfaces import ITraverserFactory from karl.views.utils import get_user_home from karl.testing import DummyUsers from karl.testing import DummyProfile karl.testing.registerDummySecurityPolicy("userid") context = testing.DummyModel() communities = context["communities"] = testing.DummyModel() community = communities["community"] = testing.DummyModel() profiles = context["profiles"] = testing.DummyModel() profile = profiles["userid"] = DummyProfile() profile.home_path = ' ' karl.testing.registerAdapter( dummy_traverser_factory, Interface, ITraverserFactory ) users = context.users = DummyUsers() users.add("userid", "userid", "password", ["group.community:community:members",]) request = testing.DummyRequest() target, extra_path = get_user_home(context, request) self.failUnless(target is community) self.assertEqual(extra_path, [])
def test_space_as_home_path(self): from zope.interface import Interface from pyramid.interfaces import ITraverserFactory from karl.views.utils import get_user_home from karl.testing import DummyUsers from karl.testing import DummyProfile karl.testing.registerDummySecurityPolicy("userid") context = testing.DummyModel() communities = context["communities"] = testing.DummyModel() community = communities["community"] = testing.DummyModel() profiles = context["profiles"] = testing.DummyModel() profile = profiles["userid"] = DummyProfile() profile.home_path = ' ' karl.testing.registerAdapter(dummy_traverser_factory, Interface, ITraverserFactory) users = context.users = DummyUsers() users.add("userid", "userid", "password", [ "group.community:community:members", ]) request = testing.DummyRequest() target, extra_path = get_user_home(context, request) self.failUnless(target is community) self.assertEqual(extra_path, [])
class CustomFolderView(object): _past_events = None past_events_url = None future_events_url = None def __init__(self, context, request): self.context = context self.request = request searchterm = request.params.get('searchterm', None) if searchterm == '': searchterm = None self.searchterm = searchterm year = request.params.get('year', None) if year == 'all': year = None self.year = year month = request.params.get('month', None) if month == 'all': month = None self.month = month def __call__(self): """ Folder contents for the INetworkEvents marker""" context = self.context request = self.request page_title = context.title api = TemplateAPI(context, request, page_title) # Data for the filter bar, get the list of possible years and months this_year = datetime.datetime.now().year fb_years = [str(i) for i in range(2007, this_year+1)] fb_months = [('1', 'January'), ('2', 'February'), ('3', 'March'), ('4', 'April'), ('5', 'May'), ('6', 'June'), ('7', 'July'), ('8', 'August'), ('9', 'September'), ('10', 'October'), ('11', 'November'), ('12', 'December')] # Flatten the search results into ZPT data try: batch = self._get_batch() except ParseError, e: api.set_error_message('Error: %s' % e) batch = {'entries': (), 'batching_required': False} entries = [] for entry in batch["entries"]: info = {} info['url'] = resource_url(entry, request) info['title'] = entry.title info['date'] = self._get_date(entry) entries.append(info) # Actions and backlink actions = [] if has_permission('create', context, request): addables = get_folder_addables(context, request) if addables is not None: actions.extend(addables()) if has_permission('edit', context, request): actions.append(('Edit', 'edit.html')) if has_permission('delete', context.__parent__, request): actions.append(('Delete', 'delete.html')) if has_permission('administer', context, request): # admins see an Advanced action that puts markers on a folder. actions.append(('Advanced', 'advanced.html')) back_target, extra_path = get_user_home(context, request) backto = { 'href': resource_url(back_target, request, *extra_path), 'title': getattr(back_target, "title", "Home") } client_json_data = dict( tagbox = get_tags_client_data(context, request), ) # Get a layout layout_provider = get_layout_provider(context, request) layout = layout_provider('community') intranet = find_intranet(self.context) intranets = find_intranets(self.context) community = find_community(self.context) if intranet is not None or community == intranets: ux2_layout = self.request.layout_manager.layout ux2_layout.section_style = "none" return dict( api=api, actions=actions, head_data=convert_to_script(client_json_data), backto=backto, old_layout=layout, entries=entries, fb_years=fb_years, fb_months=fb_months, searchterm=self.searchterm, selected_year=self.year, selected_month=self.month, batch_info=batch, past_events_url=self.past_events_url, future_events_url=self.future_events_url, )
def site_view(context, request): home, extra_path = get_user_home(context, request) return HTTPFound(location=resource_url(home, request, *extra_path))
def home_url(self): if self._home_url is None: target, extra_path = get_user_home(self.context, self.request) self._home_url = model_url(target, self.request, *extra_path) return self._home_url
def global_logo(context, request): home_context, home_path = get_user_home(context, request) return {'logo_title': request.registry.settings.get('system_name', 'KARL'), 'logo_href': request.resource_url(home_context, *home_path)}
def home_url(self): if self._home_url is None: target, extra_path = get_user_home(self.context, self.request) self._home_url = resource_url(target, self.request, *extra_path) return self._home_url
def global_logo(context, request): home_context, home_path = get_user_home(context, request) return { 'logo_title': request.registry.settings.get('system_name', 'KARL'), 'logo_href': request.resource_url(home_context, *home_path) }