def __call__(self): # Bug clock server CSRF fix plone.protect 3 alsoProvides(self.request, IDisableCSRFProtection) socket.setdefaulttimeout(20) # Items erstellen gemaess Blog-Feed self.update() # Tag fuer Startseite an neusten Post vergeben; vorher Tag allen Posts nehmen if not self.context.id in self.feedStartseite: message = _('Der Feed wurde aktualisiert.') messages = IStatusMessage(self.request, alternate=None) if messages is not None: messages.addStatusMessage(message, 'info') return self.request.response.redirect(self.context.absolute_url()) folder_path = '/'.join(self.context.getPhysicalPath()) catalog = getToolByName(self.context, 'portal_catalog') items = catalog(path={'query': folder_path}, # , 'depth': 1 portal_type='FeedFeederItem', sort_on="getFeedItemUpdated", sort_order="reverse") # Startseiten-Tag entfernen (alle Items) for item in items: feeditem = item.getObject() # print feeditem.id, feeditem.title_or_id(), item.getFeedItemUpdated sbj = feeditem.Subject() if TAG_STARTSEITE in sbj: piep = set(sbj) piep.remove(TAG_STARTSEITE) feeditem.setSubject(list(piep)) feeditem.reindexObject() # Startseiten-Tag dem ersten Item geben message = _('Feed wurde aktualisiert.') if items: firstitem = items[0] # print "firstitem", firstitem.id, firstitem.Title feeditem = firstitem.getObject() # imageurl = getFeedItemsImageUrl(feeditem) if self.context.feeds: blogurl = self.context.feeds[0] try: # req = urllib2.Request(blogurl) # req.add_header('User-Agent', USER_AGENT) # urllib2.urlopen(req) r = requests.get(blogurl, timeout=5) sbj = set(feeditem.Subject()) sbj.update((TAG_STARTSEITE,)) feeditem.setSubject(list(sbj)) feeditem.reindexObject() message = _('Feed wurde aktualisiert.') except Exception, e: logger.error(str(e)) message = _('Feed ist nicht erreichbar. ') + blogurl logger.error(message)
def __call__(self): self.update() message = _('Feed items updated') messages = IStatusMessage(self.request, alternate=None) if messages is not None: messages.addStatusMessage(message, 'info') self.request.response.redirect(self.context.absolute_url())
def addItem(self, id): """ """ self.invokeFactory('FeedFeederItem', id) transition = self.getDefaultTransition() if transition != '': wf_tool = getToolByName(self, 'portal_workflow') wf_tool.doActionFor(self[id], transition, comment=_('Automatic transition triggered by FeedFolder')) return self[id]
def addItem(self, id): """ """ self.invokeFactory('FeedFeederItem', id) transition = self.getDefaultTransition() if transition != '': wf_tool = getToolByName(self, 'portal_workflow') wf_tool.doActionFor( self[id], transition, comment=_('Automatic transition triggered by FeedFolder')) return self[id]
def getAvailableTransitions(self): # Create a temporary object so we can ask what transitions are # available for it. id = 'temp_zest_temp' self.invokeFactory('FeedFeederItem', id) wf_tool = getToolByName(self, 'portal_workflow') transitions = wf_tool.getTransitionsFor(self[id]) display_trans = [('', _('Keep initial state')), ] for trans in transitions: display_trans.append((trans['id'], trans['name'])) # Unindex and remove the temporary object self[id].unindexObject() self._delOb(id) return DisplayList(display_trans)
def getAvailableTransitions(self): # Create a temporary object so we can ask what transitions are # available for it. id = 'temp_zest_temp' self.invokeFactory('FeedFeederItem', id) wf_tool = getToolByName(self, 'portal_workflow') transitions = wf_tool.getTransitionsFor(self[id]) display_trans = [ ('', _('Keep initial state')), ] for trans in transitions: display_trans.append((trans['id'], trans['name'])) # Unindex and remove the temporary object self[id].unindexObject() self._delOb(id) return DisplayList(display_trans)
def addEnclosure(self, id): """ """ self.invokeFactory('File', id) self.reindexObject() transition = self.getDefaultTransition() if transition != '': wf_tool = getToolByName(self, 'portal_workflow') # The default transition should be valid for a # FeedFolderItem, but our File might not have the same # transitions available. So check this. transitions = wf_tool.getTransitionsFor(self[id]) transition_ids = [trans['id'] for trans in transitions] if transition in transition_ids: wf_tool.doActionFor(self[id], transition, comment=_('Automatic transition triggered by FeedFolder')) return self[id]
def __call__(self): self.update() # Tag fuer Startseite an neusten Post vergeben; vorher Tag allen Posts nehmen # logger.info("Tags von Posts entfernen") catalog = getToolByName(self.context, 'portal_catalog') items = catalog( portal_type='FeedFeederItem', sort_on="effective", sort_order="reverse") for item in items: feeditem = item.getObject() sbj = feeditem.Subject() # print feeditem if TAG_STARTSEITE in sbj: piep = set(sbj) piep.remove(TAG_STARTSEITE) feeditem.setSubject(list(piep)) feeditem.reindexObject() # print str(feeditem), "cleaned" if items: firstitem = items[0] feeditem = firstitem.getObject() sbj = set(feeditem.Subject()) sbj.update((TAG_STARTSEITE,)) feeditem.setSubject(list(sbj)) feeditem.reindexObject() # print "newest FeedItem:", str(feeditem), str(sbj) # Rest wie in feedfeeder message = _('Feed items updated') messages = IStatusMessage(self.request, alternate=None) if messages is not None: messages.addStatusMessage(message, 'info') self.request.response.redirect(self.context.absolute_url())
from Products.Archetypes.atapi import * from zope import interface from Products.ATContentTypes.content.folder import ATBTreeFolder from Products.CMFCore.utils import getToolByName from Products.feedfeeder.interfaces.container import IFeedsContainer from Products.feedfeeder.config import PROJECTNAME from Products.feedfeeder import _ schema = Schema(( LinesField( name='feeds', widget=LinesWidget( description=_("help_feeds", default="List of rss feeds. You can prefix feed link titles using | separator. " "It is probably a good idea to add a colon or dash at the end of the prefix ('My place: |http://myplace/feed')."), label=_('feedfeeder_label_feeds', default='Feeds') ) ), BooleanField( name='redirect', widget=BooleanWidget( description=_("help_redirect", default="If checked the feed item will be automatically redirected if you don't have the edit permission."), label=_('label_redirect', default='Automatic redirect of feed items') ) ), StringField( name='defaultTransition',
from AccessControl import ClassSecurityInfo from Products.Archetypes.atapi import * from zope import interface from Products.ATContentTypes.content.folder import ATBTreeFolder from Products.CMFCore.utils import getToolByName from Products.feedfeeder.interfaces.container import IFeedsContainer from Products.feedfeeder.config import PROJECTNAME from Products.feedfeeder import _ schema = Schema(( LinesField( name='feeds', widget=LinesWidget(description=_( "help_feeds", default= "List of rss feeds. You can prefix feed link titles using | separator. " "It is probably a good idea to add a colon or dash at the end of the prefix ('My place: |http://myplace/feed')." ), label=_('feedfeeder_label_feeds', default='Feeds'))), BooleanField( name='redirect', widget=BooleanWidget(description=_( "help_redirect", default= "If checked the feed item will be automatically redirected if you don't have the edit permission." ), label=_( 'label_redirect', default='Automatic redirect of feed items'))), StringField(
from Products.feedfeeder.interfaces.item import IFeedItem from Products.feedfeeder.config import PROJECTNAME from Products.feedfeeder import _ copied_fields = {} copied_fields['text'] = ATDocument.schema['text'].copy() copied_fields['text'].required = 0 schema = Schema(( StringField( name='feedItemAuthor', widget=StringWidget( label=_('feedfeeder_label_feedItemAuthor', default='Feeditemauthor'), ) ), DateTimeField( name='feedItemUpdated', default=DateTime('2000/01/01'), widget=CalendarWidget( label=_('feedfeeder_label_feedItemUpdated', 'Feeditemupdated'), ) ), copied_fields['text'], StringField( name='link', widget=StringWidget(
from Products.CMFPlone.utils import base_hasattr from zope import interface from Products.feedfeeder.interfaces.item import IFeedItem from Products.feedfeeder.config import PROJECTNAME from Products.feedfeeder import _ copied_fields = {} copied_fields['text'] = ATDocument.schema['text'].copy() copied_fields['text'].required = 0 schema = Schema( ( StringField(name='feedItemAuthor', widget=StringWidget(label=_( 'feedfeeder_label_feedItemAuthor', default='Feeditemauthor'), )), DateTimeField(name='feedItemUpdated', default=DateTime('2000/01/01'), widget=CalendarWidget(label=_( 'feedfeeder_label_feedItemUpdated', 'Feeditemupdated'), )), copied_fields['text'], StringField(name='link', widget=StringWidget(label=_('feedfeeder_label_link', default='Link'), )), ComputedField(name='objectids', widget=ComputedWidget( label=_('feedfeeder_label_objectids', default='Object Ids'), )), ComputedField(name='hasBody',
from AccessControl import ClassSecurityInfo from Products.Archetypes.atapi import * from zope import interface from Products.ATContentTypes.content.folder import ATBTreeFolder from Products.CMFCore.utils import getToolByName from Products.feedfeeder.interfaces.container import IFeedsContainer from Products.feedfeeder.config import PROJECTNAME from Products.feedfeeder import _ schema = Schema(( LinesField( name='feeds', widget=LinesWidget( label=_('feedfeeder_label_feeds', default='Feeds') ) ), BooleanField( name='redirect', widget=BooleanWidget( description=_("help_redirect", default="If checked the feed item will be automatically redirected if you don't have the edit permission."), label=_('label_redirect', default='Automatic redirect of feed items') ) ), StringField( name='defaultTransition', vocabulary='getAvailableTransitions', widget=SelectionWidget(