[zopeorg-checkins] CVS: Products/ZopeOrg-NV/Extensions - NZOMigrate.py:1.9

Sidnei da Silva sidnei at x3ng.com.br
Mon Jan 27 13:25:04 EST 2003


Update of /cvs-zopeorg/Products/ZopeOrg-NV/Extensions
In directory cvs.zope.org:/tmp/cvs-serv12380/Extensions

Modified Files:
	NZOMigrate.py 
Log Message:
Improving ZSP. Adding Migration. Small CSS Cleanup

=== Products/ZopeOrg-NV/Extensions/NZOMigrate.py 1.8 => 1.9 ===
     alist = dict.keys()
     alist.sort()
     return alist
-            
+
+def migrateZSP(root, obj):
+    entries = obj[0].objectValues('ENTRY')
+    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')
+        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', ''))
+        new_obj.setLocation(getattr(entry, 'LOCATION', ''))
+        new_obj.setLogo(logo_id)
+        text = [s.INFO for s in entry.objectValues('SERVICE')]
+        text = '\n'.join(text)
+        new_obj.setServiceInfo(text=text, text_format='plain')
+        new_contacts = []
+        contacts = entry.objectValues('CONTACT')
+        for ct in contacts:
+            contact = {}
+            contact['name'] = getattr(ct, 'NAME', '')
+            contact['email'] = getattr(ct, 'EMAIL', '')
+            contact['info'] = getattr(ct, 'INFO', '')            
+            new_contacts.append(contact.copy())
+        new_obj.setContactInfo(new_contacts)
+        new_phones = []
+        phones = entry.objectValues('PHONE')
+        for p in phones:
+            phone = {}
+            phone['phone'] = getattr(p, 'NUMBER', '')
+            phone['info'] = getattr(p, 'INFO', '')            
+            new_phones.append(phone.copy())
+        new_obj.setPhoneInfo(new_phones)
+    return new_obj
+    
 class Transmutator:
 
     def __init__(self, source, dest, ignore_path, type_map, level=0):
@@ -249,7 +287,9 @@
         return None
 
     def XMLDocument2XMLDocument(self, obj, source, dest):
-        self.log('Ignoring XML Document for now.\n')
+        id = obj.getId()
+        if id == 'zsp.xml':
+            return migrateZSP(dest, obj)
         return None
 
     def BackTalkBook2CMFBackTalkBook(self, obj, source, dest):
@@ -395,9 +435,11 @@
             dest.invokeFactory(id=obj.getId(), type_name="Folder")
             dest.setTitle(obj.title)
         except: pass
-        new = getattr(aq_base(dest), obj.getId(), None)
-        if new is not None and hasattr(aq_base(new), 'objectValues'):
-            return new.__of__(dest)
+        if not hasattr(aq_base(dest), obj.getId()):
+            return None
+        new = getattr(dest, obj.getId())
+        if hasattr(aq_base(new), 'objectValues'):
+            return new
         return None
 
     def BTreeFolder2CMFBTreeFolder(self, obj, source, dest):
@@ -507,7 +549,11 @@
                 oids.remove('acl_users')
                 oids.insert(0, 'acl_users')
             for oid in oids:
-                obj = getattr(source, oid)
+                obj = getattr(source, oid, None)
+                if obj is None:
+                    self.log('Oid %s in objectIds but object ' % oid +\
+                              ' not found in %s.\n' % '/'.join(path))
+                    continue
                 try:
                     # We may want to catch POSKeyErrors early,
                     # so lets prod the object and see what happens
@@ -531,7 +577,7 @@
                     res = []
                     res = _cleanupOwnership(new_obj, res, 0)
                     if res != []:
-                        self.log('\n'.join(res))
+                        self.log('\n'.join(res) + '\n')
                     new_obj = self.fixModificationDate(obj, new_obj)
 
                     ct = getToolByName(new_obj, 'portal_catalog', None)





More information about the zopeorg-checkins mailing list