Ejemplo n.º 1
0
def create_permission_from_permission_directive(permission, event):
    """When a new IPermission utility is registered (via the <permission />
    directive), create the equivalent Zope2 style permission.
    """
    # Zope 2 uses string, not unicode yet
    zope2_permission = str(permission.title)
    addPermission(zope2_permission)
Ejemplo n.º 2
0
def create_permission_from_permission_directive(permission, event):
    """When a new IPermission utility is registered (via the <permission />
    directive), create the equivalent Zope2 style permission.
    """
    # Zope 2 uses string, not unicode yet
    zope2_permission = str(permission.title)
    addPermission(zope2_permission)
Ejemplo n.º 3
0
    def _registerPermission():
        permission = Permission(id, title, '')
        config.registerUtility(permission, IPermission, id)

        z2_permission = str(title)
        if roles:
            addPermission(z2_permission, default_roles=tuple(roles))
        else:
            addPermission(z2_permission)
Ejemplo n.º 4
0
 def after(self):
     permission = Permission(self.id, self.title, self.description)
     utility(self.context, IPermission, permission, name=self.id)
     
     zope2_permission = str(self.title)
     if self.roles:
         addPermission(zope2_permission, default_roles=tuple(self.roles))
     else:
         addPermission(zope2_permission)
Ejemplo n.º 5
0
    def after(self):
        permission = Permission(self.id, self.title, self.description)
        utility(self.context, IPermission, permission, name=self.id)

        zope2_permission = str(self.title)
        if self.roles:
            addPermission(zope2_permission, default_roles=tuple(self.roles))
        else:
            addPermission(zope2_permission)
Ejemplo n.º 6
0
def initialize(context):
    """Initializer called when used as a Zope 2 product."""
    logger.info("*** Initializing SENAITE PATIENT Customization package ***")

    # Set add permissions
    for typename in DEFAULT_TYPES:
        permid = "Add" + typename
        permname = getattr(permissions, permid)
        security.declarePublic(permid)
        addPermission(permname, default_roles=DEFAULT_ROLES)
Ejemplo n.º 7
0
def setDefaultRoles(permission, roles):
    '''
    Sets the defaults roles for a permission.
    '''
    if addPermission is not None:
        addPermission(permission, roles)
    else:
        # BBB This is in AccessControl starting in Zope 2.13
        import Products
        registered = _registeredPermissions
        if not registered.has_key(permission):
            registered[permission] = 1
            Products.__ac_permissions__=(
                Products.__ac_permissions__+((permission,(),roles),))
            mangled = pname(permission)
            setattr(ApplicationDefaultPermissions, mangled, roles)
Ejemplo n.º 8
0
def setDefaultRoles(permission, roles):
    '''
    Sets the defaults roles for a permission.
    '''
    if addPermission is not None:
        addPermission(permission, roles)
    else:
        # BBB This is in AccessControl starting in Zope 2.13
        import Products
        registered = _registeredPermissions
        if not registered.has_key(permission):
            registered[permission] = 1
            Products.__ac_permissions__ = (Products.__ac_permissions__ +
                                           ((permission, (), roles), ))
            mangled = pname(permission)
            setattr(ApplicationDefaultPermissions, mangled, roles)
def setDefaultRoles(permission, roles):
    """ Set the defaults roles for a permission.
    """
    if addPermission is not None:
        addPermission(permission, roles)
    else:
        # BBB This is in AccessControl starting in Zope 2.13
        from AccessControl.Permission import _registeredPermissions
        from AccessControl.Permission import pname
        from AccessControl.Permission import ApplicationDefaultPermissions
        import Products
        registered = _registeredPermissions
        if permission not in registered:
            registered[permission] = 1
            Products.__ac_permissions__ = (
                Products.__ac_permissions__ + ((permission, (), roles),))
            mangled = pname(permission)
            setattr(ApplicationDefaultPermissions, mangled, roles)
