#__init__.py from Products.CMFCore.utils import ContentInit from Products.Archetypes.public import listTypes from Products.Archetypes.public import process_types from Products.CMFCore.DirectoryView import registerDirectory from Products.Album import config from Products.Album.permissions import ADD_DEFAULT from Products.Album.permissions import ADD_PERMISSIONS registerDirectory(config.SKINS_DIR, config.GLOBALS) def initialize(context): import content content_types, constructors, ftis = process_types( listTypes(config.PROJECTNAME), config.PROJECTNAME) all_types = zip(content_types, constructors) for atype, constructor in all_types: kind = '%s: %s' % (config.PROJECTNAME, atype.archetype_name) ContentInit( kind, content_types = (atype,), permission = ADD_PERMISSIONS.get(atype.portal_type, ADD_DEFAULT), extra_constructors = (constructor,), fti = ftis, ).initialize(context) #config.py #Nome do projeto PROJECTNAME = 'Album' #Path do projeto GLOBALS = globals() #Diretorio de skin SKINS_DIR = 'skins' #Cria permissões especiais CUSTOM_PERMISSIONS = { 'album':['Manage'], } # permissions.py from Products.CMFCore.permissions import setDefaultRoles from Products.CMFCore.permissions import AddPortalContent as ADD_DEFAULT from Products.Album.config import PROJECTNAME from Products.Album.config import CUSTOM_PERMISSIONS ADD_PERMISSIONS = {} # Generate permissions for portal_type, actions in CUSTOM_PERMISSIONS.items(): for action in actions: name = ('%s_%s' % (action, portal_type)).replace(' ','_').upper() permission = '%s: %s %s' % (PROJECTNAME, action, portal_type) locals().setdefault(name, permission) if action.lower() == 'add': ADD_PERMISSIONS[portal_type] = permission setDefaultRoles(permission, ['Manager']) # Extensions/Install.py from StringIO import StringIO from Products.Archetypes import listTypes from Products.Archetypes.Extensions.utils import installTypes, install_subskin from Products.Album.config import PROJECTNAME, GLOBALS def install(self): out = StringIO() classes = listTypes(PROJECTNAME) installTypes(self, out, classes, PROJECTNAME) install_subskin(self, out, GLOBALS) print >> out, 'Successfully installed %s.' % PROJECTNAME return out.getvalue() # skins """Is empty""" # content/album.py from Products.Archetypes.public import Schema from Products.Archetypes.public import registerType from Products.Archetypes.public import BaseContent, BaseSchema from Products.Archetypes.public import StringField, StringWidget from Products.Album import config AlbumFoto = BaseSchema + Schema(( StringField( name='Foto', required=True, ) )) class Album(BaseContent): meta_type = portal_type = archetype_name = 'Album' _at_rename_after_creation = True content_icon = 'required.gif' schema = 'AlbumFoto' registerType(Album, config.PROJECTNAME)