35 lines
1.2 KiB
Python
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')))
|