Skip to content

Instantly share code, notes, and snippets.

@l34marr
Created October 7, 2014 15:00
Show Gist options
  • Save l34marr/39350e9330465ac689ed to your computer and use it in GitHub Desktop.
Save l34marr/39350e9330465ac689ed to your computer and use it in GitHub Desktop.
script for creating plone.app.multilingual items from csv file
from Testing import makerequest
root = makerequest.makerequest(app)
site = root.mysite
admin = root.acl_users.getUserById('admin')
admin = admin.__of__(site.acl_users)
from AccessControl.SecurityManagement import newSecurityManager
newSecurityManager(None, admin)
from zope.site.hooks import setHooks
from zope.site.hooks import setSite
setHooks()
setSite(site)
site.setupCurrentSkin(site.REQUEST)
from plone.dexterity.utils import createContentInContainer
from plone.app.multilingual.interfaces import ITranslationManager
from plone.dexterity.utils import iterSchemata, iterSchemataForType
#from plone.rfc822 import constructMessageFromSchemata
#from plone.rfc822 import initializeObjectFromSchemata
import csv
def unicode_csv_reader(utf8_data, dialect=csv.excel, **kwargs):
csv_reader = csv.reader(utf8_data, dialect=dialect, **kwargs)
for row in csv_reader:
yield [unicode(cell, 'utf-8') for cell in row]
with open('grant.csv', 'rb') as f:
dialect = csv.Sniffer().sniff(f.read(), delimiters="\t")
f.seek(0)
reader = unicode_csv_reader(f, dialect)
for row in reader:
folder = site.zh.program.recipient[str(row[1])]
if row[11] == '': row[11] = row[12]
if row[2] == '': row[2] = row[3]
obj = createContentInContainer(folder, 'grant', id=str(row[0]), title=row[11], year=row[1], director=row[2], description=row[4], department=row[5], region=row[6], currency=row[9], budget=row[8], status=row[10], category=row[7])
manager = ITranslationManager(obj)
manager.add_translation('en')
translation = manager.get_translation('en')
translation.id = str(row[0])
translation.title = row[12]
translation.year = row[1]
translation.director = row[3]
translation.description = row[4]
translation.department = row[5]
translation.region = row[6]
translation.currency = row[9]
translation.budget = row[8]
translation.status = row[10]
translation.category = row[7]
#data = constructMessageFromSchemata(obj, iterSchemata(obj))
#data['id'] = str(row[0])
#data['title'] = row[12]
#data['director'] = row[3]
#del data['language']
#initializeObjectFromSchemata(translation, iterSchemata(obj), data)
site.zh.program.recipient[str(row[1])][str(row[0])].reindexObject()
#print row[0] + " zh done."
translation.reindexObject()
#print row[0] + " en done."
import transaction
transaction.commit()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment