Beispiel #1
0
    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)
Beispiel #2
0
    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)
Beispiel #3
0
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))
Beispiel #4
0
 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, [])
Beispiel #5
0
 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}
Beispiel #7
0
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
    }
Beispiel #8
0
 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, [])
Beispiel #9
0
 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, [])
Beispiel #10
0
    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, [])
Beispiel #11
0
    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, [])
Beispiel #12
0
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,
            )
Beispiel #13
0
def site_view(context, request):
    home, extra_path = get_user_home(context, request)
    return HTTPFound(location=resource_url(home, request, *extra_path))
Beispiel #14
0
 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
Beispiel #15
0
def site_view(context, request):
    home, extra_path = get_user_home(context, request)
    return HTTPFound(location=resource_url(home, request, *extra_path))
Beispiel #16
0
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)}
Beispiel #17
0
 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
Beispiel #18
0
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)
    }