def enableSyndication(self, obj): """ Enable syndication for the obj """ if not _checkPermission(ModifyPortalContent, obj): raise Unauthorized settings = IFeedSettings(obj) settings.enabled = True
def afterSetUp(self): self.syndication = getToolByName(self.portal, 'portal_syndication') self.folder.invokeFactory('Document', 'doc1') self.folder.invokeFactory('Document', 'doc2') self.folder.invokeFactory('File', 'file') self.doc1 = self.folder.doc1 self.doc2 = self.folder.doc2 self.file = self.folder.file #Enable syndication on folder registry = getUtility(IRegistry) self.site_settings = registry.forInterface(ISiteSyndicationSettings) settings = IFeedSettings(self.folder) settings.enabled = True self.folder_settings = settings
def __call__(self): if self.newsml_enabled(raise404=True): settings = IFeedSettings(self.context, None) if settings and self.__name__ not in settings.feed_types: raise NotFound self.request.response.setHeader( 'Content-Type', 'application/vnd.iptc.g2.newsitem+xml') return self.index()
def rss_url(self): settings = IFeedSettings(self.context) types = settings.feed_types url = self.context.absolute_url() if len(types) == 0: return url _type = types[0] return '%s/%s' % (url, _type)
def setUp(self): self.portal = self.layer['portal'] self.syndication = getToolByName(self.portal, 'portal_syndication') with api.env.adopt_roles(['Manager']): self.portal.invokeFactory('Folder', 'folder') self.folder = self.portal.folder self.folder.invokeFactory('Document', 'doc1') self.folder.invokeFactory('Document', 'doc2') self.folder.invokeFactory('File', 'file') self.doc1 = self.folder.doc1 self.doc2 = self.folder.doc2 self.file = self.folder.file # Enable syndication on folder registry = getUtility(IRegistry) self.site_settings = registry.forInterface(ISiteSyndicationSettings) settings = IFeedSettings(self.folder) settings.enabled = True self.folder_settings = settings
def setUp(self): super(TestRenderBody, self).setUp() self.folder.invokeFactory('News Item', 'news1') self.folder.invokeFactory('News Item', 'news2') self.news1 = self.folder.news1 self.news1.setTitle('News 1') self.news1.setDescription('The news item #1') self.news1.setText(BODY_TEXT) self.news2 = self.folder.news2 self.news2.setTitle('News 2') self.news2.setText(ROOTED_BODY_TEXT) # Enable syndication on folder registry = getUtility(IRegistry) self.site_settings = registry.forInterface(ISiteSyndicationSettings) settings = IFeedSettings(self.folder) settings.enabled = True settings.render_body = True self.folder_settings = settings
def __init__(self, context): self.context = context self.settings = IFeedSettings(context) self.site = getSite() self.pm = getToolByName(self.context, 'portal_membership') pprops = getToolByName(self.context, 'portal_properties') self.site_props = pprops.site_properties self.view_action_types = self.site_props.getProperty( 'typesUseViewActionInListings', ('File', 'Image'))
def context_enabled(self, raise404=False): settings = IFeedSettings(self.context, None) if not self.context_allowed() or not settings.enabled: if raise404: raise NotFound else: return False else: return True
def isSyndicationAllowed(self, obj=None): """ Check whether syndication is enabled for the site. This provides for extending the method to check for whether a particular obj is enabled, allowing for turning on only specific folders for syndication. """ settings = IFeedSettings(obj) return settings.enabled
def __getattr__(self, name): default = None if name in ISiteSyndicationSettings.names(): default = getattr(self.site_settings, name) elif name == 'enabled' and self.site_settings.default_enabled: default = True elif name in IFeedSettings.names(): default = IFeedSettings[name].default return self._metadata.get(name, default)
def newsml_allowed(self): util = getMultiAdapter((self.context, self.request), name='syndication-util') if not util.site_enabled(): return False elif ISyndicatable.providedBy(self.context): settings = IFeedSettings(self.context, None) if settings.enabled: return True return False
def allowed_feed_types(self): settings = IFeedSettings(self.context) factory = getUtility( IVocabularyFactory, "collective.syndication.vocabularies.SyndicationFeedTypes") vocabulary = factory(self.context) types = [] for typ in settings.feed_types: types.append(vocabulary.getTerm(typ)) return [{'path': t.value, 'title': t.title} for t in types]
def __call__(self): util = getMultiAdapter((self.context, self.request), name='syndication-util') if util.context_enabled(raise404=True): settings = IFeedSettings(self.context) if self.__name__ not in settings.feed_types: raise NotFound index = self.index() self.set_response_header() return index
def afterSetUp(self): self.syndication = getToolByName(self.portal, 'portal_syndication') self.folder.invokeFactory('Document', 'doc') self.folder.invokeFactory('Document', 'doc1') self.folder.invokeFactory('News Item', 'news1') self.folder.invokeFactory('News Item', 'news2') self.folder.invokeFactory('File', 'file') self.doc1 = self.folder.doc1 self.news1 = self.folder.news1 self.news1.setText(BODY_TEXT) self.news2 = self.folder.news2 self.news2.setText(ROOTED_BODY_TEXT) self.file = self.folder.file #Enable syndication on folder registry = getUtility(IRegistry) self.site_settings = registry.forInterface(ISiteSyndicationSettings) settings = IFeedSettings(self.folder) settings.enabled = True self.folder_settings = settings
def disableSyndication(self, obj): if not _checkPermission(ModifyPortalContent, obj): raise Unauthorized settings = IFeedSettings(obj) settings.enabled = False
def context_enabled(self): settings = IFeedSettings(self.context, None) if settings and not settings.enabled: raise NotFound else: return True