Ejemplo n.º 10
0
def setDefaultRoles( permission, roles ):
    """ Set the defaults roles for a permission.
    """
    if addPermission is not None:
        addPermission(permission, roles)
    else:
        # BBB This is in AccessControl starting in Zope 2.13
        from AccessControl.Permission import _registeredPermissions
        from AccessControl.Permission import pname
        from AccessControl.Permission import ApplicationDefaultPermissions
        import Products
        registered = _registeredPermissions
        if not permission in registered:
            registered[ permission ] = 1
            Products.__ac_permissions__=(
                Products.__ac_permissions__+((permission,(),roles),))
            mangled = pname(permission)
            setattr(ApplicationDefaultPermissions, mangled, roles)
Ejemplo n.º 11
0
security.declarePublic('ViewManagementScreens')  # NOQA: flake8: D001
ViewManagementScreens = Permissions.view_management_screens


# Note that we can only use the default Zope roles in calls to
# addPermission().  The default Zope roles are:
# Anonymous, Manager, and Owner.

#
# CMF Base Permissions
#

security.declarePublic('ListFolderContents')  # NOQA: flake8: D001
ListFolderContents = 'List folder contents'
addPermission(ListFolderContents, ('Manager', 'Owner'))

security.declarePublic('ListUndoableChanges')  # NOQA: flake8: D001
ListUndoableChanges = 'List undoable changes'
addPermission(ListUndoableChanges, ('Manager',))  # + Member

security.declarePublic('AccessInactivePortalContent')  # NOQA: flake8: D001
AccessInactivePortalContent = 'Access inactive portal content'
addPermission(AccessInactivePortalContent, ('Manager',))

security.declarePublic('ModifyCookieCrumblers')  # NOQA: flake8: D001
ModifyCookieCrumblers = 'Modify Cookie Crumblers'
addPermission(ModifyCookieCrumblers, ('Manager',))

security.declarePublic('ReplyToItem')  # NOQA: flake8: D001
ReplyToItem = 'Reply to item'
Ejemplo n.º 12
0
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
""" CMFCalendar product permissions
"""

from AccessControl import ModuleSecurityInfo
from AccessControl.Permission import addPermission

security = ModuleSecurityInfo('Products.CMFCalendar.permissions')

security.declarePublic('AddEvents')
AddEvents = 'Add portal events'
addPermission(AddEvents, ('Manager', 'Owner', 'Member'))

security.declarePublic('ChangeEvents')
ChangeEvents = 'Change portal events'
addPermission(ChangeEvents, ('Manager', 'Owner',))

security.declarePublic('AddPortalContent')
from Products.CMFCore.permissions import AddPortalContent

security.declarePublic('ManagePortal')
from Products.CMFCore.permissions import ManagePortal

security.declarePublic('View')
from Products.CMFCore.permissions import View

security.declarePublic('ModifyPortalContent')
Ejemplo n.º 13
0
# (C) Copyright 2006 ObjectRealms, LLC
# All Rights Reserved
#
# This file is part of iterate.
#
# iterate is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# iterate is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with CMFDeployment; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
##################################################################

from AccessControl.Permission import addPermission

CheckinPermission = 'iterate : Check in content'
CheckoutPermission = 'iterate : Check out content'

addPermission(CheckinPermission,
              default_roles=('Manager', 'Site Administrator', 'Reviewer'))
addPermission(CheckoutPermission,
              default_roles=('Manager', 'Owner', 'Site Administrator',
                             'Editor'))
Ejemplo n.º 14
0
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
""" Permissions used throughout CMFTopic.
"""

from AccessControl import ModuleSecurityInfo
from AccessControl.Permission import addPermission

security = ModuleSecurityInfo('Products.CMFTopic.permissions')

security.declarePublic('AddTopics')
AddTopics = 'Add portal topics'
addPermission(AddTopics, ('Manager',))

security.declarePublic('ChangeTopics')
ChangeTopics = 'Change portal topics'
addPermission(ChangeTopics, ('Manager', 'Owner',))

security.declarePublic('AccessContentsInformation')
from Products.CMFCore.permissions import AccessContentsInformation

security.declarePublic('ListFolderContents')
from Products.CMFCore.permissions import ListFolderContents

