All pastes #157177 Raw Edit

Lwolf

public python v1 · immutable
·published 2006-09-01 10:37 UTC
rendered paste body
from Products.ATContentTypes.config import HAS_LINGUA_PLONEfrom Products.Meudon_Skin.config import PROJECTNAME, GLOBALSfrom Products.CutImageField import CutImageFieldif HAS_LINGUA_PLONE:    from Products.LinguaPlone.public import *else:    from Products.Archetypes.public import *from ComputedAttribute import ComputedAttributefrom Acquisition import aq_basefrom AccessControl import ClassSecurityInfofrom Products.CMFCore.permissions import ModifyPortalContent, Viewfrom Products.ATContentTypes.configuration import zconffrom Products.ATContentTypes.content.base import updateActions, updateAliasesfrom Products.RichDocument.content.richdocument import RichDocumentSchemafrom Products.RichDocument.content.richdocument import RichDocumentfrom Products.ATContentTypes.content.image import ATImageSchemafrom Products.ATContentTypes.content.image import ATImagefrom Products.ATContentTypes.content.schemata import finalizeATCTSchemafrom Products.ATContentTypes.content.base import registerATCTfrom Products.ATContentTypes.interfaces import IATImagefrom Products.ATContentTypes.content.base import ATCTFileContentfrom Products.ATContentTypes.lib.imagetransform import ATCTImageTransformfrom Products.validation import V_REQUIREDThumbnailedRichDocumentSchema = RichDocumentSchema.copy() ThumbnailedRichDocumentSchema = ThumbnailedRichDocumentSchema + Schema((    StringField(        name='section',        required=False,        searchable=True,        default='',        accessor='Section',        widget=StringWidget(            label="Section",            label_msgid='label_section',            description = "",            i18n_domain='plone',        ),    ),    TextField('notes',              required=False,              searchable=True,              primary=False,              storage = AnnotationStorage(migrate=True),              validators = ('isTidyHtmlWithCleanup',),              #validators = ('isTidyHtml',),              default_content_type = zconf.ATDocument.default_content_type,              default_output_type = 'text/x-html-safe',              allowable_content_types = zconf.ATDocument.allowed_content_types,              widget = RichWidget(                        description = "",                        description_msgid = "help_body_notes",                        label = "Notes",                        label_msgid = "label_body_notes",                        rows = 25,                        i18n_domain = "plone",                        allow_file_upload = zconf.ATDocument.allow_document_upload,)),    CutImageField('thumbnail',               required=False,               primary=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= {                       'thumbnail'  : (75, 100),                       'smallthumb' : (55, 75),                       'icon'    :  (45, 45),                      },               cut= {                      'thumbnail':1,                      'smallthumb':1,                      'icon' : 1,                    },               validators = (('isNonEmptyFile', V_REQUIRED),                             ('checkImageMaxSize', V_REQUIRED)),               widget = ImageWidget(                        #description = "Select the image to be added by clicking the 'Browse' button.",                        #description_msgid = "help_image",                        description = "Thumbnail shown in section root and in portlets",                        description_msgid = "help_richdocument_imagette",                        label= "Thumbnail",                        label_msgid = "label_richdocument_imagette",                        i18n_domain = "plone",                        show_content_type = False,)),    ), marshall=PrimaryFieldMarshaller())finalizeATCTSchema(ThumbnailedRichDocumentSchema)# now we have a schema with an icon field which can contain an image as primary field# creating a new type called ThumbnailedRichDocumentclass ThumbnailedRichDocument(RichDocument, ATImage):    """A document which may contain directly uploaded images and attachments."""    schema         =  ThumbnailedRichDocumentSchema    meta_type = 'ThumbnailedRichDocument'    portal_type = 'RichDocument'    archetype_name = 'Rich document'    content_icon = 'RichDocument.gif'    typeDescription = 'A document which can contain rich text, images and attachments'    typeDescMsgId = 'RichDocument_description_edit'    _atct_newTypeFor = {'portal_type' : 'RichDocument', 'meta_type' : 'RichDocument'}    # Allow images and files to be uploaded into this containerish object    allowed_content_types = ['ImageAttachment', 'FileAttachment']    # Set up our views - these are available from the 'display' menu    default_view = 'richdocument_view'    immediate_view = 'richdocument_view'    suppl_views = ('richdocument_view_preview', 'richdocument_view_float')    # Make sure we get title-to-id generation when an object is created    _at_rename_after_creation = True    __implements__ = RichDocument.__implements__, ATImage.__implements__    # Get the standard actions (tabs)    actions = RichDocument.actions    security = ClassSecurityInfo()    security.declareProtected(ModifyPortalContent, 'setThumbnail')    def setThumbnail(self, value, refresh_exif=True, **kwargs):        """Set id to uploaded id        """        # set exif first because rotation might screw up the exif data        # the exif methods can handle str, Pdata, OFSImage and file        # like objects        if value:          self.getEXIF(value, refresh=refresh_exif)          field = self.getField('thumbnail')          field.set(self, value, **kwargs)    security.declareProtected(View, 'tag')    def tag(self, **kwargs):        """Generate image tag using the api of the ImageField        """        return self.getField('thumbnail').tag(self, **kwargs)    def __bobo_traverse__(self, REQUEST, name):        """Transparent access to thumbnail scales        """        if name.startswith('thumbnail'):            field = self.getField('thumbnail')            image = None            if name == 'thumbnail':                image = field.getScale(self)            else:                scalename = name[len('thumbnail_'):]                if scalename in field.getAvailableSizes(self):                    image = field.getScale(self, scale=scalename)            if image is not None and not isinstance(image, basestring):                # image might be None or '' for empty images                return image        return RichDocument.__bobo_traverse__(self, REQUEST, name)registerATCT(ThumbnailedRichDocument, PROJECTNAME)