accounts2 PgToLDAP.py,1.1,1.2

Tom Lynema (lyz) fedora-extras-commits at redhat.com
Thu Nov 30 03:02:01 UTC 2006


Author: lyz

Update of /cvs/fedora/accounts2
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv12219

Modified Files:
	PgToLDAP.py 
Log Message:
Mathes new schema now



Index: PgToLDAP.py
===================================================================
RCS file: /cvs/fedora/accounts2/PgToLDAP.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PgToLDAP.py	22 Nov 2006 00:25:45 -0000	1.1
+++ PgToLDAP.py	30 Nov 2006 03:02:00 -0000	1.2
@@ -22,7 +22,7 @@
 import ldap, ldif, pgdb, ldap.modlist
 from optparse import OptionParser
 
-version = "0.11"
+version = "0.111"
 
 def parseArgs():
     parser = OptionParser(version="%prog " + version)
@@ -189,13 +189,15 @@
         ldifWriter = openLdifFile(options.outFile)
 
     # Copy all users from db to ldap/ldif
+    # this will to queries and mappings
+    
     try:
         if verbose:
             print "Selecting all users from Postgres Database"
         userCursor = dbConn.cursor()
         userCursor.execute ("SELECT * FROM person")
 
-	#id, username, email, human_name, gpg_keyid, ssh_key, password, comments, postal_address, telephone, facsimile, affiliation, creation, approval_status, internal_comments, wiki_prefs, ircnick
+	#id, username, email 2, human_name 3, gpg_keyid 4, ssh_key 5, password 6, comments 7,  postal_address 8, telephone 9, facsimile 10, affiliation 11, creation 12, approval_status 13, internal_comments 14, wiki_prefs 15, ircnick 16
     except:
         print "Error selecting users from db"
         raise
@@ -211,10 +213,9 @@
         else:
             print "Adding ldif info for " + user[3] + "."
 
-	    #userLdif = {"objectClass" : ["fedoraPerson"] , "displayName":  [user[1],"Tom"] , "mail": [user[2]] , "givenName" : [user[3]] , "userCertificate" : [user[4]] , "userPassword" : [user[6]] , "o":["fedoraproject"] , "postalAddress" : [user[8]] , "telephoneNumber" : [user[9]] , "fax" : [user [10]]}
-	    userLdif = [["objectClass",["fedoraPerson"]] , [ "displayName",[ user[1] ] ]] 
+	    userLdif = [["objectClass",["fedoraPerson","organizationalUnit"]] , [ "displayName",[ user[1] ] ] ] 
 	    userLdif.append(["mail",[str(user[2])]])
-	    userLdif.append(["bugzillaMail",[str(user[2])]])
+	    userLdif.append(["fedoraPersonBugzillaMail",[str(user[2])]])
 	    userLdif.append(["cn",[str(user[3])]])
 	    userLdif.append(["givenName",[str(user[3])]])
 	    userLdif.append(["userCertificate",[str(user[4])]])
@@ -223,11 +224,12 @@
 	    userLdif.append(["postalAddress",[str(user[8])]])
 	    userLdif.append(["telephoneNumber",[str(user[9])]])
 	    userLdif.append(["fax",[str(user[10])]])
-	    userLdif.append(["o",[str(user[11])]]) # affiliation is set to the o
-	    userLdif.append(["personCreationDate",[str(user[12])]])
-	    userLdif.append(["approvalStatus",[str(user[13])]])
+	    userLdif.append(["o",[str(user[11])]]) # affiliation is set to the o -- another stretch ??
+	    userLdif.append(["fedoraPersonCreationDate",[str(user[12])]])
+	    userLdif.append(["fedoraPersonApprovalStatus",[str(user[13])]])
 	    userLdif.append(["description",[str(user[14])]]) #this one may be a streach -- original field was internal comments
-	    userLdif.append(["ircNick",[str(user[16])]])
+	    userLdif.append(["fedoraPersonIrcNick",[str(user[16])]])
+	    userLdif.append(["ou",["roles"]])
 	   
 	    print userLdif
 	    #for userKey in userLdif.keys():
@@ -241,20 +243,23 @@
 	    ldifWriter.unparse("cn=" + str(user[3]) +",ou=People,dc=fedoraproject,dc=org" , userLdif )
 	    #ldifWriter.unparse("dc=fedoraproject,dc=org, cn=" + user[3] , [ ['ano',['domini']],['uances',['od']] ])
 
-	    time.sleep (2)
+	    #time.sleep (2)
 	
         		
             #ldapConn.add_s(dn, entry)
 
     userCursor.close()
-
+    
     # Select all groups from the DB
+    
     try:
         if verbose:
             print "Selecting all groups from Postgres Database"
         groupCursor = dbConn.cursor()
         groupCursor.execute ("SELECT * FROM project_group")
