source: products/quintagroup.quills.extras/trunk/quintagroup/quills/extras/Extensions/utils.py @ 1239

Last change on this file since 1239 was 1239, checked in by mylan, 15 years ago

Moved conditional adding IPossibleWeblogEntry to Document objects on adding it in the weblog, based on content rules and workflow transition. Tests updated

File size: 2.1 KB
Line 
1from zope.interface import alsoProvides, noLongerProvides
2
3from quills.app.utilities import recurseToInterface
4from quills.core.interfaces import IWeblogEnhanced
5from quills.core.interfaces.enabled import IPossibleWeblogEntry
6
7from Products.CMFCore.utils import getToolByName
8
9from quintagroup.quills.extras.browser.interfaces import IWeblogCategory
10from zope.component import getSiteManager
11
12def set_layout(sc_info):
13    #portal = sc_info.getPortal()
14    obj = sc_info.object
15    weblog = recurseToInterface(obj, IWeblogEnhanced)
16    if weblog:
17        updateBlogPost(obj)
18
19def updateBlogPost(obj):
20    # set default layout
21    obj.setLayout('weblogentry_view')
22    # add providing of IPossibleWeblogEntry interface
23    if not IPossibleWeblogEntry.providedBy(obj):
24        alsoProvides(obj, IPossibleWeblogEntry)
25    # allow discussion for object
26    dt = getToolByName(obj,'portal_discussion')
27    dt.overrideDiscussionFor(obj, 1)
28
29def processBlog(self, path, blogentry_types=["Document",]):
30    catalog = getToolByName(self,'portal_catalog')
31    brains = catalog(path=path, portal_type=blogentry_types)
32    for b in brains:
33        obj = b.getObject()
34        updateBlogPost(obj)
35        print b.getURL(), 'updated'
36    #raise Exception("some error")
37
38
39def processBlogSubFolders(self):
40    # update blog sub-folders
41    res = []
42    brains = self.portal_catalog(path='/'.join(self.getPhysicalPath()),
43                                 portal_type=['Large Plone Folder','Folder'])
44    context_path = '/'.join(self.getPhysicalPath())
45    brains = filter(lambda b:not b.getPath()==context_path, brains)
46    for bf in brains:
47        item_res = [bf.getPath(),0,0]
48        ob = bf.getObject()
49        if ob.hasProperty('layout'):
50            ob.manage_delProperties(['layout',])
51        ob.manage_addProperty('layout','weblogfolder_view','string')
52        if IWeblogEnhanced.providedBy(ob):
53            noLongerProvides(ob,IWeblogEnhanced)
54            item_res[1] = 1
55        if not IWeblogCategory.providedBy(ob):
56            alsoProvides(ob,IWeblogCategory)
57            item_res[2] = 1
58        res.append(item_res)
59    return res
Note: See TracBrowser for help on using the repository browser.