示例#1
0
文件: files.py 项目: boothead/karl
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,
        )
示例#2
0
 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.')
示例#3
0
    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
示例#4
0
 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.')
示例#5
0
文件: adapters.py 项目: araymund/karl
    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
示例#6
0
    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
示例#7
0
    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
示例#8
0
文件: advanced.py 项目: lslaz1/karl
    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
示例#9
0
    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))