[626] | 1 | from Acquisition import aq_inner |
---|
| 2 | from zope.annotation.interfaces import IAnnotations |
---|
| 3 | from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile |
---|
| 4 | from Products.Five import BrowserView |
---|
| 5 | from Products.CMFCore.utils import getToolByName |
---|
| 6 | |
---|
| 7 | from quintagroup.pingtool.interfaces import ISyndicationObject |
---|
| 8 | |
---|
| 9 | class RunPingView(BrowserView): |
---|
| 10 | """A class with helper methods for use in views/templates. |
---|
| 11 | """ |
---|
| 12 | def __call__(self): |
---|
| 13 | context = aq_inner(self.context) |
---|
| 14 | annotations = IAnnotations(self.context) |
---|
| 15 | portal = getToolByName(self.context, 'portal_url').getPortalObject() |
---|
| 16 | pp = getToolByName(portal, 'portal_pingtool', None) |
---|
| 17 | |
---|
| 18 | if pp: |
---|
| 19 | status, message = pp.pingFeedReader(context) |
---|
| 20 | portal_message, ping_message = message['portal_message'], message['return_message'] |
---|
| 21 | annotations['ping_message'] = ping_message |
---|
| 22 | state = self.get_state(status) |
---|
| 23 | portal.plone_utils.addPortalMessage(portal_message, state) |
---|
| 24 | |
---|
| 25 | if state == "warning": |
---|
| 26 | self.request.response.redirect(context.absolute_url()+'/base_edit') |
---|
| 27 | else: |
---|
| 28 | self.request.response.redirect('@@return_ping') |
---|
| 29 | |
---|
| 30 | def get_state(self, status): |
---|
| 31 | if status == 'success': |
---|
| 32 | state = 'info' |
---|
| 33 | elif status == 'failed': |
---|
| 34 | state = 'warning' |
---|
| 35 | else: |
---|
| 36 | state = 'info' |
---|
| 37 | return state |
---|
| 38 | |
---|
| 39 | |
---|
| 40 | class CanPingView(BrowserView): |
---|
| 41 | """A class with helper methods for use in views/templates. |
---|
| 42 | """ |
---|
| 43 | def __call__(self): |
---|
| 44 | return ISyndicationObject.providedBy(self.context) and \ |
---|
| 45 | (hasattr(self.context, 'enable_ping') and self.context.enable_ping or False) |
---|
| 46 | |
---|
| 47 | |
---|
| 48 | class ReturnPingView(BrowserView): |
---|
| 49 | """A class with helper methods for use in views/templates. |
---|
| 50 | """ |
---|
| 51 | template = ViewPageTemplateFile('return_ping.pt') |
---|
| 52 | |
---|
| 53 | def __call__(self): |
---|
| 54 | annotations = IAnnotations(self.context) |
---|
| 55 | self.ping_message = annotations['ping_message'] |
---|
| 56 | return self.template() |
---|