예제 #1
0
def markNewContentObject(obj, event):
    """Mark newly created content as Pigeonhole-aware if its 
    portal type is in our list of Aware types"""

    # get our local utility
    # this is incidentally also our lame check
    # to see if PH is installed here
    try:
        utility = getUtility(IPigeonholizer)
    except ComponentLookupError:
        # ignore problems when we can't find the utility -- PH might not
        # be installed
        utility = None
    if utility is not None:
        if obj.portal_type in utility.ph_aware_types:
            alsoProvides(obj, IPigeonholeAware)
        elif blobsAvailable:
            # in Plone 3, the meta_type for blob-based Images and Files
            # is just ATBlob, but thanks to a custom factory, they DO have
            # marker interfaces set. Check them!
            if "Image" in utility.ph_aware_types and \
                IATBlobImage.providedBy(obj):
                alsoProvides(obj, IPigeonholeAware)
            elif "File" in utility.ph_aware_types and \
                IATBlobFile.providedBy(obj):
                alsoProvides(obj, IPigeonholeAware)
        if disableCache is not None:
            disableCache(getSite().REQUEST)
예제 #2
0
 def testImageBlobInterfaces(self):
     foo = self.folder[self.folder.invokeFactory('Image', 'foo')]
     self.assertTrue(atimage.IATImage.providedBy(foo), 'no IATImage?')
     self.assertTrue(atimage.IImageContent.providedBy(foo), 'no IImageContent?')
     self.assertTrue(IATBlobImage.providedBy(foo), 'no IATBlobImage?')
     if not IInterface.providedBy(Z2IATFile):    # this is zope < 2.12
         self.assertTrue(Z2IATImage.isImplementedBy(foo), 'no zope2 IATImage?')
         self.assertFalse(Z2IATFile.isImplementedBy(foo), 'zope2 IATFile?')
예제 #3
0
 def __str__(self):
     """ return data as a string;  this is highly inefficient as it
         loads the complete blob content into memory, but the method
         is unfortunately still used here and there... """
     if IATBlobImage.providedBy(self):
         return self.getPrimaryField().tag(self)
     else:
         return self.get_data()
예제 #4
0
 def preview_image(self, uuid):
     images = self.contained_items(uuid)
     preview = None
     if len(images):
         first_item = images[0].getObject()
         if IATBlobImage.providedBy(first_item):
             preview = first_item
     return preview
예제 #5
0
 def testImageBlobInterfaces(self):
     foo = self.folder[self.folder.invokeFactory('Image', 'foo')]
     self.assertTrue(atimage.IATImage.providedBy(foo), 'no IATImage?')
     self.assertTrue(atimage.IImageContent.providedBy(foo), 'no IImageContent?')
     self.assertTrue(IATBlobImage.providedBy(foo), 'no IATBlobImage?')
     if not IInterface.providedBy(Z2IATFile):    # this is zope < 2.12
         self.assertTrue(Z2IATImage.isImplementedBy(foo), 'no zope2 IATImage?')
         self.assertFalse(Z2IATFile.isImplementedBy(foo), 'zope2 IATFile?')
예제 #6
0
 def index_html(self, REQUEST, RESPONSE):
     """ download the file inline or as an attachment """
     field = self.getPrimaryField()
     if IATBlobImage.providedBy(self):
         return field.index_html(self, REQUEST, RESPONSE)
     elif field.getContentType(self) in ATFile.inlineMimetypes:
         return field.index_html(self, REQUEST, RESPONSE)
     else:
         return field.download(self, REQUEST, RESPONSE)
예제 #7
0
 def __repr__(self):
     """ try to mimic the the old file and image types from ATCT
         for improved test compatibility """
     res = super(ATBlob, self).__repr__()
     if IATBlobFile.providedBy(self):
         res = res.replace(ATBlob.__name__, 'ATFile', 1)
     elif IATBlobImage.providedBy(self):
         res = res.replace(ATBlob.__name__, 'ATImage', 1)
     return res
예제 #8
0
 def fields(self):
     if IATBlobImage.providedBy(
             self.context) or (has_dx and IImage.providedBy(self.context)):
         fields = z3cfield.Fields(self.interface)
         fields['bannerImageLink'].widgetFactory = ContentTreeFieldWidget
     else:
         fields = z3cfield.Fields(self.interface).select(
             'bannerLocalOnly', 'bannerStopAcquisition')
     return fields
