[commits] r149 - in selinux-site/trunk: . selinux.dev selinux.dev/selinux selinux.dev/selinux/dev selinux.dev/selinux/dev/profiles selinux.dev/selinux/dev/profiles/default

tim at mail.se.linux.org tim at mail.se.linux.org
Ons Nov 28 16:21:01 CET 2007


Author: tim
Date: 2007-11-28 16:21:01 +0100 (Wed, 28 Nov 2007)
New Revision: 149

Added:
   selinux-site/trunk/selinux.dev/
   selinux-site/trunk/selinux.dev/selinux/
   selinux-site/trunk/selinux.dev/selinux/__init__.py
   selinux-site/trunk/selinux.dev/selinux/dev/
   selinux-site/trunk/selinux.dev/selinux/dev/__init__.py
   selinux-site/trunk/selinux.dev/selinux/dev/configure.zcml
   selinux-site/trunk/selinux.dev/selinux/dev/content.py
   selinux-site/trunk/selinux.dev/selinux/dev/profiles/
   selinux-site/trunk/selinux.dev/selinux/dev/profiles/default/
   selinux-site/trunk/selinux.dev/selinux/dev/profiles/default/import_steps.xml
   selinux-site/trunk/selinux.dev/selinux/dev/setuphandlers.py
   selinux-site/trunk/selinux.dev/setup.py
Log:
Add a development package that adds initial content when running buildout for the first time. This is not used in production.


Added: selinux-site/trunk/selinux.dev/selinux/__init__.py
===================================================================
--- selinux-site/trunk/selinux.dev/selinux/__init__.py	                        (rev 0)
+++ selinux-site/trunk/selinux.dev/selinux/__init__.py	2007-11-28 15:21:01 UTC (rev 149)
@@ -0,0 +1,5 @@
+try:
+    __import__('pkg_resources').declare_namespace(__name__)
+except ImportError:
+    from pkgutil import extend_path
+    __path__ = extend_path(__path__, __name__)


Property changes on: selinux-site/trunk/selinux.dev/selinux/__init__.py
___________________________________________________________________
Name: svn:keywords
   + Id

Added: selinux-site/trunk/selinux.dev/selinux/dev/__init__.py
===================================================================


Property changes on: selinux-site/trunk/selinux.dev/selinux/dev/__init__.py
___________________________________________________________________
Name: svn:keywords
   + Id

Added: selinux-site/trunk/selinux.dev/selinux/dev/configure.zcml
===================================================================
--- selinux-site/trunk/selinux.dev/selinux/dev/configure.zcml	                        (rev 0)
+++ selinux-site/trunk/selinux.dev/selinux/dev/configure.zcml	2007-11-28 15:21:01 UTC (rev 149)
@@ -0,0 +1,16 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope"
+    xmlns:five="http://namespaces.zope.org/five"
+    xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
+    i18n_domain="plone">
+
+  <genericsetup:registerProfile
+      name="selinux"
+      title="SeLinux dev"
+      directory="profiles/default"
+      description="Extension profile to configure SeLinux site"
+      for="Products.CMFPlone.interfaces.IPloneSiteRoot"
+      provides="Products.GenericSetup.interfaces.EXTENSION"
+      />
+
+</configure>


