def setUp(self):
        self.app = self.layer['app']
        self.portal = self.layer['portal']
        self.request = self.layer['request']
        with api.env.adopt_roles(['Manager']):
            self.image = api.content.create(
                self.portal,
                'Image',
                'test_image',
                image=dummy_image(),
            )
            annotations = IAnnotations(self.image)
            thumbnail = ImageField()
            thumbnail.set(self.image, dummy_image().data)
            annotations[THUMBNAIL_KEY] = list([thumbnail])

        self.image_view = api.content.get_view(
            'document_preview',
            self.image,
            self.request,
        )
        self.portal_view = api.content.get_view(
            'document_preview',
            self.portal,
            self.request,
        )
Пример #2
0
    def __call__(self):
        helperutilities.RUN_SHELL_COMMANDS = True
        log = self.mklog()
        log('converting preview images...')
        IF = ImageField()
        
        cat = self.context.portal_catalog
        results = cat(Language='all', portal_type=TYPES, b_size=100000)
        
        log(str(len(results))+'\n')
        for result in results:
            try:
                ob = result.getObject()
            except AttributeError:
                continue
            if not hasattr(ob, 'pagePictures') or len(ob.pagePictures)==0:
                log("NOTFOUND: %s has no pagePictures\n" % result.getPath())
                continue
            first = ob.pagePictures[0]
            if type(first) == type(IF):
                continue

            # wrap as blobfield
            newpics = []
            for pic in ob.pagePictures:
                NF = ImageField()
                NF.set(ob, pic)
                newpics.append(NF)
            ob.pagePictures = newpics
            
            log("Success: %s converted\n" % result.getPath())
                
        return
        
        
        
# Code to kill old pagePictures from history
# PH = portal.portal_historiesstorage
# REP = PH._getZVCRepo()
# cnt = 0
# for zvh in REP.objectValues():
#   for vid in zvh.getVersionIds():
#   data = zvh.getVersionById(vid)._data
#   wob = data.getWrappedObject()
#   if not hasattr(wob, 'object'):
#       continue
#   rob = wob.object
#   if hasattr(rob, 'pagePictures'):
#     pp = rob.pagePictures
#     if len(pp)>0 and type(pp[0]) == type(''):
#       print "found one"
#       rob.pagePictures = []
#       rob._p_changed = 1
#       
#       
Пример #3
0
    def run_conversion(self):
        file_id = 'dump'
        ext = '.html'
        filename = file_id + ext
        inputfilepath = self.html_dump(filename)
        if not inputfilepath:
            return

        cmd = [
            docsplit.binary, 'pdf', inputfilepath, '--output', self.storage_dir
        ]
        docsplit._run_command(cmd)
        pdf_path = os.path.join(self.storage_dir, file_id + '.pdf')
        annotations = IAnnotations(self.context)
        gsettings = self.gsettings
        sizes = (
            ('large', gsettings.large_size),
            ('normal', gsettings.normal_size),
            ('small', gsettings.thumb_size),
        )
        outputfilepath = os.path.join(self.storage_dir, file_id + '.pdf')
        with codecs.open(outputfilepath, 'r') as pdf_file:
            annotations[PDF_VERSION_KEY] = pdf_file.read()

        docsplit.dump_images(pdf_path,
                             self.storage_dir,
                             sizes=sizes,
                             format='gif')

        thumb_dir = os.path.join(self.storage_dir, 'small')
        thumbnails = sorted(os.listdir(thumb_dir))
        preview_dir = os.path.join(self.storage_dir, 'large')
        previews = sorted(os.listdir(preview_dir))
        previewdata = []
        thumbdata = []
        for filename in previews[:20]:
            IF = ImageField()
            with open(os.path.join(preview_dir, filename)) as img:
                IF.set(self.context, img.read())
                previewdata.append(IF)
        for filename in thumbnails[:20]:
            IF = ImageField()
            with open(os.path.join(thumb_dir, filename)) as img:
                IF.set(self.context, img.read())
                thumbdata.append(IF)

        annotations[PREVIEW_IMAGES_KEY] = previewdata
        annotations[THUMBNAIL_KEY] = thumbdata