security.declarePublic('View')
from Products.CMFCore.permissions import View
Ejemplo n.º 15
0
from AccessControl.Permission import addPermission
from zope.i18nmessageid import MessageFactory as mf


MessageFactory = mf("euphorie")
del mf


addPermission("Euphorie: Manage country", ("Manager",))
addPermission("Euphorie: Add new RIE Content", ("Manager",))
addPermission("Euphorie: Delete published content", ("Manager",))
Ejemplo n.º 16
0
# Zope2 stuff
EditorRate = "Content Ratings: Editor Rate"
ViewEditorialRating = "Content Ratings: View Editorial Rating"
UserRate = "Content Ratings: User Rate"
ViewUserRating = "Content Ratings: View User Rating"

try:
    # Set some default roles for zope2
    from AccessControl.Permission import addPermission
except ImportError:
    pass
else:
    addPermission(EditorRate, default_roles=('Manager', 'Reviewer'))
    addPermission(ViewEditorialRating,
                  default_roles=(
                      'Anonymous',
                      'Authenticated',
                  ))
    addPermission(UserRate, default_roles=(
        'Anonymous',
        'Authenticated',
    ))
    addPermission(ViewUserRating,
                  default_roles=(
                      'Anonymous',
                      'Authenticated',
                  ))
Ejemplo n.º 17
0
    def onEnabled(self, theme, settings, dependenciesSettings):  # noqa
        res = queryResourceDirectory(THEME_RESOURCE_NAME, theme)
        if res is None:
            return

        # We need to get settings by ourselves to avoid p.a.theming caching
        settings = getSettings(res)
        if not isEnabled(settings):
            return

        # Remove imported folders not-required on run-time
        autocleanup = (settings.get('self-destruct') or '').lower() in (
            'true', 'yes', 'on', '1'
        )

        # Register permissions
        sm = getSiteManager()
        for key, value in _getPermissions(settings).items():
            util = sm.queryUtility(IPermission, name=key)
            if util is None:
                name = str('collective.themesitesetup.permission.' + key)
                util = LocalPermission(value, u'')
                util.id = key
                util.__name__ = name
                util.__parent__ = aq_base(sm)
                sm._setObject(
                    name, util, set_owner=False, suppress_events=True)
                sm.registerUtility(
                    util, provided=IPermission, name=key)
                addPermission(str(value))

        # Import GS profile
        directoryName = DEFAULT_ENABLED_PROFILE_NAME
        if 'install' in settings:
            directoryName = settings['install']

        directory = None
        if res.isDirectory(directoryName):
            directory = res[directoryName]

        if directory:
            tarball = createTarball(directory)
            portal_setup = api.portal.get_tool('portal_setup')
            portal_setup.runAllImportStepsFromProfile(
                None, purge_old=False, archive=tarball)
            # Self-destruct imported profile
            if autocleanup and IWritableResourceDirectory.providedBy(res):
                del res[directoryName]

        # Register locales
        localesDirectoryName = DEFAULT_ENABLED_LOCALES_NAME
        if 'locales' in settings:
            localesDirectoryName = settings['locales']

        if res.isDirectory(localesDirectoryName):
            catalogs = getMessageCatalogs(res[localesDirectoryName])
            for domain in catalogs:
                util = sm.queryUtility(ITranslationDomain, name=domain)
                if not isinstance(util, TranslationDomain):
                    name = str('collective.themesitesetup.domain.' + domain)
                    util = TranslationDomain()
                    util.__name__ = name
                    util.__parent__ = aq_base(sm)
                    util.domain = domain
                    sm._setObject(
                        name, util, set_owner=False, suppress_events=True)
                    sm.registerUtility(
                        util, provided=ITranslationDomain, name=domain)
                for language in catalogs[domain]:
                    name = '.'.join(['collective.themesitesetup.catalog',
                                     res.__name__, domain, language])
                    if name in util:
                        try:
                            del util[name]
                        except ValueError:
                            pass
                    util[name] = catalogs[domain][language]
            # Self-destruct imported catalogs
            if autocleanup and IWritableResourceDirectory.providedBy(res):
                del res[localesDirectoryName]

        # Update Dexterity models
        modelsDirectoryName = DEFAULT_ENABLED_MODELS_NAME
        if 'models' in settings:
            modelsDirectoryName = settings['models']
        overwrite = overwriteModels(settings)

        if res.isDirectory(modelsDirectoryName):
            types_tool = api.portal.get_tool('portal_types')
            directory = res[modelsDirectoryName]
            for name in directory.listDirectory():
                if not name.endswith('.xml') or not directory.isFile(name):
                    continue
                fti = types_tool.get(name[:-4])
                if not fti:
                    continue
                model = unicode(directory.readFile(name), 'utf-8', 'ignore')
                if fti.model_source == model:
                    continue
                try:
                    loadString(model, fti.schema_policy)  # fail for errors
                except SupermodelParseError:
                    logger.error(
                        u'Error while parsing {0:s}/{1:s}/{2:s}'.format(
                            res.__name__, modelsDirectoryName, name))
                    raise
                # Set model source when model is empty of override is enabled
                desc = DexterityFTIModificationDescription('model_source',
                                                           fti.model_source)
                if not fti.model_source:
                    fti.model_source = model
                    notify(ObjectModifiedEvent(fti, desc))
                elif not loadString(fti.model_source, fti.schema_policy).schema.names():  # noqa
                    fti.model_source = model
                    notify(ObjectModifiedEvent(fti, desc))
                elif overwrite:
                    fti.model_source = model
                    notify(ObjectModifiedEvent(fti, desc))
            # Self-destruct imported models
            if autocleanup and IWritableResourceDirectory.providedBy(res):
                del res[modelsDirectoryName]

        # Copy resources
        resourcesDirectoryName = DEFAULT_ENABLED_RESOURCES_NAME
        if 'resources' in settings:
            resourcesDirectoryName = settings['resources']
        purge = purgeResources(settings)
        overwrite = overwriteResources(settings)
        root = queryUtility(IResourceDirectory, name=u'persistent')
        if root and res.isDirectory(resourcesDirectoryName):
            copyResources(res[resourcesDirectoryName], root, purge, overwrite)
            # Invalidate site layout cache of plone.app.blocks
            portal_catalog = api.portal.get_tool('portal_catalog')
            portal_catalog._increment_counter()
            # Self-desctruct imported resources
            if autocleanup and IWritableResourceDirectory.providedBy(res):
                del res[resourcesDirectoryName]
