rendered paste body#__init__.pyfrom Products.CMFCore.utils import ContentInitfrom Products.Archetypes.public import listTypesfrom Products.Archetypes.public import process_typesfrom Products.CMFCore.DirectoryView import registerDirectoryfrom Products.Album import configfrom Products.Album.permissions import ADD_DEFAULTfrom Products.Album.permissions import ADD_PERMISSIONSregisterDirectory(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 projetoPROJECTNAME = 'Album'#Path do projetoGLOBALS = globals()#Diretorio de skinSKINS_DIR = 'skins'#Cria permissões especiaisCUSTOM_PERMISSIONS = { 'album':['Manage'],}# permissions.pyfrom Products.CMFCore.permissions import setDefaultRolesfrom Products.CMFCore.permissions import AddPortalContent as ADD_DEFAULTfrom Products.Album.config import PROJECTNAMEfrom Products.Album.config import CUSTOM_PERMISSIONSADD_PERMISSIONS = {}# Generate permissionsfor 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.pyfrom StringIO import StringIOfrom Products.Archetypes import listTypesfrom Products.Archetypes.Extensions.utils import installTypes, install_subskinfrom Products.Album.config import PROJECTNAME, GLOBALSdef 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.pyfrom Products.Archetypes.public import Schemafrom Products.Archetypes.public import registerTypefrom Products.Archetypes.public import BaseContent, BaseSchemafrom Products.Archetypes.public import StringField, StringWidgetfrom Products.Album import configAlbumFoto = 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)