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]