This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
themis.libellioimport/themis/libellioimport/migration.py

35 lines
1.2 KiB
Python

import cPickle
import os
import datetime
from Products.Five.browser import BrowserView
from Products.CMFCore.utils import getToolByName
from plone.dexterity.factory import DexterityFactory
from plone.dexterity.utils import addContentToContainer
from plone.namedfile.file import NamedFile
class Migrate(BrowserView):
def __call__(self):
filename = self.request.form.get('filename')
if not filename:
print 'Exiting, missing filename'
return
portal = getToolByName(self.context, 'portal_url').getPortalObject()
workflowTool = getToolByName(self.context, 'portal_workflow')
fd = file(os.path.join('/tmp/', filename))
doc = cPickle.load(fd)
typename = {
'PFBCurrentEventsQuestion': 'testplop'
}.get(doc.get('meta_type'))
if not typename:
print 'Unknown type:', doc.get('meta_type')
return
factory = DexterityFactory(portal_type=typename)
ob = factory(id=doc.get('id'), title=doc.get('title'))
addContentToContainer(portal.documents, ob)
ob.date = datetime.datetime.strptime(doc.get('deliverydate'), '%Y-%m-%d').date()
ob.file = NamedFile(fd.read(), filename=unicode(doc.get('filename')))