Author: farra
Date: Mon Aug 31 17:00:32 2009
New Revision: 809660

URL: http://svn.apache.org/viewvc?rev=809660&view=rev
Log:
adding a task to conferences extension to merge duplicate user accounts

Modified:
    labs/consite/trunk/conferences/README
    labs/consite/trunk/conferences/conferences_extension.rb
    labs/consite/trunk/conferences/lib/tasks/conferences_extension_tasks.rake

Modified: labs/consite/trunk/conferences/README
URL: 
http://svn.apache.org/viewvc/labs/consite/trunk/conferences/README?rev=809660&r1=809659&r2=809660&view=diff
==============================================================================
--- labs/consite/trunk/conferences/README (original)
+++ labs/consite/trunk/conferences/README Mon Aug 31 17:00:32 2009
@@ -45,6 +45,10 @@
  TODO
 ------
 
+- the 'conference_roles' view doesn't seem to be created properly in
+  some MySQL installs.  You may need to create it manually.  See
+  migration #34.
+
 - The current set of migrations need refactored to work for a clean install
 - RSpec tests need written
 - Replace ActiveScaffold with custom, better designed forms
\ No newline at end of file

Modified: labs/consite/trunk/conferences/conferences_extension.rb
URL: 
http://svn.apache.org/viewvc/labs/consite/trunk/conferences/conferences_extension.rb?rev=809660&r1=809659&r2=809660&view=diff
==============================================================================
--- labs/consite/trunk/conferences/conferences_extension.rb (original)
+++ labs/consite/trunk/conferences/conferences_extension.rb Mon Aug 31 17:00:32 
2009
@@ -56,9 +56,9 @@
       has_many :conference_roles, :foreign_key => 'presenter_id'
       has_many :conferences, :through => :conferences_roles, :foreign_key => 
'presenter_id'
       has_many :presentations, :foreign_key => 'presenter_id'
-      has_many :panel_members
+      has_many :panel_members, :foreign_key => 'presenter_id'
       has_many :submissions, :through => :presentations
-      has_many :activities
+      has_many :activities, :foreign_key => 'presenter_id'
 
       def scheduled_sessions(conference=nil, include_panels=true)
         sessions = [ ]

Modified: 
labs/consite/trunk/conferences/lib/tasks/conferences_extension_tasks.rake
URL: 
http://svn.apache.org/viewvc/labs/consite/trunk/conferences/lib/tasks/conferences_extension_tasks.rake?rev=809660&r1=809659&r2=809660&view=diff
==============================================================================
--- labs/consite/trunk/conferences/lib/tasks/conferences_extension_tasks.rake 
(original)
+++ labs/consite/trunk/conferences/lib/tasks/conferences_extension_tasks.rake 
Mon Aug 31 17:00:32 2009
@@ -34,6 +34,45 @@
         end
       end
 
+      desc "Consolidates all user accounts and replaces login with email"
+      task :merge_users => :environment do
+        results = User.connection.execute <<SQL 
+               select email, count 
+                from (select email, count(id) as 'count' from users group by 
email) as emails 
+                where count > 1 and count < 20
+SQL
+        results.each do |res|
+          email = res[0]
+          users = User.find(:all, :conditions => ['email = ?',email])
+          if users.size > 1            
+            master_user = users[0]
+            logins = Array.new
+            users.each do |user|
+              unless user.id == master_user.id
+                
+                logins << user.login
+
+                user.presentations.each   {|p| p.presenter_id = 
master_user.id; p.save}
+                user.panel_members.each   {|p| p.presenter_id = 
master_user.id; p.save}
+                user.activities.each      {|a| a.presenter_id = 
master_user.id; a.save}
+                
+                user.destroy
+              end
+            end
+            puts "combined accounts for #{master_user.login} 
<#{master_user.email}>, AKA #{logins.join(',')}"
+          end
+        end
+        
+        users = User.find(:all)
+        users.each do |user|
+          unless user.email == '[email protected]'
+            puts "combining login and email for #{user.login} <#{user.email}>" 
           
+            user.login = user.email
+            user.save
+          end
+        end
+        
+      end     
     end
   end
 end



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to