Skip to content Skip to sidebar Skip to footer

Save File To Plone Site Using Python

I am generating an xml file in python, I need to save it to my plone site but am unsure how to. def generate_sitemap_index_file(self, sites): ''' Generate a google sitemap inde

Solution 1:

You can create a content object called File in Plone. See: http://docs.plone.org/external/plone.api/docs/content.html#create-content

Here an untestet example to give you a guess:

# -*- coding: utf-8 -*-from zope.site.hooks import setSite
from plone.namedfile.file import NamedBlobFile
from plone import api
import transaction

portal = app["Plone"]  # Plone is your Plone site in Zope root
setSite(portal)

container = portal
# create the file object:
file_obj = api.content.create(                          
    container, 'File', 
    id='sitemap_index.xml',                             
    title='sitemap_index.xml', 
    safe_id=True
)               

# attache the file to the file object:
file_obj.file = NamedBlobFile(                          
    data=your_file_handle,                                  
    contentType='application/xml',                   
    filename='sitemap_index.xml',            
)  
transaction.commit()

Make sure you have added plone.api in your buildout.cfg eggs part! This script you can run from commandline:

./bin/instance run your_script.py

But as a side note, you can let Plone build you a sitemap_index.xml.gz, just enable it in site_setup > main.

Solution 2:

I'm unsure you really need to see this file as a Plone content. Probably you simply need to expose the file when calling http://something/sitemap_index.xml

You can simply add it as a Zope File from ZMI (in this way the file will be available, but will not be a CMS content) or publish it using Apache/NGIX in front of Plone.

Post a Comment for "Save File To Plone Site Using Python"