Пример #4
0
    def __call__(self):
        annotations = IAnnotations(self.context)

        # get the contents of the context
        mimetype, payload = self.getPayload()

        if mimetype:
            basetype = mimetype.split('/')[0]
        else:
            basetype = None

        if basetype in EXCLUDE_TYPES:
            logger.warn('Type {0} is in excluded types, '
                        'skipping {1}'.format(
                            basetype,
                            self.context.getId())
                        )
            annotations[PREVIEW_MESSAGE_KEY] = ('There is no preview for this '
                                                'file type')
            return

        try:
            converted = self.convert_on_server(payload, mimetype)
        except ServerError as e:
            if e.args and e.args[0].startswith("Error connecting"):
                annotations[PREVIEW_MESSAGE_KEY] = (
                    'Could not contact conversion server')
            else:
                annotations[PREVIEW_MESSAGE_KEY] = (
                    'Sorry, this document type cannot be converted. There is '
                    'no preview available.')
            return
        except ConfigError:
            converted = self.convert_locally(payload, mimetype)

        pdfdata = FileField()
        pdfdata.set(self.context, converted['pdfs'][0])
        previewdata = []
        thumbdata = []
        for filedata in converted['previews'][:20]:
            IF = ImageField()
            IF.set(self.context, filedata)
            previewdata.append(IF)
        for filedata in converted['thumbnails'][:20]:
            IF = ImageField()
            IF.set(self.context, filedata)
            thumbdata.append(IF)

        annotations[PDF_VERSION_KEY] = pdfdata
        annotations[PREVIEW_IMAGES_KEY] = previewdata
        annotations[THUMBNAIL_KEY] = thumbdata
     default=False,
     widget=atapi.BooleanWidget(
         label=_(u'label_issueHideImage', default=u'Hide banner image.'),
         description=_(
             u'enl_issue_help_hide_image',
             default=u'If checked, the banner image defined on newsletter \
                 or on this issue will not be used.'),
         i18n_domain='EasyNewsletter',
     )),
 ImageField(
     'image',
     schemata='settings',
     max_size=(600, 600),
     widget=atapi.ImageWidget(
         display_threshold=512000,
         label=_(u"ENL_image_label", default=u"Banner image"),
         description=_(
             u"ENL_image_desc",
             default=u"Banner image, you can include in the templates by" +
             u"\n adding the {{banner}} placeholder into it." +
             u" By default it should be 600x200 pixel."),
     ),
 ),
 atapi.TextField(
     'header',
     schemata='settings',
     allowable_content_types=('text/html',
                              'text/x-plone-outputfilters-html'),
     default_output_type='text/x-plone-outputfilters-html',
     default_method='get_default_header',
     widget=RichTextWidget(
         rows=10,
Пример #6
0
        storage=atapi.AnnotationStorage(migrate=True),
        validators=('isTidyHtmlWithCleanup', ),
        default_output_type='text/x-html-safe',
        widget=atapi.RichWidget(
            label=_(u'label_text', u'Texto'),
            rows=20,
            allow_file_upload=False,
        ),
    ),
    ImageField(
        name='image',
        sizes={
            'large': (768, 768),
            'preview': (400, 400),
            'mini': (200, 200),
            'thumb': (128, 128),
            'tile': (64, 64),
            'icon': (32, 32),
            'listing': (16, 16),
        },
        required=False,
        widget=atapi.ImageWidget(label=_(u'label_image', u'Imagem'), ),
    ),
))
schema['description'].widget.visible['edit'] = 'invisible'
schemata.finalizeATCTSchema(schema)


class Destaque(ATCTContent, HistoryAwareMixin):
    """
    """
