usvn-crowd-sync 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
@@ -19,13 +19,14 @@ config = YAML.load(File.new(CROWD_CONFIG_PATH))
19
19
  DataMapper.setup(:default, config["usvn_db"])
20
20
 
21
21
  crowd = Crowd.new(config)
22
+ # 得到所有crowd的组名
22
23
  crowd_group_names = crowd.find_all_group_names
23
24
 
24
25
  crowd_group_names.each do |g|
25
26
  puts g
26
27
  end
27
28
 
28
- ug_hashcode1 = 0
29
+ ug_hashcode1 = 0 # 用于确认用户组关系是否有修改
29
30
  GroupUser.all.each { |ug| ug_hashcode1 += ug.hash }
30
31
 
31
32
  cached_user_hash = Hash.new
@@ -33,17 +34,13 @@ User.all.each { |u| cached_user_hash[u.login] = u }
33
34
 
34
35
  groups = Group.create_or_update(crowd_group_names)
35
36
 
36
- User.all(:password => 'a9asdf907aafeqwerqw').each do |u|
37
- GroupUser.all(:users_id => u.id).destroy
38
- end
39
-
40
-
41
37
  crowd_group_names.each do |gname|
42
38
  begin
43
39
  user_names = crowd.find_users_in_group(gname)
44
40
  g = Group.first(:name => gname.strip)
45
41
 
46
42
  unless g.nil?
43
+ userGroups = GroupUser.all(:groups_id => g.id).to_ary
47
44
  user_names.each do |name|
48
45
  begin
49
46
  u = cached_user_hash[name] || User.first(:login => name)
@@ -62,10 +59,16 @@ crowd_group_names.each do |gname|
62
59
  if ug.nil?
63
60
  GroupUser.create(:users_id => u.id, :groups_id => g.id, :is_leader => 0)
64
61
  end
62
+ # 从已有关系中删除
63
+ userGroups.delete_if {|ugx| ugx.users_id == u.id}
65
64
  rescue Exception => e1
66
65
  puts "User Not found #{name}: #{e1}"
67
66
  end
68
67
  end
68
+ # 删除多余的关系
69
+ userGroups.each { |ugx|
70
+ GroupUser.all(:groups_id => ugx.groups_id, :users_id => ugx.users_id).destroy
71
+ }
69
72
  end
70
73
  rescue Exception => e
71
74
  puts "Not found #{gname}: #{e}"
@@ -47,6 +47,7 @@ class Group
47
47
  def self.create_or_update(names)
48
48
  groups = []
49
49
  names.each do |name|
50
+ name.strip!
50
51
  if name =~ /^[a-zA-Z0-9\-\_]+$/
51
52
  g = Group.first(:name => name)
52
53
  if g.nil?
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{usvn-crowd-sync}
8
- s.version = "0.2.0"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["crazycode"]
12
- s.date = %q{2011-06-02}
12
+ s.date = %q{2011-09-13}
13
13
  s.default_executable = %q{usvn-crowd-sync}
