1 from Products.CMFCore.utils import getToolByName
2 from Acquisition import aq_base
4 from Products.Archetypes.event import ObjectInitializedEvent
13 def makePublicObject(container, type_name, id, **kw):
14 """Create an object in CONTAINER with type TYPE_NAME and id ID. Additional keyword args
15 specify additional factory arguments. After creation, the object is published if needed."""
16 id = container.invokeFactory(id=id, type_name=type_name, **kw)
17 ob = getattr(container,id)
18 event.notify(ObjectInitializedEvent(ob))
19 if hasattr(aq_base(ob), 'at_post_create_script'):
20 ob.at_post_create_script()
21 if hasattr(aq_base(ob), 'manage_afterPortalFactoryCreate'):
22 ob.manage_afterPortalFactoryCreate()
23 wf = getToolByName(container, 'portal_workflow')
24 if wf.getInfoFor(ob,'review_state','') != 'published':
25 wf.doActionFor(ob,'publish',comment='site setup')
28 def siteSetup(context):
30 if context.readDataFile('koehsel.policy_setup.txt') is None:
33 site = context.getSite()
34 qi = getToolByName(site, 'portal_quickinstaller')
35 wf = getToolByName(site, 'portal_workflow')
37 # Install EasyShop product
39 for p in INSTALL_PRODUCTS:
40 if not qi.isProductInstalled(p):
43 # Add and publish shop instance
46 except AttributeError:
47 makePublicObject(container=site, type_name='EasyShop',
48 id='shop', title='Shop', shopOwner='admin')
50 # Hide Users, News and Events
52 for id in ('Members', 'news', 'events'):
54 if wf.getInfoFor(ob,'review_state','') != 'private':
55 wf.doActionFor(ob,'retract',comment='site setup')
58 def contentSetup(app):
59 app.manage_addProduct['CMFPlone'].addPloneSite(id='site',
60 extension_ids=['koehsel.policy:default'])
63 # Called via hackery in __init__.py on every site start
66 except AttributeError:
68 from Testing.makerequest import makerequest
69 from AccessControl.SecurityManagement import newSecurityManager
70 import transaction, AccessControl
72 # Call 'contentSetup' as SITE_OWNER user with a valid REQUEST
73 req = makerequest(app)
74 newSecurityManager(req.REQUEST, app.acl_users.getUserById(SITE_OWNER).__of__(app.acl_users))
77 newSecurityManager(None, AccessControl.User.system)