Yves Bastide a écrit :
Christophe Otton wrote:
Bonjour,
J'ai toujours mon pb de réindexation et quelques difficultés à savoir
d'où ça vient.
Mon premier souci serait de comprendre les messages d'erreur du
event.log / est-ce que quelqu'un peut m'aider à déchiffrer ce type de
message :
2006-10-16T21:15:09 PROBLEM(100) FilteredSet eval() failed
Object: document.html, expr: getattr(o, 'portal_type', None) not in
('Section', 'Workspace')
Traceback (most recent call last):
File
"/home/zope/Zope-2.7.6-final/lib/python/Products/PluginIndexes/TopicIndex/FilteredSet.py",
line 73, in index_object
if RestrictionCapableEval(self.expr).eval({'o': o}):
File
"/home/zope/Zope-2.7.6-final/lib/python/RestrictedPython/Eval.py",
line 112, in eval
return eval(code, d)
File "<string>", line 1, in <expression>
Unauthorized: You are not allowed to access 'portal_type' in this
context
Littéralement, que l'utilisateur qui demande d'afficher document.html
n'en a pas le droit... Mais c'est plus sûrement que ledit document.html
est corrompu. D'autant plus avec tes autres messages d'erreur.
Oui, c'est le grand CPS MAnager qui réindexe automatiquement et qui a
normalement tous les droits.
Tu peux peut-être essayer ceci :
1. supprimer les documents Word qui ont lancé la cascade d'erreurs
2. installer le patch pour PortalTransforms que j'ai mis hier dans le
Trac : http://svn.nuxeo.org/trac/pub/ticket/1760. Il accélère notamment
word_to_html. Au point de les rendre utilisables. Deux bémols :
* il nécessite une version récente de lxml (au moins 1.0, je pense)
* il est faux :-) (supprimant les parties du document HTML sous les
balises inconnues, au lieu de supprimer les balises seules ; il faut au
minimum ajouter 'font' aux balises reconnues)
2b. j'attache aussi un word_to_text.py utilisant wvware : le mettre dans
PortalTransforms/transforms, modifier transforms/__init__.py pour qu'il
l'appelle, et l'ajouter sous la ZMI
3. Réimporter les documents Word
4. Supprimer et recréer les index
OK je vais essayer ça cette semaine et te tiendrai au courant .
Merci beaucoup de cette réponse et mille excuses pour le retard de cette
réponse.
Cordialement,
Ch Otton
Poyry Environment.
yves
------------------------------------------------------------------------
# $Id$
import os
import sys
from lxml import etree
from Products.PortalTransforms.interfaces import itransform
from Products.PortalTransforms.transforms import office_wvware
ENCODING = "iso-8859-15"
# This could go in libtransforms/utils
def getBodyTextFromHTML( html_fd, encoding ):
"""Return the body, as text, of an HTML document.
"""
parser = etree.HTMLParser()
tree = etree.parse(html_fd, parser)
body = []
body_elt = tree.getroot().find('body')
if not body_elt:
return ''
for event, elem in etree.iterwalk(body_elt, events=('start', 'end')):
if VALID_TAGS.get(elem.tag, 0):
if elem.text:
txt = elem.text.strip()
if isinstance(txt, unicode):
txt = txt.encode(encoding, 'xmlcharrefreplace')
if txt:
body.append(txt)
if elem.tail:
txt = elem.tail.strip()
if isinstance(txt, unicode):
txt = txt.encode(encoding, 'xmlcharrefreplace')
if txt:
body.append(txt)
return " ".join(body)
class document(office_wvware.document):
def text(self):
htmlfile = open(os.path.join(self.tmpdir, self.__name__+'.html'))
text = getBodyTextFromHTML(htmlfile, ENCODING)
return text
class word_to_text:
__implements__ = itransform
__name__ = 'word_to_text'
inputs = ('application/msword',)
output = 'text/plain'
def name(self):
return self.__name__
def convert(self, data, cache, **kwargs):
orig_file = os.path.basename((kwargs.get('filename') or 'unknown.doc'))
doc = document(orig_file, data)
doc.convert()
text = doc.text()
doc.cleanDir(doc.tmpdir)
cache.setData(text)
return cache
def register():
return word_to_text()
------------------------------------------------------------------------
_______________________________________________
cps-users-fr
Adresse de la liste : [email protected]
Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>
_______________________________________________
cps-users-fr
Adresse de la liste : [email protected]
Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>