[zopeorg-checkins] CVS: Products/ZopeOrg-NV/Extensions - NZOMigrate.py:1.11
Sidnei da Silva
sidnei at x3ng.com.br
Thu Feb 13 06:27:36 EST 2003
Update of /cvs-zopeorg/Products/ZopeOrg-NV/Extensions
In directory cvs.zope.org:/tmp/cvs-serv13059/Extensions
Modified Files:
NZOMigrate.py
Log Message:
now the migration is running smoothly
=== Products/ZopeOrg-NV/Extensions/NZOMigrate.py 1.10 => 1.11 ===
"BTree Folder": "CMF BTree Folder",
"ZWiki Page": "ZWiki Page",
"Broken Because Product is Gone": "BBR",
- "XML Document": "XML Document",
+ "XML Document": "Parsed XML",
"BackTalk Book": "CMF BackTalk Book",
"BackTalk Document": "CMF BackTalk Document"
}
@@ -59,6 +59,9 @@
try: changed = ob._p_changed
except: changed = 0
+ if ob is None:
+ return res
+
owner = ob.getOwner(info=1)
if owner:
udb, uid = owner
@@ -130,6 +133,38 @@
alist.sort()
return alist
+def migrateCaseStudies(src, dest):
+ dest.invokeFactory(id='index_html', title=dest.title, \
+ type_name='Case Study')
+ new_obj = getattr(dest, 'index_html', None)
+ if new_obj is None:
+ return
+ values = {}
+ for id in ['case_facts', 'problem', 'solution', 'summary', \
+ 'external_url', 'title']:
+ values[id] = ''
+ prop = getattr(src, id, None)
+ if prop is not None:
+ if callable(prop):
+ try:
+ values[id] = prop(src)
+ except:
+ try:
+ values['id'] = prop.raw()
+ except:
+ values['id'] = str(prop)
+ else:
+ values[id] = prop
+ new_obj.setSummary(values['summary'])
+ new_obj.setCaseFacts('text/html', values['case_facts'])
+ new_obj.setProblem('text/html', values['problem'])
+ new_obj.setSolution('text/html', values['solution'])
+ new_obj.setExternalURL(values['external_url'])
+ new_obj.setTitle(values['title'])
+ if hasattr(aq_base(src), 'logo'):
+ new_obj.setLogo('logo')
+ return new_obj
+
def migrateZSP(root, obj):
entries = obj[0].objectValues('ENTRY')
for entry in entries:
@@ -286,11 +321,18 @@
self.log('Ignoring Tracker for now.\n')
return None
- def XMLDocument2XMLDocument(self, obj, source, dest):
- id = obj.getId()
- if id == 'zsp.xml':
+ def XMLDocument2ParsedXML(self, obj, source, dest):
+ # Exception: ZSP will be converted to objects
+ url = obj.absolute_url(relative=1)
+ if url == 'Resources/ZSP/zsp.xml':
return migrateZSP(dest, obj)
- return None
+ try:
+ parsed = dest.manage_addProduct['ParsedXML']
+ parsed.manage_addParsedXML(dest, obj.getId(), obj.title, \
+ obj.toXML())
+ except:
+ return None
+ return getattr(aq_base(dest), obj.getId(), None)
def BackTalkBook2CMFBackTalkBook(self, obj, source, dest):
dest.invokeFactory(id=obj.getId(), type_name='BackTalk Book')
@@ -430,15 +472,21 @@
return howto
def Folder2CMFPortalFolder(self, obj, source, dest):
+
if dest is None or obj is None: return None
try:
- dest.invokeFactory(id=obj.getId(), type_name="Folder")
- dest.setTitle(obj.title)
- except: pass
+ dest.invokeFactory(id=obj.getId(), title=obj.title, \
+ type_name="Folder")
+ except:
+ pass
if not hasattr(aq_base(dest), obj.getId()):
return None
new = getattr(dest, obj.getId())
if hasattr(aq_base(new), 'objectValues'):
+ # Exception: CaseStudies content will be converted to 1 object.
+ url = obj.absolute_url(relative=1)
+ if url.find('Resources/CaseStudies/') == 0:
+ migrateCaseStudies(obj, new)
return new
return None
@@ -448,9 +496,11 @@
bt2 = dest.manage_addProduct['BTreeFolder2']
bt2.manage_addCMFBTreeFolder(obj.getId(), obj.title)
except: pass
- new = getattr(aq_base(dest), obj.getId(), None)
+ if not hasattr(aq_base(dest), obj.getId()):
+ return None
+ new = getattr(dest, obj.getId(), None)
if new is not None and hasattr(aq_base(new), 'objectValues'):
- return new.__of__(dest)
+ return new
return None
def WikiMethodsCleanup(self, obj, ignore_path):
@@ -487,21 +537,29 @@
elif hasattr(obj, 'objectIds'):
obj_ids = obj.objectIds()
+ obj_path = obj.getPhysicalPath()
if obj_ids:
- obj_path = obj.getPhysicalPath()
for dm in ('local_nav', 'page_title',
'standard_html_footer', 'standard_html_header',
'custom_html_header',
'custom_html_footer', 'local_exit'):
if dm in obj_ids:
ignore_path.append(obj_path + (dm,))
+ # Exception: when migrating case studies we dont want to bring
+ # the dtml methods to the new site. Only images and files.
+ url = obj.absolute_url(relative=1)
+ if url.find('Resources/CaseStudies/') == 0:
+ for o in obj.objectValues():
+ if o.meta_type not in ['Image', 'File']:
+ ignore_path.append(obj_path + (o.getId(),))
return ignore_path
def fixOwnership(self, orig, new):
+ if orig is None or new is None:
+ return None
owner = orig.getOwner()
if owner is not None:
try:
- # Retain ownership.
new.changeOwnership(owner)
except: pass
return new
@@ -567,7 +625,10 @@
try:
new_obj = mm(obj, source, dest)
except: new_obj = None
-
+ if obj is None:
+ self.log('Something wicked happened to %s ' % oid +\
+ 'on %s.\n' % '/'.join(path))
+ continue
if new_obj is None or not new_obj:
self.log('Result of conversion of' +\
' %s: Failed.\n' % obj.absolute_url(relative=1))
More information about the zopeorg-checkins
mailing list