Ejemplo n.º 18
0
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with CMFEditions; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#########################################################################
"""Permissions

"""

from AccessControl.Permission import addPermission

ApplyVersionControl = 'CMFEditions: Apply version control'
addPermission(ApplyVersionControl, ('Manager', 'Site Administrator'))

SaveNewVersion = 'CMFEditions: Save new version'
addPermission(SaveNewVersion, ('Manager', 'Site Administrator'))

PurgeVersion = 'CMFEditions: Purge version'
addPermission(PurgeVersion, ('Manager', 'Site Administrator'))

AccessPreviousVersions = 'CMFEditions: Access previous versions'
addPermission(AccessPreviousVersions, ('Manager', 'Site Administrator'))

RevertToPreviousVersions = 'CMFEditions: Revert to previous versions'
addPermission(RevertToPreviousVersions, ('Manager', 'Site Administrator'))

CheckoutToLocation = 'CMFEditions: Checkout to location'
addPermission(CheckoutToLocation, ('Manager', 'Site Administrator'))
Ejemplo n.º 19
0
##################################################################
#
# (C) Copyright 2006 ObjectRealms, LLC
# All Rights Reserved
#
# This file is part of iterate.
#
# iterate is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# iterate is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with CMFDeployment; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
##################################################################

from AccessControl.Permission import addPermission

CheckinPermission = 'iterate : Check in content'
CheckoutPermission = 'iterate : Check out content'

DEFAULT_ROLES = ('Manager', 'Owner', 'Site Administrator', 'Editor')
addPermission(CheckinPermission, default_roles=DEFAULT_ROLES)
addPermission(CheckoutPermission, default_roles=DEFAULT_ROLES)
Ejemplo n.º 20
0
 def onRequest(self, request, theme, settings, dependenciesSettings):
     # Ensure that TTW permissions are registered also as Zope 2 permissions
     for permission in getPermissions(settings).values():
         addPermission(permission)
