[198] | 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 |
---|
[243] | 5 | from Products.qPingTool import qPingToolMessageFactory as _ |
---|
[198] | 6 | |
---|
[201] | 7 | |
---|
[198] | 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', ()) |
---|
[215] | 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) |
---|
[198] | 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 |
---|