Пример #7
0
    atapi.StringField('testStringField'),
    atapi.BooleanField('testBooleanField'),
    atapi.IntegerField('testIntegerField'),
    atapi.FloatField('testFloatField'),
    atapi.FixedPointField('testFixedPointField'),
    atapi.DateTimeField('testDateTimeField'),
    atapi.LinesField('testLinesField'),
    atapi.FileField('testFileField'),
    atapi.TextField('testTextField'),
    atapi.ImageField('testImageField'),
    atapi.ReferenceField('testReferenceField', relationship='testrelation'),
    atapi.ReferenceField(
        'testMVReferenceField', relationship='testrelation', multiValued=True),
    BlobField('testBlobField'),
    FileField('testBlobFileField'),
    ImageField('testBlobImageField'),
    QueryField('testQueryField'),
    atapi.StringField('testRequiredField', required=True),
    atapi.StringField('testReadonlyField', mode='r'),
    atapi.StringField('testWriteonlyField', mode='w'),
    atapi.StringField('testReadPermissionField',
                      read_permission=permissions.ManagePortal),
    atapi.StringField('testWritePermissionField',
                      write_permission=permissions.ManagePortal),
    atapi.StringField('testURLField', validators=('isURL', )),
))


class ATTestDocument(ATDocumentBase):
    """A test type containing a set of standard Archetypes fields."""
Пример #8
0
from Products.EEAContentTypes.config import PROJECTNAME
from Products.EEAContentTypes.content.interfaces import ICloudVideo
from Products.EEAContentTypes.content.ThemeTaggable import (
    ThemeTaggable,
    ThemeTaggable_schema,
)
from eea.forms.fields.ManagementPlanField import ManagementPlanField
from eea.forms.widgets.ManagementPlanWidget import ManagementPlanWidget