14
14
  s.description = %q{Sync Atlassian crowd's user & groups to USVN.}
15
15
  s.email = %q{crazycode@gmail.com}
@@ -47,7 +47,7 @@ Gem::Specification.new do |s|
47
47
  s.homepage = %q{http://github.com/crazycode/usvn-crowd-sync}
48
48
  s.licenses = ["MIT"]
49
49
  s.require_paths = ["lib"]
50
- s.rubygems_version = %q{1.6.2}
50
+ s.rubygems_version = %q{1.3.7}
51
51
  s.summary = %q{Sync Atlassian crowd's user & groups to USVN.}
52
52
  s.test_files = [
53
53
  "spec/spec_helper.rb",
@@ -55,6 +55,7 @@ Gem::Specification.new do |s|
55
55
  ]
56
56
 
57
57
  if s.respond_to? :specification_version then
58
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
58
59
  s.specification_version = 3
59
60
 
60
61
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usvn-crowd-sync
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease:
4
+ hash: 21
5
+ prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 0
10
- version: 0.2.0
9
+ - 1
10
+ version: 0.2.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - crazycode
@@ -15,12 +15,13 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-02 00:00:00 +08:00
18
+ date: 2011-09-13 00:00:00 +08:00
19
19
  default_executable: usvn-crowd-sync
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- type: :development
23
- requirement: &id001 !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ name: rspec
24
+ version_requirements: &id001 !ruby/object:Gem::Requirement
24
25
  none: false
25
26
  requirements:
26
27
  - - ~>
@@ -31,12 +32,12 @@ dependencies:
31
32
  - 3
32
33
  - 0
33
34
  version: 2.3.0
34
- name: rspec
35
- version_requirements: *id001
36
- prerelease: false
37
- - !ruby/object:Gem::Dependency
35
+ requirement: *id001
38
36
  type: :development
39
- requirement: &id002 !ruby/object:Gem::Requirement
37
+ - !ruby/object:Gem::Dependency
38
+ prerelease: false
39
+ name: bundler
40
+ version_requirements: &id002 !ruby/object:Gem::Requirement
40
41
  none: false
41
42
  requirements:
42
43
  - - ~>
@@ -47,12 +48,12 @@ dependencies:
47
48
  - 0
48
49
  - 0
49
50
  version: 1.0.0
50
- name: bundler
51
- version_requirements: *id002
52
- prerelease: false
53
- - !ruby/object:Gem::Dependency
51
+ requirement: *id002
54
52
  type: :development
55
- requirement: &id003 !ruby/object:Gem::Requirement
53
+ - !ruby/object:Gem::Dependency
54
+ prerelease: false
55
+ name: jeweler
56
+ version_requirements: &id003 !ruby/object:Gem::Requirement
56
57
  none: false
57
58
  requirements:
58
59
  - - ~>
@@ -63,12 +64,12 @@ dependencies:
63
64
  - 5
64
65
  - 2
65
66
  version: 1.5.2
66
- name: jeweler
67
- version_requirements: *id003
68
- prerelease: false
69
- - !ruby/object:Gem::Dependency
67
+ requirement: *id003
70
68
  type: :development
71
- requirement: &id004 !ruby/object:Gem::Requirement
69
+ - !ruby/object:Gem::Dependency
70
+ prerelease: false
71
+ name: rcov
72
+ version_requirements: &id004 !ruby/object:Gem::Requirement
72
73
  none: false
73
74
  requirements:
74
75
  - - ">="
@@ -77,12 +78,12 @@ dependencies:
77
78
  segments:
78
79
  - 0
79
80
  version: "0"
80
- name: rcov
81
- version_requirements: *id004
82
- prerelease: false
81
+ requirement: *id004
82
+ type: :development
83
83
  - !ruby/object:Gem::Dependency
84
- type: :runtime
85
- requirement: &id005 !ruby/object:Gem::Requirement
84
+ prerelease: false
85
+ name: data_mapper
86
+ version_requirements: &id005 !ruby/object:Gem::Requirement
86
87
  none: false
87
88
  requirements:
88
89
  - - ">="
@@ -91,12 +92,12 @@ dependencies:
91
92
  segments:
92
93
  - 0
93
94
  version: "0"
94
- name: data_mapper
95
- version_requirements: *id005
96
- prerelease: false
97
- - !ruby/object:Gem::Dependency
95
+ requirement: *id005
98
96
  type: :runtime
99
- requirement: &id006 !ruby/object:Gem::Requirement
97
+ - !ruby/object:Gem::Dependency
98
+ prerelease: false
99
+ name: dm-mysql-adapter
100
+ version_requirements: &id006 !ruby/object:Gem::Requirement
100
101
  none: false
101
102
  requirements:
102
103
  - - ">="
@@ -105,12 +106,12 @@ dependencies:
105
106
  segments:
106
107
  - 0
107
108
  version: "0"
108
- name: dm-mysql-adapter
109
- version_requirements: *id006
110
- prerelease: false
109
+ requirement: *id006
110
+ type: :runtime
111
111
  - !ruby/object:Gem::Dependency
112
- type: :development
113
- requirement: &id007 !ruby/object:Gem::Requirement
112
+ prerelease: false
113
+ name: rspec
114
+ version_requirements: &id007 !ruby/object:Gem::Requirement
114
115
  none: false
115
116
  requirements:
116
117
  - - ">="
@@ -119,9 +120,8 @@ dependencies:
119
120
  segments:
120
121
  - 0
121
122
  version: "0"
122
- name: rspec
123
- version_requirements: *id007
124
- prerelease: false
123
+ requirement: *id007
124
+ type: :development
125
125
  description: Sync Atlassian crowd's user & groups to USVN.
126
126
  email: crazycode@gmail.com
127
127
  executables:
@@ -186,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
186
186
  requirements: []
187
187
 
188
188
  rubyforge_project:
189
- rubygems_version: 1.6.2
189
+ rubygems_version: 1.3.7
190
190
  signing_key:
191
191
  specification_version: 3
192
192
  summary: Sync Atlassian crowd's user & groups to USVN.