def __call__(self, default=None): # The layouts are by identifier, e.g. layout='community' # A series of tests, in order of precedence. layout = None if default is not None: layout = getattr(self, default+'_layout') intranet = find_interface(self.context, IIntranet) # Group a series of intranet-oriented decisions if intranet: # First, when under an intranet, OSI wants forums to get # the generic layout. if find_interface(self.context, IForum): layout = getattr(self, 'generic_layout') # Now for an intranet. Everything gets the two-column # view except the intranet home page, which gets the 3 # column treatment. else: layout = getattr(self, 'intranet_layout') elif find_interface(self.context, IIntranets): if find_interface(self.context, IForum): layout = getattr(self, 'generic_layout') elif ICalendarEvent.providedBy(self.context): layout = getattr(self, 'generic_layout') elif INetworkNewsMarker.providedBy(self.context): layout = getattr(self, 'generic_layout') elif find_interface(self.context, IReferencesFolder): layout = getattr(self, 'generic_layout') elif INetworkEventsMarker.providedBy(self.context): layout = getattr(self, 'generic_layout') return layout
def advanced_folder_view(context, request): page_title = 'Advanced Settings For ' + context.title api = TemplateAPI(context, request, page_title) if 'form.cancel' in request.POST: return HTTPFound(location=model_url(context, request)) if 'form.submitted' in request.POST: marker = request.POST.get('marker', False) if marker == 'reference_manual': alsoProvides(context, IReferencesFolder) noLongerProvides(context, INetworkNewsMarker) noLongerProvides(context, INetworkEventsMarker) elif marker == 'network_news': alsoProvides(context, INetworkNewsMarker) noLongerProvides(context, IReferencesFolder) noLongerProvides(context, INetworkEventsMarker) elif marker == 'network_events': alsoProvides(context, INetworkEventsMarker) noLongerProvides(context, IReferencesFolder) noLongerProvides(context, INetworkNewsMarker) if marker: location = model_url(context, request, query= {'status_message': 'Marker changed'}) return HTTPFound(location=location) # Get a layout layout_provider = get_layout_provider(context, request) layout = layout_provider('community') if IReferencesFolder.providedBy(context): selected = 'reference_manual' elif INetworkNewsMarker.providedBy(context): selected = 'network_news' elif INetworkEventsMarker.providedBy(context): selected = 'network_events' else: selected = None return render_template_to_response( 'templates/advanced_folder.pt', api=api, actions=[], formfields=api.formfields, post_url=model_url(context, request, 'advanced.html'), layout=layout, fielderrors={}, selected=selected, )
def test_handle_submit_set_network_news_marker(self): from karl.content.interfaces import ICommunityFolder from karl.content.interfaces import IReferencesFolder from karl.content.views.interfaces import INetworkEventsMarker from karl.content.views.interfaces import INetworkNewsMarker context = testing.DummyModel(__provides__=(ICommunityFolder, )) request = testing.DummyRequest() form = self._make_one(context, request) response = form.handle_submit({'marker': 'network_news'}) self.failIf(IReferencesFolder.providedBy(context)) self.failIf(INetworkEventsMarker.providedBy(context)) self.failUnless(INetworkNewsMarker.providedBy(context)) self.assertEqual(response.status_int, 302) self.assertEqual( response.location, 'http://example.com/?status_message=Advanced+settings+changed.')
def form_defaults(self): defaults = {} context = self.context if self.use_folder_options: if IReferencesFolder.providedBy(context): defaults['marker'] = 'reference_manual' elif INetworkEventsMarker.providedBy(context): defaults['marker'] = 'network_events' elif INetworkNewsMarker.providedBy(context): defaults['marker'] = 'network_news' else: defaults['marker'] = '' defaults['keywords'] = getattr(context, 'search_keywords', []) defaults['weight'] = getattr(context, 'search_weight', 0) return defaults
def test_handle_submit_set_network_news_marker(self): from karl.content.interfaces import ICommunityFolder from karl.content.interfaces import IReferencesFolder from karl.content.views.interfaces import INetworkEventsMarker from karl.content.views.interfaces import INetworkNewsMarker context = testing.DummyModel( __provides__=(ICommunityFolder,)) request = testing.DummyRequest() form = self._make_one(context, request) response = form.handle_submit({'marker': 'network_news'}) self.failIf(IReferencesFolder.providedBy(context)) self.failIf(INetworkEventsMarker.providedBy(context)) self.failUnless(INetworkNewsMarker.providedBy(context)) self.assertEqual(response.status_int, 302) self.assertEqual(response.location, 'http://example.com/?status_message=Advanced+settings+changed.')
def __call__(self): """ Based on markers, override what can be added to a folder """ url = self.request.resource_url context = self.context # This is the default for all, meaning community, folders _addlist = [ ('Add Folder', url(context, 'add_folder.html')), ('Add File', url(context, 'add_file.html')), ] # Intranet folders by default get Add Page intranets = find_interface(self.context, IIntranets) if intranets: _addlist.append( ('Add Event', url(context, 'add_calendarevent.html')), ) _addlist.append( ('Add Page', url(context, 'add_page.html')), ) # Override all addables in certain markers if IReferencesFolder.providedBy(self.context): _addlist = [('Add Reference Manual', url(context, 'add_referencemanual.html'))] elif IReferenceManual.providedBy(self.context): _addlist = [ ('Add Section', url(context, 'add_referencesection.html')), ('Add File', url(context, 'add_file.html')), ('Add Page', url(context, 'add_page.html')), ] elif IReferenceSection.providedBy(self.context): _addlist = [ ('Add Section', url(context, 'add_referencesection.html')), ('Add File', url(context, 'add_file.html')), ('Add Page', url(context, 'add_page.html')), ] elif INetworkEventsMarker.providedBy(self.context): _addlist = [ ('Add Event', url(context, 'add_calendarevent.html')), ] elif INetworkNewsMarker.providedBy(self.context): _addlist = [ ('Add News Item', url(context, 'add_newsitem.html')), ] return _addlist
def __call__(self): """ Based on markers, override what can be added to a folder """ url = self.request.resource_url context = self.context # This is the default for all, meaning community, folders _addlist = [ ('Add Folder', url(context, 'add_folder.html')), ('Add File', url(context, 'add_file.html')), ] # Intranet folders by default get Add Page intranets = find_interface(self.context, IIntranets) if intranets: _addlist.append( ('Add Event', url(context, 'add_calendarevent.html')), ) _addlist.append(('Add Page', url(context, 'add_page.html')), ) # Override all addables in certain markers if IReferencesFolder.providedBy(self.context): _addlist = [('Add Reference Manual', url(context, 'add_referencemanual.html'))] elif IReferenceManual.providedBy(self.context): _addlist = [ ('Add Section', url(context, 'add_referencesection.html')), ('Add File', url(context, 'add_file.html')), ('Add Page', url(context, 'add_page.html')), ] elif IReferenceSection.providedBy(self.context): _addlist = [ ('Add Section', url(context, 'add_referencesection.html')), ('Add File', url(context, 'add_file.html')), ('Add Page', url(context, 'add_page.html')), ] elif INetworkEventsMarker.providedBy(self.context): _addlist = [ ('Add Event', url(context, 'add_calendarevent.html')), ] elif INetworkNewsMarker.providedBy(self.context): _addlist = [ ('Add News Item', url(context, 'add_newsitem.html')), ] return _addlist
def form_defaults(self): defaults = {} context = self.context if self.use_folder_options: if IReferencesFolder.providedBy(context): defaults['marker'] = 'reference_manual' elif INetworkEventsMarker.providedBy(context): defaults['marker'] = 'network_events' elif INetworkNewsMarker.providedBy(context): defaults['marker'] = 'network_news' else: defaults['marker'] = '' defaults['keywords'] = getattr(context, 'search_keywords', []) defaults['weight'] = getattr(context, 'search_weight', 0) if self.use_unlock: defaults['unlock'] = False return defaults
def form_defaults(self): defaults = {} context = self.context if self.use_folder_options: if IReferencesFolder.providedBy(context): defaults["marker"] = "reference_manual" elif INetworkEventsMarker.providedBy(context): defaults["marker"] = "network_events" elif INetworkNewsMarker.providedBy(context): defaults["marker"] = "network_news" else: defaults["marker"] = "" defaults["keywords"] = getattr(context, "search_keywords", []) defaults["weight"] = getattr(context, "search_weight", 0) if self.use_unlock: defaults["unlock"] = False return defaults
def test_submit_network_events(self): context = testing.DummyModel(title='Dummy') from webob.multidict import MultiDict request = testing.DummyRequest( params=MultiDict({ 'form.submitted': '1', 'marker': 'network_events', }) ) renderer = testing.registerDummyRenderer( 'templates/advanced_folder.pt') response = self._callFUT(context, request) self.assertEqual(response.location, "http://example.com/?status_message=Marker+changed") from karl.content.interfaces import IReferencesFolder from karl.content.views.interfaces import INetworkNewsMarker from karl.content.views.interfaces import INetworkEventsMarker self.failIf(IReferencesFolder.providedBy(context)) self.failIf(INetworkNewsMarker.providedBy(context)) self.failUnless(INetworkEventsMarker.providedBy(context))
def __call__(self, default=None): # The layouts are by identifier, e.g. layout='community' # A series of tests, in order of precedence. layout = None if default is not None: layout = getattr(self, default + '_layout') intranet = find_interface(self.context, IIntranet) # Group a series of intranet-oriented decisions if intranet: # First, when under an intranet, OSI wants forums to get # the generic layout. if find_interface(self.context, IForum): layout = getattr(self, 'generic_layout') # Now for an intranet. Everything gets the two-column # view except the intranet home page, which gets the 3 # column treatment. else: layout = getattr(self, 'intranet_layout') elif find_interface(self.context, IIntranets): if find_interface(self.context, IForum): layout = self.generic_layout elif ICalendarEvent.providedBy(self.context): layout = self.generic_layout elif INetworkNewsMarker.providedBy(self.context): layout = self.generic_layout elif find_interface(self.context, IReferencesFolder): layout = self.generic_layout elif INetworkEventsMarker.providedBy(self.context): layout = self.generic_layout elif not find_interface(self.context, ICommunity): # If we're not in a community or an intranet we need to use the # generic layout. layout = self.generic_layout return layout