-	#id, name, owner_id, group_type, needs_sponsor, user_can_remove, prerequisite_id, joinmsg
+
+
+
     except:
         print "Error selecting groups from db"
         raise
@@ -271,11 +276,38 @@
             #ldapConn.add_s(dn, entry)
 	    
             print "Adding group info for " + group[1] + "."
+            #id0, name1, owner_id2, group_type3, needs_sponsor4, user_can_remove5, prerequisite_id6, joinmsg7
 
+            uidLookupCursor = dbConn.cursor()
+            uidLookupCursor.execute ("SELECT username FROM person where id =" + str(group[2]) )
+            owner = uidLookupCursor.fetchone()
+            if str(group[6]) != "None" :
+                uidLookupCursor.execute ("SELECT name FROM project_group where id =" + str(group[6]) )
+	        prereq = uidLookupCursor.fetchone()
+                print prereq
+	    else:
+		prereq=["None"]
+	    print owner
+
+
+            #id0, name1, owner_id2, group_type3, needs_sponsor4, user_can_remove5, prerequisite_id6, joinmsg7
+	    userLdif = [["objectClass",["fedoraGroup"]] ] 
+	    userLdif.append(["cn",[str(group[1])]])
+	    userLdif.append(["fedoraGroupOwner",owner]) # need to get a cn for this not just the id
+	    #userLdif.append(["groupOwner",[str(group[2])]]) # need to get a cn for this not just the id
+	    userLdif.append(["fedoraGroupType",[str(group[3])]])
+	    userLdif.append(["fedoraGroupNeedsSponsor",[str(group[4])]]) #need to convert to bool
+	    userLdif.append(["fedoraGroupUserCanRemove",[str(group[5])]])
+	    #userLdif.append(["groupPrerequisite",[str(group[6])]])
+	    #userLdif.append(["groupPrerequisite",prereq]) not currently in the schema
+	    userLdif.append(["fedoraGroupJoinMsg",[str(group[7])]])
+	    ldifWriter.unparse("cn=" + str(group[1]) +",ou=fedoraGroups,dc=fedoraproject,dc=org" , userLdif )
 
 
-    userCursor.close()        
+    groupCursor.close()        
+    
     # Select all roles from the DB
+    
     try:
         if verbose:
             print "Selecting all roles from Postgres Database"
@@ -296,8 +328,44 @@
             ldifWriter.unparse(dn, entry)
         else:
             #ldapConn.add_s(dn, entry)
-            print "Adding role info for " + role[4] + "for user" + str(role[1]) + "." 
-    userCursor.close()
+            #person_id0, group_project_id1, role_type2, role_domain3, role_status4, internal_comments5, sponsor_id6, creation7, approval8
+
+
+	    uidRoleCursor = dbConn.cursor()
+            uidRoleCursor.execute ("SELECT username FROM person where id =" + str(role[0]) )
+            username = uidRoleCursor.fetchone()
+            uidRoleCursor.execute ("SELECT name FROM project_group where id =" + str(role[1]) )
+            group = uidRoleCursor.fetchone()
+            if str(role[6]) != "None" :
+                uidRoleCursor.execute ("SELECT username FROM person where id =" + str(role[6]) )
+                sponsor = uidRoleCursor.fetchone()
+	    else:
+		sponsor = ["None"]
+
+            print "Adding " + str(role[4]) + " role info for " + group[0] + " for user " + username[0] + "."
+            #if str(group[6]) != "None" :
+            #    uidLookupCursor.execute ("SELECT name FROM project_group where id =" + str(group[6]) )
+	    #    prereq = uidLookupCursor.fetchone()
+            #    print prereq
+	    #else:
+	    #	prereq=["None"]
+	    #print owner 
+
+  #person_id0, group_project_id1, role_type2, role_domain3, role_status4, internal_comments5, sponsor_id6, creation7, approval8
+
+            roleLdif = [["objectClass",["fedoraRole"]] ] 
+	    #roleLdif.append(["cn",[str(role[1]),str(role[2])]]) #Fix me
+	    roleLdif.append(["fedoraRoleType",[str(role[2])]])
+	    roleLdif.append(["fedoraRoleDomain",[str(role[3])]])
+	    roleLdif.append(["fedoraRoleStatus",[str(role[4])]])
+	    roleLdif.append(["fedoraRoleSponsor",sponsor])
+	    roleLdif.append(["fedoraRoleCreationDate",[str(role[7])]])
+	    roleLdif.append(["fedoraRoleApprovalDate",[str(role[8])]])
+
+	    ldifWriter.unparse("cn=" + group[0] + ",cn=" + str(role[2]) +",cn=" + username[0] + " ou=Roles, ou=fedoraGroups,dc=fedoraproject,dc=org" , roleLdif )
+
+    roleCursor.close()
+      
     sys.exit(1)    
 if __name__ == "__main__":
     main()




More information about the fedora-extras-commits mailing list