Property changes on: selinux-site/trunk/selinux.dev/selinux/dev/configure.zcml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: selinux-site/trunk/selinux.dev/selinux/dev/content.py
===================================================================
--- selinux-site/trunk/selinux.dev/selinux/dev/content.py	                        (rev 0)
+++ selinux-site/trunk/selinux.dev/selinux/dev/content.py	2007-11-28 15:21:01 UTC (rev 149)
@@ -0,0 +1,152 @@
+# -*- coding: utf-8 -*-
+
+from Products.CMFCore.utils import getToolByName
+from Products.CMFPlone.utils import _createObjectByType
+from Products.ATContentTypes.lib import constraintypes
+from Testing import makerequest
+
+def setupContent(site):
+    createNewsFolder(site)
+    createEventsFolder(site)
+    createLatestFeed(site)
+    createSimpleFolders(site)
+
+def createEventsFolder(site):
+    wftool = getToolByName(site, 'portal_workflow')
+    existing = site.objectIds()
+
+    if 'handelser' not in existing:
+        newid = site.invokeFactory('Large Plone Folder', id='handelser',
+                                   title='Händelser')
+        folder = site.handelser
+        #wfstate = workflow.getInfoFor(folder, 'review_state')
+        #if wfstate == 'published':
+            #return
+    #else:
+    #    return
+
+        folder.invokeFactory('Topic', id='aggregator', title='Händelser')
+
+        folder.setConstrainTypesMode(constraintypes.ENABLED)
+        folder.setLocallyAllowedTypes(['Event'])
+        folder.setImmediatelyAddableTypes(['Event'])
+        folder.setDefaultPage('aggregator')
+        folder.unmarkCreationFlag()
+
+        if wftool.getInfoFor(folder, 'review_state') != 'published':
+            wftool.doActionFor(folder, 'publish')
+
+        topic = folder.aggregator
+        topic.unmarkCreationFlag()
+
+        type_crit = topic.addCriterion('Type','ATPortalTypeCriterion')
+        type_crit.setValue('Event')
+        sort_crit = topic.addCriterion('start','ATSortCriterion')
+        state_crit = topic.addCriterion('review_state', 'ATSimpleStringCriterion')
+        state_crit.setValue('published')
+        date_crit = topic.addCriterion('start', 'ATFriendlyDateCriteria')
+        # Set date reference to now
+        date_crit.setValue(0)
+        # Only take events in the future
+        date_crit.setDateRange('+') # This is irrelevant when the date is now
+        date_crit.setOperation('more')
+
+        if wftool.getInfoFor(topic, 'review_state') != 'published':
+            wftool.doActionFor(topic, 'publish')
+
+        site.handelser.indexObject()
+        site.handelser.aggregator.indexObject()
+
+def createLatestFeed(site):
+    existing = site.objectIds()
+
+    # Collection for making a feed
+    if 'nytt' not in existing:
+        site.invokeFactory('Topic', id='nytt', title='Senaste')
+        topic = site.nytt
+
+        topic.setLimitNumber(True)
+        topic.setItemCount(30)
+        state_crit = topic.addCriterion('review_state',
+                                        'ATSimpleStringCriterion')
+        state_crit.setValue('published')
+        topic.setSortCriterion('effective', True)
+        topic.manage_addProperty('layout', 'folder_summary_view', 'string')
+        topic.unmarkCreationFlag()
+
+    
+def createNewsFolder(site):
+    wftool = getToolByName(site, 'portal_workflow')
+    existing = site.objectIds()
+
+    if 'nyheter' in existing:
+        newid = site.invokeFactory('Large Plone Folder', id='nyheter',
+                                   title='Nyheter')
+        folder = site.nyheter
+        #wfstate = workflow.getInfoFor(folder, 'review_state')
+        #if wfstate == 'published':
+        #    return
+    #else:
+    #    return
+
+        # News topic
+        folder.invokeFactory('Topic', id='aggregator', title='Nyheter')
+        folder = site.nyheter
+        folder.setConstrainTypesMode(constraintypes.ENABLED)
+        folder.setLocallyAllowedTypes(['News Item'])
+        folder.setImmediatelyAddableTypes(['News Item'])
+        folder.setDefaultPage('aggregator')
+        folder.unmarkCreationFlag()
+
+        if wftool.getInfoFor(folder, 'review_state') != 'published':
+            wftool.doActionFor(folder, 'publish')
+
+        topic = site.nyheter.aggregator
+        type_crit = topic.addCriterion('Type','ATPortalTypeCriterion')
+        type_crit.setValue('News Item')
+        sort_crit = topic.addCriterion('created','ATSortCriterion')
+        state_crit = topic.addCriterion('review_state', 'ATSimpleStringCriterion')
+        state_crit.setValue('published')
+        topic.setSortCriterion('effective', True)
+        topic.manage_addProperty('layout', 'folder_summary_view', 'string')
+        topic.unmarkCreationFlag()
+
+        if wftool.getInfoFor(topic, 'review_state') != 'published':
+            wftool.doActionFor(topic, 'publish')
+
+        site.nyheter.indexObject()
+        site.nyheter.aggregator.indexObject()
+
+def createSimpleFolders(site):
+    workflow = getToolByName(site, 'portal_workflow')
+
+    # this is a little hack, when we create a HelpCenter the context
+    # must have a request, otherwise an error is raised
+    site2 = makerequest.makerequest(site)
+
+    folders = ({'id': 'grupper', 'title': 'Arbetsgrupper',
+                'portal_type': 'Folder', 'wfaction': 'publish'},
+               {'id': 'dokument', 'title': 'Dokumentation',
+                'portal_type': 'HelpCenter', 'wfaction': None},
+               {'id': 'om', 'title': 'Om föreningen',
+                'portal_type': 'Folder', 'wfaction': 'publish'},
+               {'id': 'support', 'title': 'Support',
+                'portal_type': 'Folder', 'wfaction': 'publish'},
+               {'id': 'chat', 'title': 'Chat',
+                'portal_type': 'Folder', 'wfaction': 'publish'},
+               {'id': 'nyborjare', 'title': 'Nybörjare',
+                'portal_type': 'Folder', 'wfaction': 'publish'})
+
+    for folderinfo in folders:
+        folder_id = folderinfo['id']
+        title = folderinfo['title']
+        portal_type = folderinfo['portal_type']
+        action = folderinfo['wfaction']
+        folder = getattr(site2, folder_id, None)
+
+        if folder is None:
+            newid = site2.invokeFactory(portal_type, id=folder_id, title=title)
+            folder = getattr(site2, newid)
+            if action:
+                workflow.doActionFor(folder, action)
+            folder.indexObject()