schema = Schema((
    ImageField('image',
               required=False,
               storage=public.AnnotationStorage(migrate=True),
               languageIndependent=True,
               widget=ImageWidget(
                   label='Image',
                   label_msgid='EEAContentTypes_label_image',
                   description_msgid='EEAContentTypes_help_image',
                   i18n_domain='eea',
                   show_content_type=False)),
    TextField('cloudUrl',
              languageIndependent=True,
              required=True,
              schemata='default',
              storage=AnnotationStorage(migrate=True),
              default_content_type='text/plain',
              validators=('videoCloudUrlValidator', ),
              allowable_content_types=('text/plain', ),
              default_output_type='text/plain',
              widget=TextAreaWidget(
                  description='The embedding code for the video from'
Пример #9
0
        widget=ReferenceBrowserWidget(
            label=_(u'Link Interno'),
            description=
            _(u'Caso selecionado o link sera apontado para o local de sua escolha.'
              ),
            allow_search=True,
            allow_browse=True,
        ),
        #allowed_types=('Folder',),
        relationship='link_interno',
        multiValued=False,
    ),
    ImageField(
        name='imagem',
        widget=atapi.ImageWidget(
            label=_(u'Imagem do Banner'),
            description=_(u'Escolha da imagem do banner.'),
        ),
        required=False,
    ),
    atapi.BooleanField(
        name='linkTarget',
        default=False,
        widget=atapi.BooleanWidget(
            label=_(u'Abrir link em nova janela'),
            description=_(
                u'Caso selecionado o link sera exibido em uma nova janela'),
        ),
        required=False,
    ),
))
Пример #10
0
from ftw.subsite import _
from ftw.subsite.config import PROJECTNAME
from ftw.subsite.interfaces import ISubsite
from plone.app.blob.field import ImageField
from plone.app.layout.navigation.interfaces import INavigationRoot
from Products.Archetypes import atapi
from Products.ATContentTypes.content import folder
from Products.ATContentTypes.content import schemata
from zope.interface import implements

schema = atapi.Schema(
    (ImageField(name='logo',
                required=False,
                storage=atapi.AnnotationStorage(),
                schemata='subsite',
                widget=atapi.ImageWidget(label=_(u'label_logo',
                                                 default=u'Logo'),
                                         description=_(u'help_logo',
                                                       default=u''))),
     atapi.TextField(name='additional_css',
                     storage=atapi.AnnotationStorage(),
                     schemata='subsite',
                     allowable_content_types=('text/plain', ),
                     default_content_type='text/plain',
                     default_input_type='text/plain',
                     default_output_type='text/plain',
                     widget=atapi.TextAreaWidget(
                         rows=15,
                         label=_(u'label_additional_css',
                                 default=u'Additional CSS'),
                         description=_(u'help_additional_css', default=u''))),
Пример #11
0
            description=_(
                u"EasyNewsletter_help_unsubscribe_string",
                default=u'This will replace the placeholder {{UNSUBSCRIBE}}.'),
            i18n_domain='EasyNewsletter',
        ),
    ),

    ImageField(
        'image',
        schemata='personalization',
        max_size=(600, 600),
        widget=atapi.ImageWidget(
            display_threshold=512000,
            label=_(
                u"ENL_image_label",
                default=u"Banner image"),
            description=_(
                u"ENL_image_desc",
                default=u"Banner image, you can include in the templates by" +
                        u"\n adding the {{banner}} placeholder into it." +
                        u" By default it should be 600x200 pixel."
            ),
        ),
    ),

    ImageField(
        'logo',
        schemata='personalization',
        max_size=(768, 768),
        widget=atapi.ImageWidget(
            display_threshold=512000,
                validators=('isURL',),
                ),

    ImageField('image',
               required=True,
               languageIndependent=True,
               storage=AnnotationStorage(migrate=True),
               swallowResizeExceptions= \
                   zconf.swallowImageResizeExceptions.enable,
               pil_quality=zconf.pil_config.quality,
               pil_resize_algo=zconf.pil_config.resize_algo,
               max_size=zconf.ATImage.max_image_dimension,
               sizes={'large': (768, 768),
                      'preview': (400, 400),
                      'mini': (200, 200),
                      'thumb': (128, 128),
                      'tile': (64, 64),
                      'icon': (32, 32),
                      'listing': (16, 16),
                      },
               validators=(('isNonEmptyFile', V_REQUIRED),
                           ('imageMinSize', V_REQUIRED)),
               widget=ImageWidget(
                   description='High-res preview image'
                               ' (at least 1024px width)',
                   label='Preview image',
                   show_content_type=False, )
               ),

    TextField(
        name='body',
Пример #13
0
                               u"Total maximum children items to be included "
                               u"while generating PDF for collection "
                               u"or folderish content-types."))),
    atapi.LinesField(
        'types',
        schemata='default',
        vocabulary_factory='plone.app.vocabularies.ReallyUserFriendlyTypes',
        multiValued=1,
        widget=atapi.MultiSelectionWidget(
            format='checkbox',
            label=_(u'Portal types'),
            description=_(
                u"Use this PDF Theme for the following Portal-Types."))),
    ImageField("image",
               schemata="default",
               sizes=None,
               widget=atapi.ImageWidget(
                   label=_(u"Preview"),
                   description=_(u"Upload a preview image for this theme"))),
))

THEME_SCHEMA = ATFolder.schema.copy() + EditSchema.copy()


def finalize_schema(schema=THEME_SCHEMA):
    """ Update schema
    """
    for field in schema.fields():
        field.write_permission = 'Manage portal'
        if field.schemata != 'default':
            field.required = False
            field.mode = 'r'
Пример #14
0
def _getAllPageImages(context, size=(320,452)):
    """ Generate the preview images for a pdf """
    pdf = context.get_review_pdf()
