appoxy_sessions 0.0.8 → 0.0.9
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/lib/sessions/shareable.rb +133 -135
- metadata +2 -2
data/lib/sessions/shareable.rb
CHANGED
@@ -1,173 +1,171 @@
|
|
1
|
-
|
2
1
|
module Appoxy
|
3
|
-
|
4
|
-
|
2
|
+
module Sessions
|
3
|
+
module Shareable
|
5
4
|
|
6
5
|
|
7
|
-
|
6
|
+
def share_with(email, access_rights={}, options={})
|
8
7
|
|
9
|
-
|
8
|
+
@email = email.strip
|
10
9
|
|
11
|
-
|
10
|
+
# See if user exists in the system already
|
12
11
|
# if @email == current_user.email current_user not available from here
|
13
12
|
# flash[:error] = "Now why do you want to invite yourself??"
|
14
13
|
# return false
|
15
14
|
# end
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
15
|
+
if @email == self.user.email
|
16
|
+
self.errors.add_to_base("That user already owns this project.")
|
17
|
+
return false
|
18
|
+
end
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
20
|
+
user = ::User.find_by_email(@email)
|
21
|
+
if user.nil?
|
22
|
+
# lets create the user and send them an invite.
|
23
|
+
user = User.new(:email=>@email, :status=>"invited")
|
24
|
+
user.set_activation_code
|
25
|
+
if user.save
|
27
26
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
27
|
+
else
|
28
|
+
@errors = user.errors.full_messages
|
29
|
+
return false
|
30
|
+
end
|
31
|
+
end
|
33
32
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
33
|
+
# check if exists
|
34
|
+
share_domain = self.share_domain
|
35
|
+
item_id_name = self.item_id_name
|
36
|
+
puts 'share_domain = ' + share_domain.inspect
|
37
|
+
@sdb = SimpleRecord::Base.connection
|
39
38
|
# @shared_with = share_class.find(:first, :conditions=>["user_id = ? and item_id = ?", user.id, @item.id])
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
39
|
+
@project_user = get_results(:first, ["select * from #{share_domain} where user_id=? and #{item_id_name} = ?", user.id, self.id])
|
40
|
+
puts '@project_user=' + @project_user.inspect
|
41
|
+
unless @project_user.nil?
|
42
|
+
self.errors.add_to_base("This project is already shared with this user.")
|
43
|
+
return false
|
44
|
+
end
|
46
45
|
|
47
46
|
# id = self.class.generate_id
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
47
|
+
now = Time.now
|
48
|
+
id = share_id(user)
|
49
|
+
@sdb.put_attributes(share_domain, id, {:new_share=>true,
|
50
|
+
:id=>id,
|
51
|
+
:created=>now,
|
52
|
+
:updated=>now,
|
53
|
+
:user_id => user.id,
|
54
|
+
item_id_name => self.id }.merge(access_rights), true)
|
56
55
|
|
57
56
|
|
58
|
-
end
|
59
|
-
|
60
|
-
def item_id_name
|
61
|
-
name.foreign_key
|
62
|
-
|
63
|
-
end
|
64
|
-
|
65
|
-
def common_attribrutes
|
66
|
-
["new_share", "id", "created", "updated", "user_id", item_id_name]
|
67
|
-
end
|
68
|
-
|
69
|
-
def shared_with
|
70
|
-
project_users = get_results(:all, ["select * from #{share_domain} where #{item_id_name} = ?", self.id])
|
71
|
-
user_ids = []
|
72
|
-
options_hash = {}
|
73
|
-
project_users.each do |puhash|
|
74
|
-
puhash.each_pair do |k, v|
|
75
|
-
puhash[k] = v[0]
|
76
57
|
end
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
end
|
81
|
-
ret = ::User.find(:all, :conditions=>["id in ('#{user_ids.join("','")}')"]).collect do |u|
|
82
|
-
def u.share_options=(options=nil)
|
83
|
-
instance_variable_set(:@share_options, options)
|
58
|
+
|
59
|
+
def item_id_name
|
60
|
+
return self.class.name.foreign_key
|
84
61
|
end
|
85
62
|
|
86
|
-
def
|
87
|
-
|
63
|
+
def common_attribrutes
|
64
|
+
["new_share", "id", "created", "updated", "user_id", item_id_name]
|
88
65
|
end
|
89
66
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
67
|
+
def shared_with
|
68
|
+
project_users = get_results(:all, ["select * from #{share_domain} where #{item_id_name} = ?", self.id])
|
69
|
+
user_ids = []
|
70
|
+
options_hash = {}
|
71
|
+
project_users.each do |puhash|
|
72
|
+
puhash.each_pair do |k, v|
|
73
|
+
puhash[k] = v[0]
|
74
|
+
end
|
75
|
+
puts 'puhash=' + puhash.inspect
|
76
|
+
user_ids << puhash["user_id"]
|
77
|
+
options_hash[puhash["user_id"]] = puhash
|
78
|
+
end
|
79
|
+
ret = ::User.find(:all, :conditions=>["id in ('#{user_ids.join("','")}')"]).collect do |u|
|
80
|
+
def u.share_options=(options=nil)
|
81
|
+
instance_variable_set(:@share_options, options)
|
82
|
+
end
|
95
83
|
|
96
|
-
|
84
|
+
def u.share_options
|
85
|
+
instance_variable_get(:@share_options)
|
86
|
+
end
|
87
|
+
|
88
|
+
u.share_options=options_hash[u.id]
|
89
|
+
u
|
90
|
+
end
|
91
|
+
ret
|
92
|
+
end
|
93
|
+
|
94
|
+
def unshare_by_id(id)
|
97
95
|
# @project_user = ProjectUser.find(params[:pu_id])
|
98
96
|
# @project_user.delete
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
end
|
104
|
-
|
105
|
-
def update_sharing_options(user, options={})
|
106
|
-
puts 'options=' + ({ :updated=>Time.now }.merge(options)).inspect
|
107
|
-
@sdb = SimpleRecord::Base.connection
|
108
|
-
@project_user = get_results(:first, ["select * from #{share_domain} where user_id=? and #{item_id_name} = ?", user.id, self.id])
|
109
|
-
# compare values
|
110
|
-
to_delete = []
|
111
|
-
@project_user.each_pair do |k,v|
|
112
|
-
if !common_attribrutes.include?(k) && !options.include?(k)
|
113
|
-
to_delete << k
|
97
|
+
puts 'unsharing ' + id.to_s
|
98
|
+
@sdb = SimpleRecord::Base.connection
|
99
|
+
puts "response=" + @sdb.delete_attributes(share_domain, id.to_s).inspect
|
100
|
+
puts 'deleted?'
|
114
101
|
end
|
115
|
-
end
|
116
|
-
if to_delete.size > 0
|
117
|
-
puts 'to_delete=' + to_delete.inspect
|
118
|
-
@sdb.delete_attributes(share_domain, share_id(user), to_delete)
|
119
|
-
end
|
120
|
-
@sdb.put_attributes(share_domain, share_id(user), { :updated=>Time.now }.merge(options), true)
|
121
102
|
|
122
|
-
|
103
|
+
def update_sharing_options(user, options={})
|
104
|
+
puts 'options=' + ({ :updated=>Time.now }.merge(options)).inspect
|
105
|
+
@sdb = SimpleRecord::Base.connection
|
106
|
+
@project_user = get_results(:first, ["select * from #{share_domain} where user_id=? and #{item_id_name} = ?", user.id, self.id])
|
107
|
+
# compare values
|
108
|
+
to_delete = []
|
109
|
+
@project_user.each_pair do |k, v|
|
110
|
+
if !common_attribrutes.include?(k) && !options.include?(k)
|
111
|
+
to_delete << k
|
112
|
+
end
|
113
|
+
end
|
114
|
+
if to_delete.size > 0
|
115
|
+
puts 'to_delete=' + to_delete.inspect
|
116
|
+
@sdb.delete_attributes(share_domain, share_id(user), to_delete)
|
117
|
+
end
|
118
|
+
@sdb.put_attributes(share_domain, share_id(user), { :updated=>Time.now }.merge(options), true)
|
123
119
|
|
124
|
-
|
125
|
-
"#{self.id}_#{user.id}"
|
126
|
-
end
|
120
|
+
end
|
127
121
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
puts 'SHARE_NAME=' + ret
|
132
|
-
ret = ret.tableize
|
133
|
-
puts 'ret=' + ret
|
134
|
-
ret
|
135
|
-
end
|
122
|
+
def share_id(user)
|
123
|
+
"#{self.id}_#{user.id}"
|
124
|
+
end
|
136
125
|
|
126
|
+
def share_domain
|
127
|
+
puts 'instance share_domain'
|
128
|
+
ret = self.class.name + "User"
|
129
|
+
puts 'SHARE_NAME=' + ret
|
130
|
+
ret = ret.tableize
|
131
|
+
puts 'ret=' + ret
|
132
|
+
ret
|
133
|
+
end
|
137
134
|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
135
|
+
|
136
|
+
def get_results(which, q)
|
137
|
+
@sdb = SimpleRecord::Base.connection
|
138
|
+
next_token = nil
|
139
|
+
ret = []
|
140
|
+
begin
|
141
|
+
begin
|
142
|
+
response = @sdb.select(q, next_token)
|
143
|
+
rs = response[:items]
|
144
|
+
rs.each_with_index do |i, index|
|
145
|
+
puts 'i=' + i.inspect
|
146
|
+
i.each_key do |k|
|
147
|
+
puts 'key=' + k.inspect
|
148
|
+
if which == :first
|
149
|
+
return i[k].update("id"=>k)
|
150
|
+
end
|
151
|
+
ret << i[k]
|
152
|
+
end
|
153
|
+
# break if index > 100
|
152
154
|
end
|
153
|
-
|
155
|
+
next_token = response[:next_token]
|
156
|
+
end until next_token.nil?
|
157
|
+
rescue Aws::AwsError, Aws::ActiveSdb::ActiveSdbError
|
158
|
+
if ($!.message().index("NoSuchDomain") != nil)
|
159
|
+
puts 'NO SUCH DOMAIN!!!'
|
160
|
+
# this is ok
|
161
|
+
else
|
162
|
+
raise $!
|
154
163
|
end
|
155
|
-
# break if index > 100
|
156
164
|
end
|
157
|
-
|
158
|
-
end until next_token.nil?
|
159
|
-
rescue Aws::AwsError, Aws::ActiveSdb::ActiveSdbError
|
160
|
-
if ($!.message().index("NoSuchDomain") != nil)
|
161
|
-
puts 'NO SUCH DOMAIN!!!'
|
162
|
-
# this is ok
|
163
|
-
else
|
164
|
-
raise $!
|
165
|
+
which == :first ? nil : ret
|
165
166
|
end
|
167
|
+
|
166
168
|
end
|
167
|
-
which == :first ? nil : ret
|
168
169
|
end
|
169
|
-
|
170
|
-
end
|
171
|
-
end
|
172
|
-
end
|
170
|
+
end
|
173
171
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appoxy_sessions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Travis Reeder
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-02-
|
12
|
+
date: 2010-02-15 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|