Example #1
0
def store_resource(path, data):
    """
    Stores the data of the resource in the
    file system
    """
    site = getSite()
    location = site.restrictedTraverse(str('/++%s++%s' % (TYPE, THEME))).directory
    
    if '/' in path:
        path, filename = path.rsplit('/', 1)
        dir_path = os.path.join(location, path.strip('/'))
        if not os.path.exists(dir_path):
            try:
                os.makedirs(os.path.normpath(dir_path))
            except OSError:
                log.error("Unable to create directory: %s" % path)
                return False
    else:
        filename = path
        dir_path = location
    
    file_path = os.path.join(dir_path, filename)
    fs_file = open(file_path, "w")
    try:
        fs_file.write(data)
    finally:
        fs_file.close()
Example #2
0
def image_to_grayscale(image_data, path):
    """
    Converts image data to grayscale using PIL library 
    """
    try:
        imagestring = StringIO(image_data)
        image_file = Image.open(imagestring)
        converted = image_file.convert('RGBA')
        converted = converted.convert('LA')
        res = StringIO()
        converted.save(res, format='PNG')
        return res.getvalue()
    except IOError, err:
        log.error('Error while transforming image: %s : %s' % (path, err))
        return image_data
Example #3
0
def render_object_html(obj, request):
    """
    Returns rendered html for given content object
    """
    published = request.get('PUBLISHED')
    if isinstance(published, (BrowserView, FSPageTemplate, PythonScript)):
        if getCurrentTheme():
            transform = ThemeTransform(published, request)
            try:
                themed = transform.transformUnicode(published(), 'utf-8')
                tile_transform = IncludeTiles(published, request)
                tiled = tile_transform.transformIterable(themed, 'utf-8')
                if tiled:
                    return tiled.serialize()
            except Exception, error:
                log.error("Problem with transforming object %s: %s" % (published, error))
                return published()
        else:
            try:
                return published() or ''
            except NotFound:
                log.error("Resource '%s' not found" % repr(obj))
                return ''
Example #4
0
def render_object_html(obj, request):
    """
    Returns rendered html for given content object
    """
    published = request.get('PUBLISHED')
    if isinstance(published, (BrowserView, FSPageTemplate, PythonScript)):
        try:
            return published() or ''
        except NotFound:
            log.error("Resource '%s' not found" % repr(obj))
            return ''
    
    def_page_id = obj.getDefaultPage()
    if def_page_id:
        def_page = obj[def_page_id]
        return render_object_html(def_page, request)

    view_name = obj.getLayout()
    view = queryMultiAdapter((obj, request), name=view_name)
    if view:
        try:
            return view.context() or ''
        except ContentProviderLookupError:
            pass

    view = obj.restrictedTraverse(view_name, None)
    if view:
        try:
            return view.context() or ''
        except AttributeError:
            return view() or ''

    try:
        return obj()
    except AttributeError:
        pass
    return ''