예제 #9
0
파일: previewfolder.py 프로젝트: vwc/isps
 def getImageTag(self, item, scalename):
     if IATBlobImage.providedBy(item):
         obj = item
     else:
         obj = item.getObject()
     scales = getMultiAdapter((obj, self.request), name='images')
     if scalename == 'thumb':
         scale = scales.scale('image', width=100, height=100)
     else:
         scale = scales.scale('image', width=500, height=500)
     item = {}
     if scale is not None:
         item['url'] = scale.url
         item['width'] = scale.width
         item['height'] = scale.height
     return item
예제 #10
0
 def testWebDavUpload(self):
     image = StringIO(getImage())
     image.filename = 'original.gif'
     base = '/'.join(self.folder.getPhysicalPath())
     response = self.publish(base + '/image', request_method='PUT',
         stdin=image, basic=self.getCredentials(),
         env={'CONTENT_TYPE': 'image/gif'})
     self.assertEqual(response.getStatus(), 201)
     self.failUnless('image' in self.folder.objectIds())
     obj = self.folder.image
     self.assertEqual(obj.getPortalTypeName(), 'Image')
     self.failUnless(IATBlobImage.providedBy(obj), 'no blob?')
     self.assertEqual(str(obj.getField('image').get(obj)), image.getvalue())
     # on initial (webdav) upload no filename is set by the client,
     # so it should end up being equal to the last path/url component...
     self.assertEqual(obj.getFilename(), 'image')
예제 #11
0
 def testWebDavUpload(self):
     image = StringIO(getImage())
     image.filename = 'original.gif'
     base = '/'.join(self.folder.getPhysicalPath())
     response = self.publish(base + '/image', request_method='PUT',
         stdin=image, basic=self.getCredentials(),
         env={'CONTENT_TYPE': 'image/gif'})
     self.assertEqual(response.getStatus(), 201)
     self.assertTrue('image' in self.folder.objectIds())
     obj = self.folder.image
     self.assertEqual(obj.getPortalTypeName(), 'Image')
     self.assertTrue(IATBlobImage.providedBy(obj), 'no blob?')
     self.assertEqual(str(obj.getField('image').get(obj)), image.getvalue())
     # on initial (webdav) upload no filename is set by the client,
     # so it should end up being equal to the last path/url component...
     self.assertEqual(obj.getFilename(), 'image')
    def index_html(self, REQUEST, RESPONSE):
        """ download the file inline or as an attachment """

        field = self.getPrimaryField()
        if IATBlobImage.providedBy(self):
            return field.index_html(self, REQUEST, RESPONSE)
        elif field.getContentType(self) in ATFile.inlineMimetypes:
            if self.activ_download:
                return field.index_html(self, REQUEST, RESPONSE)
            else:
                url = self.aq_parent.absolute_url()
                UtilMyvindula().setStatusMessage('error','Este arquivo não está autorizado para download')
                self.REQUEST.RESPONSE.redirect(url)
        else:
            if self.activ_download:
                return field.download(self, REQUEST, RESPONSE)
            else:
                url = self.aq_parent.absolute_url()
                UtilMyvindula().setStatusMessage('error','Este arquivo não está autorizado para download')
                self.REQUEST.RESPONSE.redirect(url)
예제 #13
0
 def testWebDavUpload(self):
     image = StringIO(getImage())
     image.filename = "original.gif"
     base = "/".join(self.folder.getPhysicalPath())
     response = self.publish(
         base + "/image",
         request_method="PUT",
         stdin=image,
         basic=self.getCredentials(),
         env={"CONTENT_TYPE": "image/gif"},
     )
     self.assertEqual(response.getStatus(), 201)
     self.assertTrue("image" in self.folder.objectIds())
     obj = self.folder.image
     self.assertEqual(obj.getPortalTypeName(), "Image")
     self.assertTrue(IATBlobImage.providedBy(obj), "no blob?")
     self.assertEqual(str(obj.getField("image").get(obj)), image.getvalue())
     # on initial (webdav) upload no filename is set by the client,
     # so it should end up being equal to the last path/url component...
     self.assertEqual(obj.getFilename(), "image")
예제 #14
0
 def set(self, instance, value, **kwargs):
     super(BlobImageField, self).set(instance, value, **kwargs)
     if not kwargs.get('_initializing_', False) and (IATBlobImage.providedBy(instance) or isinstance(instance, ATImage)):
         self.fixAutoId(instance)
예제 #15
0
 def canBackground(self):
     if has_dx and IImage.providedBy(self.context):
         return True
     return IATBlobImage.providedBy(self.context)
예제 #16
0
 def set(self, instance, value, **kwargs):
     super(BlobImageField, self).set(instance, value, **kwargs)
     if not kwargs.get('_initializing_',
                       False) and (IATBlobImage.providedBy(instance)
                                   or isinstance(instance, ATImage)):
         self.fixAutoId(instance)