1 | from Acquisition import aq_inner |
---|
2 | from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile |
---|
3 | from Products.Five import BrowserView |
---|
4 | from Products.CMFCore.utils import getToolByName |
---|
5 | from Products.qPingTool import qPingToolMessageFactory as _ |
---|
6 | |
---|
7 | |
---|
8 | class 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 |
---|