[Usuarios Plone] Restringir los tipos de contenidos de una carpeta

Héctor Velarde hector.velarde at gmail.com
Thu Mar 17 16:31:36 UTC 2011


yo tengo el mismo problema que Leonardo:

estoy creando un folder común y silvestre y quiero que ese folder 
contenga sólo cursos, un tipo de contenido que he creado para eso.

lo que llevo hecho es lo siguiente:

en mi config.py he creado una variable que contiene la información 
necesaria para crear la carpeta:

# config.py

FOLDERS = (
     dict(
         ctype = 'Folder',
         name = 'extension',
         title = 'Extensión',
         description = 'Cursos de actualización recibidos',
         locallyAllowedTypes = ['Course'],
         ),
     )

hay un tipo de contenido que, al crearse, dispara un mecanismo para 
crear los folders internos:

# folder.py

     def at_post_create_script(self):
         for f in FOLDERS:
             _createObjectByType(f['ctype'], self, f['name'])
             obj = self[f['name']]
             obj.setTitle(f['title'])
             obj.setDescription(f['description'])
             obj.setConstrainTypesMode(constraintypes.ENABLED)
             obj.setLocallyAllowedTypes(f['locallyAllowedTypes'])
             obj.setImmediatelyAddableTypes(f['locallyAllowedTypes'])
             obj.reindexObject()

hasta aquí todo bien; he creado unas pruebas para comprobar que todo 
funciona:

# test_folder.py

class TestCVFolder(TestCase):

     def afterSetUp(self):
         _createObjectByType('CVupnFolder', self.folder, 'cv')
         self.cv = getattr(self.folder, 'cv')
         # create folders
         self.cv.at_post_create_script()

     def testExtensionFolderAllowedContentTypes(self):
         allowed_types = ('Course', )
         folder = self.cv.extension

         self.failUnlessEqual(folder.getLocallyAllowedTypes(),
                              allowed_types)
         self.failUnlessEqual(folder.getImmediatelyAddableTypes(),
                              allowed_types)
         self.assertRaises(Unauthorized,
                           folder.invokeFactory, 'Document', 'foo')
         try:
             folder.invokeFactory('Course', 'course', title='course')
         except Unauthorized:
             self.fail()

para hacer que la prueba pasara fue necesario lo siguiente en la 
declaración del tipo de contenido:

# Course.xml

   <property name="global_allow">True</property>

hasta acá todo bien, mi problema es que al entrar en la carpeta de 
marras, no aparece la opción de agregar cursos...

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5620 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.plone.org/pipermail/plone-usuarios-plone/attachments/20110317/e165df83/attachment.p7s>


More information about the Usuarios-Plone mailing list