#    import pdb; pdb.set_trace()
    if pdf:
        pdf_data = pdf["blob"].open().read()
    if not pdf or not pdf_data:
        return "%s has no pdf" %(
            context.absolute_url()), None
    else:
        # Split the pdf, one file per page
        try:
            split_pdf_pages = RunSubprocess(
                "pdftk",
                output_params="burst output")
        except SubprocessException, e:
            return e
        split_pdf_pages.create_tmp_input(suffix=".pdf", data=pdf_data)
        split_pdf_pages.create_tmp_output_dir()
        split_pdf_pages.output_path = os.path.join(
            split_pdf_pages.tmp_output_dir,
            "%04d.pdf")
        split_pdf_pages.run()

        msg = tuple()
        if split_pdf_pages.errors != "":
            msg += ("Message from split_pdf_pages:"
                   "\n%s\n" % split_pdf_pages.errors,)

        # Convert the pages to .gifs
        # rewritten to have one converter step per page as we have seen process 
        # sizes larger than 2GB for 60 pages in a batch
        for filename in glob.glob(split_pdf_pages.tmp_output_dir+"/*.pdf"):
            pdf_to_image = RunSubprocess(
                "convert",
                input_params="-density 250",
                input_path=filename,
                output_params= "-resize %sx%s -background white -flatten" % (
                        size[0], size[1]))
            outputname = '.'.join(filename.split("/")[-1].split('.')[:-1])+'.gif'
            pdf_to_image.output_path = os.path.join(
                split_pdf_pages.tmp_output_dir,
                outputname)
            pdf_to_image.run()
            if pdf_to_image.errors != "":
                msg += ("Message from pdfs_to_images:"
                       "\n%s\n" % pdf_to_image.errors,)

            pdf_to_image.clean_up()

        imgfiles = [gif for gif
                    in os.listdir(split_pdf_pages.tmp_output_dir)
                    if os.path.splitext(gif)[1] == '.gif']
        imgfiles.sort()

        pages = []
        for img in imgfiles:
            img = open(os.path.join(
                    split_pdf_pages.tmp_output_dir, img),
                         "r")
            img_data = img.read()
            pages.append(img_data)
            img.close()

        # Remove temporary files
        split_pdf_pages.clean_up()

        if pages:
            imgfields = []
            for img in pages:
                IF = ImageField()
                IF.set(context, img)
                imgfields.append(IF)
            setattr(context, 'pagePictures', imgfields)
            
        return msg or "Successfully converted %s pages" % len(pages)
Пример #15
0
     "losId",
     required=False,
     languageIndependent=True,
     #widget=atapi.StringWidget(label=_(u"LOS Id"), visible=False),
     widget=atapi.StringWidget(label=_(u"LOS Id")),
 ),
 atapi.TextField(
     'text',
     required=False,
     searchable=True,
     validators=('isTidyHtmlWithCleanup', ),
     default_output_type='text/x-html-safe',
     widget=atapi.RichWidget(description='', label=_(u'LOS text'), rows=25),
 ),
 ImageField('image',
            widget=atapi.ImageWidget(label=_(u"Image")),
            validators=('isNonEmptyFile'),
            languageIndependent=True),
 backref.BackReferenceField(
     'services',
     relationship='sd_los',
     multiValued=True,
     widget=backref.BackReferenceWidget(label=_(u"Services"), ),
 ),
 atapi.LinesField(
     'synonyms',
     multiValued=1,
     searchable=True,
     #widget=atapi.LinesWidget(label=_(u'Synonyms'), visible=False),
     widget=atapi.LinesWidget(label=_(u'Synonyms')),
 ),
 atapi.LinesField(
Пример #16
0
                 schemata="default",
                 required=False,
                 default_output_type="text/x-html-safe",
                 widget=atapi.RichWidget(
                     label=_(u'References and endnotes'),
                     description=_(u'References, endnotes, footnotes, '
                                   u'abbreviations and definitions'),
                     rows=25)),
 ImageField(
     name="image",
     schemata="default",
     sizes=None,
     widget=atapi.ImageWidget(
         label=_("Image"),
         description=
         _("Image used for cover, thumbnail and listings, image width should be of minimum 1920px"
           ),
         i18n_domain='eea',
     ),
     validators=(
         ('isNonEmptyFile', V_REQUIRED),
         ('imageMinSize', V_REQUIRED),
         ('checkFileMaxSize', V_REQUIRED),
     )),
 atapi.StringField(
     name='imageCopyright',
     schemata="default",
     widget=atapi.StringWidget(
         label=_("Image Copyright"),
         description=_("Enter the copyright information for this image."),
         i18n_domain='eea',
     )),
Пример #17
0
    from Products.LinguaPlone import atapi
