[zopeorg-checkins] CVS: Products/ZopeOrg-NV/Extensions - NZOMigrate.py:1.15
Sidnei da Silva
sidnei at x3ng.com.br
Thu Feb 13 20:09:50 EST 2003
Update of /cvs-zopeorg/Products/ZopeOrg-NV/Extensions
In directory cvs.zope.org:/tmp/cvs-serv30852/Extensions
Modified Files:
NZOMigrate.py
Log Message:
Late night commit. Just to make sure we dont have to redo everything if the server explodes. Now, migration is running even more smoothtly.
=== Products/ZopeOrg-NV/Extensions/NZOMigrate.py 1.14 => 1.15 ===
new_obj.setTitle(values['title'])
if hasattr(aq_base(src), 'logo'):
new_obj.setLogo('logo')
- return new_obj
+ return (new_obj, dest)
def migrateZSP(root, obj):
entries = obj[0].objectValues('ENTRY')
+ result = []
for entry in entries:
id = getattr(entry, 'LOGO', entry.getId())
if hasattr(aq_base(root), id):
logo_id = '%s_logo' % id
root.manage_renameObject(id=id, new_id=logo_id)
- root.invokeFactory(id=id, type_name='Zope Service Provider')
+ try:
+ root.invokeFactory(id=id, type_name='Zope Service Provider')
+ except:
+ pass
+ if not hasattr(aq_base(root), id):
+ result.append(None)
+ continue
new_obj = getattr(root, id, None)
- if new_obj is None:
- return
new_obj.setCompany(getattr(entry, 'COMPANY', ''))
new_obj.setSummary('')
new_obj.setExternalURL(getattr(entry, 'URL', ''))
@@ -204,7 +209,8 @@
phone['info'] = getattr(p, 'INFO', '')
new_phones.append(phone.copy())
new_obj.setPhoneInfo(new_phones)
- return new_obj
+ result.append(new_obj)
+ return tuple(result)
class Transmutator:
@@ -239,8 +245,8 @@
nmt = normalizeMetaType
mmt = '%s2%s' % (nmt(mt), nmt(dt))
obj_url = obj.absolute_url(relative=1)
- self.log('Will use %s to migrate %s (%s)\n' % \
- (mmt, obj_url, mt))
+ self.log('%s (%s) -> %s \n' % \
+ (obj_url, mt, mmt))
return getattr(self, mmt, self.defaultMigrationMethod)
def defaultMigrationMethod(self, obj, source, dest):
@@ -248,10 +254,12 @@
copy = obj._getCopy(dest)
dest._setObject(obj.getId(), copy)
except:
- self.log('Could not copy %s (%s). Possibly duplicate id.\n'\
+ self.log('%s (%s) failed. Possibly duplicate id.\n'\
% (obj.getId(), obj.absolute_url(relative=1)))
return None
- return getattr(dest, obj.getId())
+ if not hasattr(aq_base(dest), obj.getId()):
+ return None
+ return getattr(dest, obj.getId(), None)
def BrokenBecauseProductisGone2BBR(self, obj, source, dest):
self.log('Ignoring Broken Beyond Repair.\n')
@@ -274,7 +282,12 @@
return None
def SoftwareProduct2CMFSoftwarePackage(self, obj, source, dest):
- dest.invokeFactory(id=obj.getId(), type_name='Software Package')
+ try:
+ dest.invokeFactory(id=obj.getId(), type_name='Software Package')
+ except:
+ pass
+ if not hasattr(aq_base(dest), obj.getId()):
+ return None
f = getattr(dest, obj.getId())
title = obj.title or ''
description = obj.description or ''
@@ -288,14 +301,24 @@
return f
def ProductRelease2CMFSoftwareRelease(self, obj, source, dest):
- dest.invokeFactory(id=obj.getId(), type_name='Software Release')
- f = getattr(dest, obj.getId())
+ version = obj.version or 'default'
+ try:
+ dest.invokeFactory(id=version, type_name='Software Release')
+ except:
+ pass
+ if not hasattr(aq_base(dest), version):
+ return None
+ f = getattr(dest, version)
title = obj.title or ''
- version = obj.version
f.setTitle(title)
f.setVersion(version)
- f.invokeFactory(id=obj.getId(), type_name='Software Release File')
+ try:
+ f.invokeFactory(id=obj.getId(), type_name='Software Release File')
+ except:
+ pass
+ if not hasattr(aq_base(f), obj.getId()):
+ return (f, None)
r = getattr(f, obj.getId())
platform = obj.platform
maturity = obj.status
@@ -310,6 +333,7 @@
'application/octet-stream')
r.update_data(data, content_type, size)
+ r._calculateMD5()
r.setPlatform(platform)
f.setMaturity(maturity)
f.setInfoURL(info_url)
@@ -317,8 +341,8 @@
f.setChangesURL(changes_url)
f.setInstallationURL(installation_url)
f.setLicense(license)
-
- return f
+
+ return (f, r)
def Tracker2CMFCollector(self, obj, source, dest):
self.log('Ignoring Tracker for now.\n')
@@ -334,12 +358,19 @@
parsed.manage_addParsedXML(obj.getId(), obj.title, \
obj.toXML())
except:
+ pass
+ if not hasattr(aq_base(dest), obj.getId()):
return None
- return getattr(aq_base(dest), obj.getId(), None)
+ return getattr(dest, obj.getId(), None)
def BackTalkBook2CMFBackTalkBook(self, obj, source, dest):
- dest.invokeFactory(id=obj.getId(), type_name='BackTalk Book')
- book = getattr(dest, obj.getId())
+ try:
+ dest.invokeFactory(id=obj.getId(), type_name='BackTalk Book')
+ except:
+ pass
+ if not hasattr(aq_base(dest), obj.getId()):
+ return None
+ book = getattr(dest, obj.getId(), None)
for prop in obj.propertyIds():
if prop in ['header', 'summary']:
continue
@@ -353,7 +384,12 @@
return book
def BackTalkDocument2CMFBackTalkDocument(self, obj, source, dest):
- dest.invokeFactory(id=obj.getId(), type_name='BackTalk Document')
+ try:
+ dest.invokeFactory(id=obj.getId(), type_name='BackTalk Document')
+ except:
+ pass
+ if not hasattr(aq_base(dest), obj.getId()):
+ return None
doc = getattr(dest, obj.getId())
for prop in obj.propertyIds():
if prop in ['summary']:
@@ -367,8 +403,13 @@
return doc
def File2CMFDefaultFile(self, obj, source, dest):
- dest.invokeFactory(id=obj.getId(), type_name='File')
- f = getattr(dest, obj.getId())
+ try:
+ dest.invokeFactory(id=obj.getId(), type_name='File')
+ except:
+ pass
+ if not hasattr(aq_base(dest), obj.getId()):
+ return None
+ f = getattr(dest, obj.getId(), None)
title = obj.title or ''
content_type = obj.content_type
data = str(obj.data)
@@ -379,8 +420,13 @@
return f
def Image2CMFDefaultImage(self, obj, source, dest):
- dest.invokeFactory(id=obj.getId(), type_name='Image')
- f = getattr(dest, obj.getId())
+ try:
+ dest.invokeFactory(id=obj.getId(), type_name='Image')
+ except:
+ pass
+ if not hasattr(aq_base(dest), obj.getId()):
+ return None
+ f = getattr(dest, obj.getId(), None)
title = obj.title or ''
content_type = obj.content_type
data = str(obj.data)
@@ -391,8 +437,13 @@
return f
def NewsItem2CMFDefaultNewsItem(self, obj, source, dest):
- dest.invokeFactory(id=obj.getId(), type_name='News Item')
- news = getattr(dest, obj.getId())
+ try:
+ dest.invokeFactory(id=obj.getId(), type_name='News Item')
+ except:
+ pass
+ if not hasattr(aq_base(dest), obj.getId()):
+ return None
+ news = getattr(dest, obj.getId(), None)
title = obj.title or ''
text = obj.text
format = obj.format
@@ -406,8 +457,13 @@
return news
def Link2CMFDefaultLink(self, obj, source, dest):
- dest.invokeFactory(id=obj.getId(), type_name='Link')
- link = getattr(dest, obj.getId())
+ try:
+ dest.invokeFactory(id=obj.getId(), type_name='Link')
+ except:
+ pass
+ if not hasattr(aq_base(dest), obj.getId()):
+ return None
+ link = getattr(dest, obj.getId(), None)
title = obj.title or ''
description = (type(obj.description) == type('')) and \
obj.description or ''
@@ -425,8 +481,13 @@
return link
def FormattedDocument2CMFDefaultDocument(self, obj, source, dest):
- dest.invokeFactory(id=obj.getId(), type_name='Document')
- doc = getattr(dest, obj.getId())
+ try:
+ dest.invokeFactory(id=obj.getId(), type_name='Document')
+ except:
+ pass
+ if not hasattr(aq_base(dest), obj.getId()):
+ return None
+ doc = getattr(dest, obj.getId(), None)
title = obj.title or ''
description = (type(obj.description) == type('')) and \
obj.description or ''
@@ -445,8 +506,13 @@
HTMLDocument2CMFDefaultDocument = FormattedDocument2CMFDefaultDocument
def Tip2ZopeOrgTip(self, obj, source, dest):
- dest.invokeFactory(id=obj.getId(), type_name='Tip')
- tip = getattr(dest, obj.getId())
+ try:
+ dest.invokeFactory(id=obj.getId(), type_name='Tip')
+ except:
+ pass
+ if not hasattr(aq_base(dest), obj.getId()):
+ return None
+ tip = getattr(dest, obj.getId(), None)
title = obj.tip or ''
text = obj.details or ''
format = 'html'
@@ -460,8 +526,13 @@
return tip
def HowTo2ZopeOrgHowTo(self, obj, source, dest):
- dest.invokeFactory(id=obj.getId(), type_name='HowTo')
- howto = getattr(dest, obj.getId())
+ try:
+ dest.invokeFactory(id=obj.getId(), type_name='HowTo')
+ except:
+ pass
+ if not hasattr(aq_base(dest), obj.getId()):
+ return None
+ howto = getattr(dest, obj.getId(), None)
title = obj.title or ''
text = obj.content
format = obj.format
@@ -475,7 +546,6 @@
return howto
def Folder2CMFPortalFolder(self, obj, source, dest):
-
if dest is None or obj is None: return None
try:
dest.invokeFactory(id=obj.getId(), title=obj.title, \
@@ -484,12 +554,12 @@
pass
if not hasattr(aq_base(dest), obj.getId()):
return None
- new = getattr(dest, obj.getId())
+ new = getattr(dest, obj.getId(), None)
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 migrateCaseStudies(obj, new)
return new
return None
@@ -588,14 +658,28 @@
value = p['select_variable']
if not hasattr(new, value):
setattr(new, value, [])
- else: value = orig.getProperty(prop)
+ else:
+ try:
+ value = orig.getProperty(prop)
+ except:
+ value = ''
try: new._setProperty(prop, value, type)
except Exception, msg:
self.log('Could not set property ' + \
'%s of type %s to %s.\n %s\n' % \
(prop, type, value, msg))
else:
- new._setPropValue(prop, orig.getProperty(prop))
+ try:
+ value = orig.getProperty(prop)
+ except:
+ value = ''
+ try:
+ new._setPropValue(prop, value)
+ except Exception, msg:
+ self.log('Could not set property ' + \
+ '%s to %s.\n %s\n' % \
+ (prop, value, msg))
+
return new
def run(self):
@@ -623,21 +707,24 @@
obj_url = obj.absolute_url(relative=1)
except POSKeyError:
# Skip this object
- self.log('POSKeyError while trying to access' +\
+ self.log('POSKeyError on' +\
' %s.\n' % '/'.join(path + (oid, )))
continue
mm = self.getMigrationMethod(obj)
try:
- new_obj = mm(obj, source, dest)
- except: new_obj = None
+ new_objs = mm(obj, source, dest)
+ except: new_objs = 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:
+ if new_objs is None:
self.log('Result of conversion of' +\
' %s: Failed.\n' % obj.absolute_url(relative=1))
- else:
+ continue
+ if type(new_objs) != type(()):
+ new_objs = (new_objs, )
+ for new_obj in new_objs:
new_obj = self.fixOwnership(obj, new_obj)
new_obj = self.copyProperties(obj, new_obj)
res = []
@@ -650,19 +737,18 @@
if ct is not None:
try: ct.reindexObject(obj)
except: pass
- self.log('Result of conversion of' +\
- ' %s: Success.\n' % obj.absolute_url(relative=1))
+ self.log('%s: Success.\n' % obj.absolute_url(relative=1))
- if hasattr(obj, 'objectIds') and new_obj is not None:
- ignore = self.WikiMethodsCleanup(obj, ignore)
- ignore = self.DefaultDTMLCleanup(obj, ignore)
- self.log(Transmutator(obj, new_obj, \
+ if hasattr(obj, 'objectIds') and new_obj is not None:
+ ignore = self.WikiMethodsCleanup(obj, ignore)
+ ignore = self.DefaultDTMLCleanup(obj, ignore)
+ self.log(Transmutator(obj, new_obj, \
ignore, self._type_map, \
self._level + 1).run(), dup=0)
- if self._level <= 2:
- get_transaction().commit()
- else:
- get_transaction().commit(1)
+ if self._level <= 2:
+ get_transaction().commit()
+ else:
+ get_transaction().commit(1)
return 'Ok.\n'
More information about the zopeorg-checkins
mailing list