Property changes on: selinux-site/trunk/selinux.dev/selinux/dev/content.py
___________________________________________________________________
Name: svn:keywords
   + Id

Added: selinux-site/trunk/selinux.dev/selinux/dev/profiles/default/import_steps.xml
===================================================================
--- selinux-site/trunk/selinux.dev/selinux/dev/profiles/default/import_steps.xml	                        (rev 0)
+++ selinux-site/trunk/selinux.dev/selinux/dev/profiles/default/import_steps.xml	2007-11-28 15:21:01 UTC (rev 149)
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<import-steps>
+  <import-step id="selinuxdev-various" version="20071128"
+               handler="selinux.dev.setuphandlers.setupVarious"
+               title="Setup SeLinux Dev">
+    Puts on debug flags etc.
+  </import-step>
+</import-steps>

Added: selinux-site/trunk/selinux.dev/selinux/dev/setuphandlers.py
===================================================================
--- selinux-site/trunk/selinux.dev/selinux/dev/setuphandlers.py	                        (rev 0)
+++ selinux-site/trunk/selinux.dev/selinux/dev/setuphandlers.py	2007-11-28 15:21:01 UTC (rev 149)
@@ -0,0 +1,55 @@
+# -*- coding: utf-8 -*-
+
+from Products.CMFCore.utils import getToolByName
+from Products.CMFPlone.utils import _createObjectByType
+from Products.ATContentTypes.lib import constraintypes
+from Testing import makerequest
+from selinux.dev.content import setupContent
+
+def setupVarious(context):
+    site = context.getSite()
+
+    setupFrontpage(site)
+    removePloneContent(site)
+    setupMemberFolder(site)
+    setupContent(site)
+
+
+def setupFrontpage(site):
+    if site.hasProperty('default_page'):
+        site.manage_delProperties(ids=['default_page'])
+
+    #left_column = getUtility(IPortletManager, name=u'plone.leftcolumn',
+    #                         context=site)
+
+    #left = getMultiAdapter((site, left_column,), IPortletAssignmentMapping,
+    #                       context=site)
+
+    #keys = list(left.keys())
+    #for key in keys:
+    #    del left[key]
+
+
+# until plone supports setting up the site without creating some initial
+# folders, we need to remove a few folders
+def removePloneContent(site):
+    for id in ('Members', 'news', 'events'):
+        if getattr(site, id, None):
+            site.manage_delObjects([id])
+
+def setupMemberFolder(site):
+    mship = getToolByName(site, 'portal_membership')
+    workflow = getToolByName(site, 'portal_workflow')
+
+    # we call the members folder 'medlemmar'
+    mship.setMembersFolderById('medlemmar')
+
+    # member folders should be created
+    if not mship.getMemberareaCreationFlag():
+        mship.setMemberareaCreationFlag()
+
+    # publish member folder
+    members = getattr(site, 'medlemmar', None)
+    if members is not None:
+        if workflow.getInfoFor(members, 'review_state') != 'published':
+            workflow.doActionFor(members, 'publish')


Property changes on: selinux-site/trunk/selinux.dev/selinux/dev/setuphandlers.py
___________________________________________________________________
Name: svn:keywords
   + Id

Added: selinux-site/trunk/selinux.dev/setup.py
===================================================================
--- selinux-site/trunk/selinux.dev/setup.py	                        (rev 0)
+++ selinux-site/trunk/selinux.dev/setup.py	2007-11-28 15:21:01 UTC (rev 149)
@@ -0,0 +1,34 @@
+from setuptools import setup, find_packages
+import sys, os
+
+version = '0.1'
+
+setup(name='selinux.dev',
+      version=version,
+      description="SeLinux dev",
+      long_description="""\
+""",
+      # Get more strings from http://www.python.org/pypi?%3Aaction=list_classifiers
+      classifiers=[
+        "Framework :: Plone",
+        "Framework :: Zope2",
+        "License :: OSI Approved :: GNU General Public License (GPL)",
+        "Programming Language :: Python",
+        "Topic :: Software Development :: Libraries :: Python Modules",
+        ],
+      keywords='',
+      author='Tim Terlegard',
+      author_email='tim.terlegard at gmail.com',
+      url='http://svn.se.linux.org/svn/selinux.dev',
+      license='GPL',
+      packages=find_packages(exclude=['ez_setup']),
+      namespace_packages=['selinux'],
+      include_package_data=True,
+      zip_safe=False,
+      install_requires=[
+        'setuptools',
+      ],
+      entry_points="""
+      # -*- Entry points: -*-
+      """,
+      )


Property changes on: selinux-site/trunk/selinux.dev/setup.py
___________________________________________________________________
Name: svn:keywords
   + Id




More information about the commits mailing list