except ImportError:
    from Products.Archetypes import atapi

TransparencySectionSchema = schemata.ATContentTypeSchema.copy() + atapi.Schema(
    (  # noqa
        # -*- Your Archetypes field definitions here ... -*-
        ImageField(
            "image",
            required=False,
            sizes={
                "large": (768, 768),
                "preview": (400, 400),
                "mini": (200, 200),
                "thumb": (128, 128),
                "tile": (64, 64),
                "icon": (32, 32),
                "listing": (16, 16),
            },
            widget=ImageWidget(
                label=_(u"Logo"),
                show_content_type=False,
            ),
        ),
        atapi.StringField(
            "category_id",
            languageIndependent=True,
            required=True,
            widget=atapi.StringWidget(
                label=_(u"Category id"),
                description=_(u"Enter the transparency portal "
Пример #18
0
    ),
    atapi.BooleanField(
        name='showImages',
        required=False,
        default=True,
        schemata='default',
        widget=atapi.BooleanWidget(
            label=_('label_show_images', default=u'Show images as gallery'),
            description=_('description_show_images',
                          default=u'Decide you want to show all uploaded '
                          u'images as gallery'),
        ),
    ),
    ImageField(name='leadimage',
               required=False,
               schemata='image',
               widget=atapi.ImageWidget(
                   label=_(u'label_lead_image', default=u'Lead image'))),
))

# Set storage on fields copied from ATFolderSchema, making sure
# they work well with the python bridge properties.

schemata.finalizeATCTSchema(BlogEntrySchema,
                            folderish=True,
                            moveDiscussion=False)
#finalizeZugSchema(BlogEntrySchema, folderish=True, moveDiscussion=False)
BlogEntrySchema['effectiveDate'].widget.visible = {
    'view': 'visible',
    'edit': 'visible'
}
Пример #19
0
    atapi.StringField("testStringField"),
    atapi.BooleanField("testBooleanField"),
    atapi.IntegerField("testIntegerField"),
    atapi.FloatField("testFloatField"),
    atapi.FixedPointField("testFixedPointField"),
    atapi.DateTimeField("testDateTimeField"),
    atapi.LinesField("testLinesField"),
    atapi.FileField("testFileField"),
    atapi.TextField("testTextField"),
    atapi.ImageField("testImageField"),
    atapi.ReferenceField("testReferenceField", relationship="testrelation"),
    atapi.ReferenceField(
        "testMVReferenceField", relationship="testrelation", multiValued=True),
    BlobField("testBlobField"),
    FileField("testBlobFileField"),
    ImageField("testBlobImageField"),
    QueryField("testQueryField"),
    atapi.StringField("testRequiredField", required=True),
    atapi.StringField("testReadonlyField", mode="r"),
    atapi.StringField("testWriteonlyField", mode="w"),
    atapi.StringField("testReadPermissionField",
                      read_permission=permissions.ManagePortal),
    atapi.StringField("testWritePermissionField",
                      write_permission=permissions.ManagePortal),
    atapi.StringField("testURLField", validators=("isURL", )),
))


class ATTestDocument(ATDocumentBase):
    """A test type containing a set of standard Archetypes fields."""
Пример #20
0
                          label=_(u"Email address"),
                          description=_(u"Contact email address."),
                      ),
                      required=False,
                      languageIndependent=True),
    atapi.StringField('phone',
                      widget=atapi.StringWidget(
                          label=_(u"Phone number"),
                          description=_(u"Contact phone number"),
                      ),
                      required=False,
                      languageIndependent=True),
    ImageField('photo',
               widget=atapi.ImageWidget(
                   label=_(u"Photo"),
                   description=_(u"A portrait of the person."),
               ),
               validators=('isNonEmptyFile'),
               languageIndependent=True),
    atapi.StringField('department',
                      widget=atapi.StringWidget(label=_(u"Department"),
                                                description=''),
                      required=False),
))

PersonSchema["title"].widget.label = _(u"Fullname")
PersonSchema["title"].languageIndependent = True

schemata.finalizeATCTSchema(PersonSchema, moveDiscussion=False)

