source: products/qPingTool/branches/plone-3.1/browser/ping.py

Last change on this file was 243, checked in by mylan, 18 years ago

Remove workflow chain for Discussion Item on installation - resolved cataloging bug.

File size: 2.1 KB
Line 
1from Acquisition import aq_inner
2from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
3from Products.Five import BrowserView
4from Products.CMFCore.utils import getToolByName
5from Products.qPingTool import qPingToolMessageFactory as _
6
7
8class PingView(BrowserView):
9    """A class with helper methods for use in views/templates.
10    """
11    template = ViewPageTemplateFile('ping_setup.pt')
12    ping_message = ''
13
14    def __call__(self):
15        postback = True
16        context = aq_inner(self.context)
17        portal = getToolByName(self.context, 'portal_url').getPortalObject()
18        portal_pingtool = getToolByName(portal, 'portal_pingtool')
19        form = self.request.form
20        ping = form.get('form.button.Ping', False)
21        setup_save = form.get('form.button.Save', False)
22        setup_cancel = form.get('form.button.Cancel', False)
23        if ping:
24            status, message = portal_pingtool.pingFeedReader(context)
25            point = message.find('.')+1
26            self.ping_message = message[point:]
27            state = self.get_state(status)
28            portal.plone_utils.addPortalMessage(message[:point], state)
29
30        elif setup_save:
31            enable_ping = form.get('enable_ping', False)
32            ping_sites = form.get('ping_sites', ())
33            ping_Weblog = form.get('ping_Weblog', '')
34            ping_RSS1 = form.get('ping_RSS1', '')
35            ping_RSS2 = form.get('ping_RSS2', '')
36            status, message = portal_pingtool.setupPing(context, enable_ping, ping_sites, ping_Weblog, ping_RSS1, ping_RSS2)
37            state = self.get_state(status)
38            portal.plone_utils.addPortalMessage(_(message), state)
39
40        elif setup_cancel:
41            portal.plone_utils.addPortalMessage(_("Changes canceled."))
42            self.request.response.redirect(context.absolute_url())
43            postback = False
44
45        if postback:
46            return self.template()
47
48    def get_state(self, status):
49        if status == 'success':
50            state = 'info'
51        elif status == 'failed':
52            state = 'warning'
53        else:
54            state = 'info'
55        return state
Note: See TracBrowser for help on using the repository browser.