or., 2010.eko uztren 16a 06:25(e)an, Victor Teran(e)k idatzi zuen:
>
> Saludos a todos, estoy tratando de usar un producto que guarde los
> archivos en el sistema de archivos de la maquina(valga la redundancia)
> Estoy siguiendo el manual de desarrollo de
> (http://plone.org/products/filesystemstorage/#id45). Aplique el método
> python de esta manera:
>
> En el archivo __init__ del raiz.
>
>
> #FileSystemStorage Configuration
> from iw.fss import zcml as fss_utils
> from Products.ATContentTypes import atct
> from multimedia.cenditel.content import video
> fss_utils.patchATType(atct.ATFile, ['video'])
>
> de esta manera, me devuelve la siguiente excepción.
>
> (venv)vic...@victor-laptop:~/buildouts/FSS$ ./bin/instance fg
> No handlers could be found for logger "PortalTransforms"
> Traceback (most recent call last):
> File "./bin/instance", line 119, in ?
> import plone.recipe.zope2instance.ctl
> File
> "/home/victor/buildouts/FSS/eggs/plone.recipe.zope2instance-3.6-py2.4.egg/plone/recipe/__init__.py",
> line 3, in ?
> __import__('pkg_resources').declare_namespace(__name__)
> File
> "/home/victor/buildouts/FSS/eggs/distribute-0.6.14-py2.4.egg/pkg_resources.py",
> line 2691, in ?
> add_activation_listener(lambda dist: dist.activate())
> File
> "/home/victor/buildouts/FSS/eggs/distribute-0.6.14-py2.4.egg/pkg_resources.py",
> line 668, in subscribe
> callback(dist)
> File
> "/home/victor/buildouts/FSS/eggs/distribute-0.6.14-py2.4.egg/pkg_resources.py",
> line 2691, in <lambda>
> add_activation_listener(lambda dist: dist.activate())
> File
> "/home/victor/buildouts/FSS/eggs/distribute-0.6.14-py2.4.egg/pkg_resources.py",
> line 2195, in activate
> map(declare_namespace, self._get_metadata('namespace_packages.txt'))
> File
> "/home/victor/buildouts/FSS/eggs/distribute-0.6.14-py2.4.egg/pkg_resources.py",
> line 1790, in declare_namespace
> _handle_ns(packageName, path_item)
> File
> "/home/victor/buildouts/FSS/eggs/distribute-0.6.14-py2.4.egg/pkg_resources.py",
> line 1761, in _handle_ns
> loader.load_module(packageName); module.__path__ = path
> File
> "/home/victor/buildouts/FSS/eggs/distribute-0.6.14-py2.4.egg/pkg_resources.py",
> line 1590, in load_module
> mod = imp.load_module(fullname, self.file, self.filename, self.etc)
> File
> "/home/victor/buildouts/FSS/src/cenditel.multimedia/cenditel/__init__.py",
> line 7, in ?
> fss_utils.patchATType(atct.ATFile, ['video'])
> File
> "/home/victor/buildouts/FSS/eggs/iw.fss-2.8.0rc3-py2.4.egg/iw/fss/zcml.py",
> line 65, in patchATType
> field = class_.schema[fieldname]
> File
> "/home/victor/buildouts/FSS/eggs/Products.Archetypes-1.5.15-py2.4.egg/Products/Archetypes/Schema/__init__.py",
> line 240, in __getitem__
> return self._fields[name]
> KeyError: 'video'
>
>
> Por otro lado, este es mi schema.
>
> tapi.StringField("title",
> required=True,
> searchable=True,
> storage=atapi.AnnotationStorage(),
> widget=atapi.StringWidget(label=_(u"title"))
> ),
> atapi.TextField("description",
> required=False,
> searchable=True,
> storage=atapi.AnnotationStorage(),
> widget=atapi.RichWidget(label=_(u"description"))
> ),
> atapi.FileField("video",
> required=True,
> searchable=False,
> storage=FieldSystemStorage(),
> #storage=atapi.AnnotationStorage(),
> widget=atapi.FileWidget(label=_(u"video"))
> ),
>
> Usando el configure.zcml
>
> <configure
> ...
> xmlns:zcml="http://namespaces.zope.org/zcml"
> xmlns:fss="http://namespaces.ingeniweb.com/filesystemstorage"
> ...>
> ...
> <fss:typeWithFSS
> zcml:condition="installed iw.fss"
> class="Products.ATContentTypes.atct.ATFile"
> fields="file" />
> ...
> </configure>
>
> Tampoco obtuve buenos resultados, inserte el codigo que faltaba pero
> tambien obtenia excepciones.
>
> Segun el manual en la ultimo parametro debe ser el nombre del campo yo
> coloque 'video' 'audio' siguiendo mi schema
> Alguien me puede decir ¿Donde estoy equivocado? Por favor.
>
Para hacer funcionar FileSystemStorage hay 2 opciones:
1- Escribes tu archetype directamente compatible con FSS
2- Parcheas tu archetype en tiempo de ejecución utilizando ZCML
Para la primera opción tienes que escribir tu schema tal y como lo has
descrito en el mail *pero* tienes un error ahí. Donde dice:
atapi.FileField("video",
required=True,
searchable=False,
storage=FieldSystemStorage(),
#storage=atapi.AnnotationStorage(),
widget=atapi.FileWidget(label=_(u"video"))
),
Debe decir:
atapi.FileField("video",
required=True,
searchable=False,
storage=FileSystemStorage(),
widget=atapi.FileWidget(label=_(u"video"))
),
Es FileSystemStorage no FieldSystemStorage.
Para la segunda opción, el ZCML que añades es el correcto, pero es
correcto para el tipo "Archivo" de Plone. Para el tuyo debería ser algo así:
<configure
xmlns:fss="http://namespaces.ingeniweb.com/filesystemstorage"
<fss:typeWithFSS
zcml:condition="installed iw.fss"
class="multimedia.cenditel.content.video"
fields="video" />
</configure>
Es decir, apuntando a tu clase archetype
(multimedia.cenditel.content.video) y a su campo video.
Del mismo modo, las primeras líneas que describes:
#FileSystemStorage Configuration
from iw.fss import zcml as fss_utils
from Products.ATContentTypes import atct
from multimedia.cenditel.content import video
fss_utils.patchATType(atct.ATFile, ['video'])
Son incorrectas, porque estas intentando aplicar FSS al campo video del
object ATFile, cosa que no existe.
De todas formas no te recomiendo utilizar esta opción, yo utilizaría
directamente la opción del ZCML.
Saludos,
Mikel
--
Mikel Larreategi
[email protected]
CodeSyntax
Azitaingo Industrialdea 3 K
E-20600 Eibar
Tel: (+34) 943 82 17 80
_______________________________________________
Plone-ConoSur mailing list
[email protected]
http://lists.plone.org/mailman/listinfo/plone-conosur