Пример #21
0
from observatorio.conteudo.interfaces import IPublicacao

PublicacaoSchema = ATContentTypeSchema.copy() + atapi.Schema((
    BlobField(
        name='arquivo',
        widget=atapi.FileWidget(
            label=_(u'Arquivo'),
            description=_(u'Arquivo da publicacao.'),
        ),
        required=True,
        primary=True,
    ),
    ImageField(
        name='image',
        widget=atapi.ImageWidget(
            label=_(u'Imagem Capa'),
            description=_(u'Imagem da capa da publicacao.'),
        ),
        required=False,
    ),
))

schemata.finalizeATCTSchema(PublicacaoSchema)


class Publicacao(ATCTFileContent):
    """
    """

    implements(IPublicacao)

    meta_type = "Publicacao"
Пример #22
0
from plone.app.blob.field import FileField
from plone.app.blob.field import ImageField
from plone.app.blob.tests.base import changeAllowedSizes
from plone.app.blob.tests.base import ReplacementTestCase
from plone.app.blob.tests.utils import getFile
from Products.Archetypes.public import BaseContent
from Products.Archetypes.public import BaseSchema
from Products.Archetypes.public import FileWidget
from Products.Archetypes.public import ImageWidget
from Products.Archetypes.public import registerType
from Products.Archetypes.public import Schema

SampleSchema = BaseSchema.copy() + Schema((
    FileField(name='foo',
              widget=FileWidget(label='File', description='a file')),
    ImageField(name='bar',
               widget=ImageWidget(label='Image', description='an image')),
    ImageField(name='hmm',
               sizes={'tiny': (42, 42)},
               widget=ImageWidget(label='Image', description='an image')),
))


class SampleType(BaseContent):

    portal_type = 'SampleType'
    schema = SampleSchema


permissions['SampleType'] = packageName + ': SampleType'
registerType(SampleType, packageName)
Пример #23
0
            label="Embed code",
            description=("Tableau embed code should be pasted here."),
            label_msgid='EEAContentTypes_label_embed',
            i18n_domain='eea',),
        ),

    ImageField('image',
               required=False,
               languageIndependent=True,
               storage=AnnotationStorage(migrate=True),
               swallowResizeExceptions= \
                   zconf.swallowImageResizeExceptions.enable,
               pil_quality=zconf.pil_config.quality,
               pil_resize_algo=zconf.pil_config.resize_algo,
               max_size=zconf.ATImage.max_image_dimension,
               sizes=None,
               validators=(('isNonEmptyFile', V_REQUIRED),
                           ('imageMinSize', V_REQUIRED)),
               widget=ImageWidget(
                   description='High-res preview image ' \
                               '(at least FHD 1920x1080). ' \
                               'If the image is removed, a new image will ' \
                               'automatically be created after saving',
                   label='Preview image',
                   show_content_type=False, )
               ),

    TextField(
        name='body',
        searchable=True,
        required_for_published=False,
        required=False,
Пример #24
0
     allowable_content_types=('text/html', ),
     default_content_type="text/html",
     default_output_type="text/x-html-safe",
     widget=RichWidget(
         label="Body Text",
         description="Body text used for the country/region intro page",
         label_msgid='EEAContentTypes_label_body',
         i18n_domain='eea',
     ),
 ),
  ImageField('image',
             required=True,
             storage=public.AnnotationStorage(migrate=True),
             languageIndependent=True,
             widget=ImageWidget(
                 label='Background image, use image with minimum width of '
                 '1920px',
                 label_msgid='EEAContentTypes_label_image',
                 description_msgid='EEAContentTypes_help_image',
                 i18n_domain='eea',
                 show_content_type=False),
             validators=(('imageMinSize', V_REQUIRED), )),
  LinesField(
      name='externalLinks',
      languageIndependent=True,
      required=False,
      widget=LinesWidget(
          label="External links",
          description="External links, add one per line as: Title|url",
          label_msgid='EEAContentTypes_label_external_links',
          i18n_domain='eea',
      ),