usvn-crowd-sync 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.