2016-09-06 7 views
0

J'ai créé un Dextérité type en utilisant python, et le code est:comment je corrige une erreur unicode dans Python Dextérité Type?

# -*- coding: utf-8 -*- 
from plone.app.textfield import RichText 
from plone.autoform import directives 
from plone.namedfile import field as namedfile 
from plone.supermodel.directives import fieldset 
from plone.supermodel import model 
from z3c.form.browser.radio import RadioFieldWidget 
from zope import schema 
from zope.schema.vocabulary import SimpleVocabulary 
from zope.schema.vocabulary import SimpleTerm 
from DateTime import DateTime 

from projetime.ged import MessageFactory as _ 

TipoDeDocumentoVocabulary = SimpleVocabulary(
    [SimpleTerm(value=u'processo', title=_(u'Processos')), 
    SimpleTerm(value=u'contratos', title=_(u'Contratos')), 
    SimpleTerm(value=u'outros', title=_(u'Outros'))] 
) 

TipoDeUploadVocabulary = SimpleVocabulary(
    [SimpleTerm(value=u'sim', title=_(u'Sim')), 
    SimpleTerm(value=u'nao', title=_(u'Não'))] 
) 

agora = DateTime() 

class IDigitalFile(model.Schema): 
    """Dexterity-Schema 
    """ 

    directives.widget(TipoDeDocumento=RadioFieldWidget) 
    TipoDeDocumento = schema.Choice(
     title=_(u"Tipo de Documento"), 
     vocabulary=TipoDeDocumentoVocabulary, 
     required=True 
    ) 

    titulo = schema.TextLine(
     title=_(u"Título"), 
     required=True 
    ) 

    codDoDocumento = schema.TextLine(
     title=_(u"Cód. do Documento"), 
     required=False 
    ) 

    CpfCnpj = schema.TextLine(
     title=_(u"CPF/CNPJ"), 
     required=False 
    ) 

    Assunto = schema.TextLine(
     title=_(u"Assunto"), 
     required=True 
     ) 

    Tipo = schema.TextLine(
     title=_(u"Tipo"), 
     required=False 
    ) 

    Descricao = schema.Text(
     title=_(u"Descrição"), 
     required=True 
    ) 

    fieldset('File', fields['Arquivo']) 
    Arquivo = namedfile.NamedBlobFile(
     title=_(u"Arquivo Digitalizado"), 
     required=True 
    ) 

    directives.omitted(['Automatico', 'uploded_at']) 
    directives.read_permission(Automatico="cmf.ManagePortal") 
    directives.write_permission(Automatico="cmf.ManagePortal") 
    directives.widget(Automatico=RadioFieldWidget) 
    Automatico = schema.Bool(
     Title=_(u"Upload via Script?"), 
     vocabulary=TipoDeUploadVocabulary, 
     required=True, 
     default=u"Não" 
    ) 

    directives.read_permission(uploded_at="cmf.ManagePortal") 
    directives.write_permission(uploded_at="cmf.ManagePortal") 
    uploded_at = schema.Datetime(
     title=_(u"Data de Upload"), 
     required=True, 
     default=agora 
    ) 

Et l'erreur est:

WrongType: (<zope.i18nmessageid.message.MessageFactory object at 0x7f118f168890>, <type 'unicode'>, 'title')

I Créé en ligne poing:

# -*- coding: utf-8 -*-

Mais l'erreur persiste.

+0

Ce message d'erreur est trop courte. Avez-vous une trace de pile? Et utilisez-vous Python 2? Une supposition aveugle est que le système i18n alimente votre code avec des chaînes "str" ​​alors qu'il attend des chaînes "unicode". – daragua

+0

Plone 4.3.10 (4313), Python 2.7.12, Zope 2.13.24. J'ai trouvé quelque chose comme dans cette URL https://github.com/plone/Products.CMFPlone/issues/386 –

+0

Je ne sais pas ce que 'projetime.ged.MessageFactory' est mais vous l'importez comme' _'. Si c'est en fait le même objet que 'ploneconf.site.MessageFactory', vous avez effectivement le même problème que dans le rapport de bug. Si c'est le cas, essayez de remplacer cette importation par 'depuis l'importation de ploneconf.site _'. J'ai peur de ne pas pouvoir t'aider beaucoup! – daragua

Répondre