添加任务--解决用户同步不成功的问题

This commit is contained in:
huang 2015-11-10 15:31:24 +08:00
parent e2f87a5b06
commit ef74d8d956
3 changed files with 73 additions and 56 deletions

View File

@ -1,22 +0,0 @@
#coding=utf-8
namespace :rep_fault do
desc "set ossean's type value"
task :rep_update => :environment do
rep = Repository.find(400)
rep.type = "Repository::Git"
rep.save
end
desc "forge and ossean's members"
task :sync_members => :environment do
projects = []
projects << Project.where("id =? ",2)
projects << Project.where("id =? ",299)
puts projects
s = Trustie::Gitlab::Sync.new
projects.each do |project|
s.only_members(project.first)
end
end
end

View File

@ -0,0 +1,39 @@
#coding=utf-8
namespace :gitlab do
desc "sync gitlab's users which lost in last sync"
task :add_gid => :environment do
users = User.find_by_sql("select * from users where gid is null")
s = Trustie::Gitlab::Sync.new
g = Gitlab.client
users.each do |user|
us = g.get("/users?search=#{user.mail}")
puts user.mail
if us.blank?
puts "55555555555555555"
s.sync_user(user)
else
# 解决查询的时候出现多值的情况,比如:123@163.com和g123@163.com
puts "66666666666666666666"
puts user.id
if Array === us
us.each do |u|
if u.email == user.mail
user.gid = u.id
user.save
end
end
end
end
end
end
task :sync_members => :environment do
projects = Project.all
s = Trustie::Gitlab::Sync.new
projects.each do |project|
puts project.id
s.only_members(project.first)
end
end
end

View File

@ -3,46 +3,46 @@
module Trustie module Trustie
module Gitlab module Gitlab
module Helper module Helper
def change_password(uid, en_pwd, salt) def change_password(uid, en_pwd, salt)
return unless uid return unless uid
options = {:encrypted_password=>en_pwd, :password_salt=>salt} options = {:encrypted_password=>en_pwd, :password_salt=>salt}
self.g.put("/users/ext/#{uid}", :body => options) self.g.put("/users/ext/#{uid}", :body => options)
# g.edit_user(uid, :encrypted_password=>en_pwd, :password_salt=>salt) # g.edit_user(uid, :encrypted_password=>en_pwd, :password_salt=>salt)
end end
def find_user(user) def find_user(user)
us = self.g.get("/users?search=#{user.mail}") us = self.g.get("/users?search=#{user.mail}")
if Array === us if Array === us
us.each do |u| us.each do |u|
return u if u.email == user.mail return u if u.email == user.mail
end
end end
return nil
end end
return nil
end
def add_user(user) def add_user(user)
u = nil u = nil
begin begin
u = find_user(user) u = find_user(user)
unless u unless u
u = self.g.create_user(user.mail, u = self.g.create_user(user.mail,
user.hashed_password, user.hashed_password,
name: user.show_name, name: user.show_name,
username: user.login, username: user.login,
confirm: "true") confirm: "true")
user.gid = u.id user.gid = u.id
end end
change_password(u.id, user.hashed_password, user.salt) change_password(u.id, user.hashed_password, user.salt)
rescue => e rescue => e
puts e puts e
end
return u
end end
return u
end
def del_user(user) def del_user(user)
return unless user.gid return unless user.gid
self.g.delete_user(user.gid) self.g.delete_user(user.gid)
end end
end end
end end