Ejemplo n.º 21
0
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
""" Permissions used throughout CMFTopic.
"""

from AccessControl import ModuleSecurityInfo
from AccessControl.Permission import addPermission

security = ModuleSecurityInfo('Products.CMFTopic.permissions')

security.declarePublic('AddTopics')
AddTopics = 'Add portal topics'
addPermission(AddTopics, ('Manager', ))

security.declarePublic('ChangeTopics')
ChangeTopics = 'Change portal topics'
addPermission(ChangeTopics, (
    'Manager',
    'Owner',
))

security.declarePublic('AccessContentsInformation')
from Products.CMFCore.permissions import AccessContentsInformation

security.declarePublic('ListFolderContents')
from Products.CMFCore.permissions import ListFolderContents

security.declarePublic('View')
Ejemplo n.º 22
0
# -*- coding: utf-8 -*-
from AccessControl.Permission import addPermission

ModifyViewTemplate = "Modify view template"
addPermission(ModifyViewTemplate, ('Manager', 'Owner'))
Ejemplo n.º 23
0
from AccessControl import ModuleSecurityInfo
from AccessControl.Permission import addPermission

security = ModuleSecurityInfo('cnm.website.permissions')

security.declarePublic('DeleteThisObject')
DeleteThisObject = 'CNM: Delete this object'
addPermission(DeleteThisObject, default_roles=('Manager', 'Owner'))
Ejemplo n.º 24
0
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with CMFEditions; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#########################################################################
"""Permissions

"""

from AccessControl.Permission import addPermission


ApplyVersionControl = 'CMFEditions: Apply version control'
addPermission(ApplyVersionControl, ('Manager', 'Site Administrator'))

SaveNewVersion = 'CMFEditions: Save new version'
addPermission(SaveNewVersion, ('Manager', 'Site Administrator'))

PurgeVersion = 'CMFEditions: Purge version'
addPermission(PurgeVersion, ('Manager', 'Site Administrator'))

AccessPreviousVersions = 'CMFEditions: Access previous versions'
addPermission(AccessPreviousVersions, ('Manager', 'Site Administrator'))

RevertToPreviousVersions = 'CMFEditions: Revert to previous versions'
addPermission(RevertToPreviousVersions, ('Manager', 'Site Administrator'))

CheckoutToLocation = 'CMFEditions: Checkout to location'
addPermission(CheckoutToLocation, ('Manager', 'Site Administrator'))
# -*- coding: utf-8 -*-
from AccessControl.Permission import addPermission
from AccessControl.SecurityInfo import ModuleSecurityInfo
from plone.app.contenttypes.utils import DEFAULT_TYPES

security = ModuleSecurityInfo('plone.app.contenttypes')

TYPE_ROLES = ('Manager', 'Site Administrator', 'Owner', 'Contributor')

perms = []

for typename in DEFAULT_TYPES:
    permid = 'Add' + typename
    permname = 'plone.app.contenttypes: Add ' + typename
    security.declarePublic(permid)
    addPermission(permname, default_roles=TYPE_ROLES)

AddCollection = 'plone.app.contenttypes: Add Collection'
AddDocument = 'plone.app.contenttypes: Add Document'
AddEvent = 'plone.app.contenttypes: Add Event'
AddFile = 'plone.app.contenttypes: Add File'
AddFolder = 'plone.app.contenttypes: Add Folder'
AddImage = 'plone.app.contenttypes: Add Image'
AddLink = 'plone.app.contenttypes: Add Link'
AddNewsItem = 'plone.app.contenttypes: Add News Item'
Ejemplo n.º 26
0
# Zope2 stuff
EditorRate = "Content Ratings: Editor Rate"
ViewEditorialRating = "Content Ratings: View Editorial Rating"
UserRate = "Content Ratings: User Rate"
ViewUserRating = "Content Ratings: View User Rating"

try:
    # Set some default roles for zope2
    from AccessControl.Permission import addPermission
except ImportError:
    pass
