1 from Products.CMFCore.utils import getToolByName
2 from Acquisition import aq_base
4 from Products.Archetypes.event import ObjectInitializedEvent
5 from plone.app.controlpanel.security import SecurityControlPanelAdapter
15 def siteSetupContent(site):
18 except AttributeError: pass
21 wf = getToolByName(site, 'portal_workflow')
23 # Change front-page stuff
25 fp = getattr(site,'front-page')
26 fp.setTitle("Startsteite")
29 fp.setPresentation(False)
32 # Create easy-shop instance
34 shop = makeObject(container=site, type_name='EasyShop', id='shop',
35 title='Shop', shopOwner='admin')
37 if wf.getInfoFor(shop,'review_state','') != 'published':
38 wf.doActionFor(shop,'publish',comment='site setup')
40 # Hide Users, News and Events
42 for id in ('Members', 'news', 'events'):
44 if wf.getInfoFor(ob,'review_state','') != 'private':
45 wf.doActionFor(ob,'retract',comment='site setup')
49 mt = getToolByName(site,'portal_membership')
50 mt.addMember(id='shop', password='shop', roles=('Member',), domains=())
51 member = mt.getMemberById('shop')
52 member.setMemberProperties({'fullname': 'Shop Testuser'},
53 {'email': 'test@localhost'})
56 def makeObject(container, type_name, id, **kw):
57 """Create an object in CONTAINER with type TYPE_NAME and id ID. Additional keyword args
58 specify additional factory arguments. After creation, the object is published if needed."""
59 id = container.invokeFactory(id=id, type_name=type_name, **kw)
60 ob = getattr(container,id)
61 event.notify(ObjectInitializedEvent(ob))
62 if hasattr(aq_base(ob), 'at_post_create_script'):
63 ob.at_post_create_script()
64 if hasattr(aq_base(ob), 'manage_afterPortalFactoryCreate'):
65 ob.manage_afterPortalFactoryCreate()
69 def siteSetup(context):
71 if context.readDataFile('koehsel.policy_setup.txt') is None:
74 site = context.getSite()
78 qi = getToolByName(site, 'portal_quickinstaller')
79 for p in INSTALL_PRODUCTS:
80 if not qi.isProductInstalled(p):
83 # Enable Self-Registration
85 scpa = SecurityControlPanelAdapter(site)
86 scpa.set_enable_self_reg(True)
88 # If not already installed, initialize development content
90 siteSetupContent(site)
93 def contentSetup(app):
94 app.manage_addProduct['CMFPlone'].addPloneSite(id=SITE_NAME,
95 extension_ids=['koehsel.policy:default'])
98 # Called via hackery in __init__.py on every site start
100 try: getattr(app,SITE_NAME)
101 except AttributeError: pass
104 from Testing.makerequest import makerequest
105 from AccessControl.SecurityManagement import newSecurityManager
106 import transaction, AccessControl
108 # Call 'contentSetup' as SITE_OWNER user with a valid REQUEST
109 req = makerequest(app)
110 newSecurityManager(req.REQUEST, app.acl_users.getUserById(SITE_OWNER).__of__(app.acl_users))
113 newSecurityManager(None, AccessControl.User.system)