Saudações comunidade!

Estou com a seguinte dúvida: Quero implementar um produto que só aceite
UPLOAD de arquivos pdf's

Estou querendo criar um validador com uma função para restringir.

mas não pega nenhum tipo de arquivo. e ao tentar compilar, ou melhor, rodar
o instence fg
aparece o seguinte erro final
*
    ZopeXMLConfigurationError: File
"/usr/local/Plone/zinstance/src/pox.video/pox/video/content/configure.zcml",
line 20.2-22.5
    SyntaxError: 'return' outside function (validators.py, line 24)*


Alguém já precisou de restringir uma pasta com um tipo específico de
arquivo?

Códigos:

validators.py

from  zope.interface import implements
from  zope.component import adapts
from  Products.Archetypes.interfaces import IObjectPostValidation
from  pox.video import videoMessageFactory as _
from  pox.video.interfaces import IVideo

# class name could be any one
class ValidatePDFFile(object):
    """
    Checks if file field has a real FLV file
    """
    implements(IObjectPostValidation)
    adapts(IVideo)


    def validate_file(self, value):
        """valida a extensão de um arquivo PDF"""
        field = self.getField('file')
        if field.getContentType(self) not in self.inlineMimetypePDF:
           return 'Tipo de arquivo não permitido. Apenas arquivos PDF são
permitidos'


# Returning None means no error
return None



configure.zcml

  <subscriber
provides="Products.Archetypes.interfaces.IObjectPostValidation"
    factory=".validators.ValidatePDFFile"
   />
</configure>


E uma classe que chama-se video, mas deveria ser filePDF, (ignorar este
detalhe :)

class Video(file.ATFile):
    """
    pox Video
    """
    implements(IATFile,IVideo)

    meta_type = "Video"
    schema = VideoSchema

    title = atapi.ATFieldProperty('title')
    description = atapi.ATFieldProperty('description')

    inlineMimetypePDF= ('application/pdf')

    # -*- Your ATSchema to Python Property Bridges Here ... -*-

atapi.registerType(Video, PROJECTNAME)



-- 
-- 
Júlio Zinga Suzuki Lopes
Analista de TI
Tel: 83 8862-1530 / 9975-1646

Responder a