else:
    addPermission(EditorRate, default_roles=('Manager', 'Reviewer'))
    addPermission(ViewEditorialRating, default_roles=('Anonymous', 'Authenticated',))
    addPermission(UserRate, default_roles=('Anonymous', 'Authenticated',))
    addPermission(ViewUserRating, default_roles=('Anonymous','Authenticated',))


Ejemplo n.º 27
0
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
""" CMFCalendar product permissions
"""

from AccessControl import ModuleSecurityInfo
from AccessControl.Permission import addPermission

security = ModuleSecurityInfo('Products.CMFCalendar.permissions')

security.declarePublic('AddEvents')
AddEvents = 'Add portal events'
addPermission(AddEvents, ('Manager', 'Owner', 'Member'))

security.declarePublic('ChangeEvents')
ChangeEvents = 'Change portal events'
addPermission(ChangeEvents, (
    'Manager',
    'Owner',
))

security.declarePublic('AddPortalContent')
from Products.CMFCore.permissions import AddPortalContent

security.declarePublic('ManagePortal')
from Products.CMFCore.permissions import ManagePortal

security.declarePublic('View')
Ejemplo n.º 28
0
 def onRequest(self, request, theme, settings, dependenciesSettings):
     # Ensure that TTW permissions are registered also as Zope 2 permissions
     for permission in getPermissions(settings).values():
         addPermission(permission)
def setDefaultRoles(permission, roles):
    """ Set the defaults roles for a permission.
    """
    addPermission(permission, roles)
