generic setup de-mystified
DESCRIPTION
A talk focusing on the GenericSetup tool and it's use in Plone. NOTE: There were a couple screencasts that won't transfer to the slides.TRANSCRIPT
open sourcenowhere to go but
sixfeetup.com/immerse
GenericSetupDe-mystified
Clayton ParkerPlone Symposium East 2009
sixfeetup.com/immerse
Who am I?
• Lead Developer at Six Feet Up, Inc.
• claytron on IRC
sixfeetup.com/immerse
What’s in store?
• The what and why of GenericSetup
• Importing and exporting
• Best practices
• portal_setup vs. portal_quickinstaller
sixfeetup.com/immerse
What?
• portal_quickinstaller replacement
• CustomizationPolicy replacement
• Site configuration
• Upgrades
sixfeetup.com/immerse
Why?
“Persistence means always having tosay you’re sorry” - Seaver’s Law
sixfeetup.com/immerse
Install.py == sadness
sixfeetup.com/immerse
GenericSetup Profiles
• Base profile
• Extension profile
sixfeetup.com/immerse
What’s in a profile?
• profile-<package_name>:<profile_name>
• profile-my.package:default
• my.package:default
<genericsetup:registerProfile name="default" title="My Package" directory="profiles/default" description="My Package install profile" provides="Products.GenericSetup.interfaces.EXTENSION" />
sixfeetup.com/immerse
On the filesystemmy.package/my/package/ | |- configure.zcml |- exportimport/ | |- profiles/ | | | |- default/ | | | |- metadata.xml | |- my.package-default.txt | |- <other profile files> | |- setuphandlers.py |- upgrades.py
sixfeetup.com/immerse
sixfeetup.com/immerse
sixfeetup.com/immerse
sixfeetup.com/immerse
sixfeetup.com/immerse
sixfeetup.com/immerse
metadata.xml
<?xml version="1.0"?><metadata> <version>1.0</version> <dependencies> <dependency>profile-my.theme:default</dependency> <dependency>profile-my.other.package:default</dependency> </dependencies></metadata>
sixfeetup.com/immerse
sixfeetup.com/immerse
Careful with that axe, Eugene...
sixfeetup.com/immerse
sixfeetup.com/immerse
Tell me more
• Profile for initial site setup
• Upgrade steps
sixfeetup.com/immerse
Upgrade steps
<genericsetup:upgradeStep title="Setup calendar" description="Modify the calendar settings" source="0.9" destination="1.0" handler=".upgrades.setupCalendar" sortkey="10" profile="my.package:default" />
sixfeetup.com/immerse
Upgrade steps
from Products.CMFCore.utils import getToolByName
def setupCalendar(context): ctool = getToolByName(context, 'portal_calendar') cal_types = list(ctool.calendar_types) if 'MyEventType' not in cal_types: cal_types.append('MyEventType') ctool.calendar_types = cal_types
sixfeetup.com/immerse
Best Practices
• Uninstall profiles
• Trim the export
• Be aware of other profiles
sixfeetup.com/immerse
<property name="metaTypesNotToList" type="lines"> <element value="ATBooleanCriterion"/> <element value="ATDateCriteria"/> <element value="ATDateRangeCriterion"/> <element value="ATListCriterion"/> ...</property>
<property name="metaTypesNotToList" type="lines" purge="False"> <element value="Image"/> <element value="File"/></property>
sixfeetup.com/immerse
portal_setup vs. portal_quickinstaller
sixfeetup.com/immerse
def install(portal): """Run the GS profile to install this package""" out = StringIO() runProfile(portal, 'profile-my.package:default') print >>out, "Installed my.package" return out.getvalue()
def uninstall(portal, reinstall=False): """Run the GS profile to install this package""" out = StringIO() if not reinstall: runProfile(portal, 'profile-my.package:uninstall') print >>out, "Uninstalled my.package" return out.getvalue()
sixfeetup.com/immerse
<five:registerPackage package="." initialize=".initialize"/>
Make me a Zope 2 style product
sixfeetup.com/immerse
What did we learn?
• The what and why of GenericSetup
• Importing and exporting
• Best practices
• portal_setup vs. portal_quickinstaller
sixfeetup.com/immerse
Links
• http://www.sixfeetup.com/swag/generic-setup-quick-reference-card
• http://plone.org/documentation/manual/generic-setup/
sixfeetup.com/immerseRegister by June 30th
and save $255!
1 non-profit project • 10 workshops • 14 mentors • 3 days
Learn Plone by building a website from A to Z