Ejemplo n.º 30
0
    def onEnabled(self, theme, settings, dependenciesSettings):  # noqa
        res = queryResourceDirectory(THEME_RESOURCE_NAME, theme)
        if res is None:
            return

        # We need to get settings by ourselves to avoid p.a.theming caching
        settings = getSettings(res)
        if not isEnabled(settings):
            return

        # Remove imported folders not-required on run-time
        autocleanup = (settings.get('self-destruct')
                       or '').lower() in ('true', 'yes', 'on', '1')

        # Register permissions
        sm = getSiteManager()
        for key, value in _getPermissions(settings).items():
            util = sm.queryUtility(IPermission, name=key)
            if util is None:
                name = str('collective.themesitesetup.permission.' + key)
                util = LocalPermission(value, u'')
                util.id = key
                util.__name__ = name
                util.__parent__ = aq_base(sm)
                sm._setObject(name,
                              util,
                              set_owner=False,
                              suppress_events=True)
                sm.registerUtility(util, provided=IPermission, name=key)
                addPermission(str(value))

        # Import GS profile
        directoryName = DEFAULT_ENABLED_PROFILE_NAME
        if 'install' in settings:
            directoryName = settings['install']

        directory = None
        if res.isDirectory(directoryName):
            directory = res[directoryName]

        if directory:
            tarball = createTarball(directory)
            portal_setup = api.portal.get_tool('portal_setup')
            portal_setup.runAllImportStepsFromProfile(None,
                                                      purge_old=False,
                                                      archive=tarball)
            # Self-destruct imported profile
            if autocleanup and IWritableResourceDirectory.providedBy(res):
                del res[directoryName]

        # Register locales
        localesDirectoryName = DEFAULT_ENABLED_LOCALES_NAME
        if 'locales' in settings:
            localesDirectoryName = settings['locales']

        if res.isDirectory(localesDirectoryName):
            catalogs = getMessageCatalogs(res[localesDirectoryName])
            for domain in catalogs:
                util = sm.queryUtility(ITranslationDomain, name=domain)
                if not isinstance(util, TranslationDomain):
                    name = str('collective.themesitesetup.domain.' + domain)
                    util = TranslationDomain()
                    util.__name__ = name
                    util.__parent__ = aq_base(sm)
                    util.domain = domain
                    sm._setObject(name,
                                  util,
                                  set_owner=False,
                                  suppress_events=True)
                    sm.registerUtility(util,
                                       provided=ITranslationDomain,
                                       name=domain)
                for language in catalogs[domain]:
                    name = '.'.join([
                        'collective.themesitesetup.catalog', res.__name__,
                        domain, language
                    ])
                    if name in util:
                        try:
                            del util[name]
                        except ValueError:
                            pass
                    util[name] = catalogs[domain][language]
            # Self-destruct imported catalogs
            if autocleanup and IWritableResourceDirectory.providedBy(res):
                del res[localesDirectoryName]

        # Update Dexterity models
        modelsDirectoryName = DEFAULT_ENABLED_MODELS_NAME
        if 'models' in settings:
            modelsDirectoryName = settings['models']
        overwrite = overwriteModels(settings)

        if res.isDirectory(modelsDirectoryName):
            types_tool = api.portal.get_tool('portal_types')
            directory = res[modelsDirectoryName]
            for name in directory.listDirectory():
                if not name.endswith('.xml') or not directory.isFile(name):
                    continue
                fti = types_tool.get(name[:-4])
                if not fti:
                    continue
                model = unicode(directory.readFile(name), 'utf-8', 'ignore')
                if fti.model_source == model:
                    continue
                try:
                    loadString(model, fti.schema_policy)  # fail for errors
                except SupermodelParseError:
                    logger.error(
                        u'Error while parsing {0:s}/{1:s}/{2:s}'.format(
                            res.__name__, modelsDirectoryName, name))
                    raise
                # Set model source when model is empty of override is enabled
                desc = DexterityFTIModificationDescription(
                    'model_source', fti.model_source)
                if not fti.model_source:
                    fti.model_source = model
                    notify(ObjectModifiedEvent(fti, desc))
                elif not loadString(fti.model_source,
                                    fti.schema_policy).schema.names():  # noqa
                    fti.model_source = model
                    notify(ObjectModifiedEvent(fti, desc))
                elif overwrite:
                    fti.model_source = model
                    notify(ObjectModifiedEvent(fti, desc))
            # Self-destruct imported models
            if autocleanup and IWritableResourceDirectory.providedBy(res):
                del res[modelsDirectoryName]

        # Copy resources
        resourcesDirectoryName = DEFAULT_ENABLED_RESOURCES_NAME
        if 'resources' in settings:
            resourcesDirectoryName = settings['resources']
        purge = purgeResources(settings)
        overwrite = overwriteResources(settings)
        root = queryUtility(IResourceDirectory, name=u'persistent')
        if root and res.isDirectory(resourcesDirectoryName):
            copyResources(res[resourcesDirectoryName], root, purge, overwrite)
            # Invalidate site layout cache of plone.app.blocks
            portal_catalog = api.portal.get_tool('portal_catalog')
            portal_catalog._increment_counter()
            # Self-desctruct imported resources
            if autocleanup and IWritableResourceDirectory.providedBy(res):
                del res[resourcesDirectoryName]
Ejemplo n.º 31
0
# -*- coding: utf-8 -*-
from AccessControl.Permission import addPermission

AddGroups = 'Add Groups'
addPermission(AddGroups, default_roles=('Manager',))

ManageGroups = 'Manage Groups'
addPermission(ManageGroups, default_roles=('Manager',))

ViewGroups = 'View Groups'
addPermission(ViewGroups, default_roles=('Manager', 'Owner', 'Member'))

DeleteGroups = 'Delete Groups'
addPermission(DeleteGroups, default_roles=('Manager', ))

SetGroupOwnership = 'Set Group Ownership'
addPermission(SetGroupOwnership, default_roles=('Manager', 'Owner'))
Ejemplo n.º 32
0
# -*- coding: utf-8 -*-
from AccessControl.Permission import addPermission

AddGroups = 'Add Groups'
addPermission(AddGroups, default_roles=('Manager', ))

ManageGroups = 'Manage Groups'
addPermission(ManageGroups, default_roles=('Manager', ))

ViewGroups = 'View Groups'
addPermission(ViewGroups, default_roles=('Manager', 'Owner', 'Member'))

DeleteGroups = 'Delete Groups'
addPermission(DeleteGroups, default_roles=('Manager', ))

SetGroupOwnership = 'Set Group Ownership'
addPermission(SetGroupOwnership, default_roles=('Manager', 'Owner'))