mobilize-base 1.1.01 → 1.1.02

Sign up to get free protection for your applications and to get access to all the features.
@@ -60,6 +60,11 @@ module GoogleDrive
60
60
  elsif entry.role != role and ['reader','writer','owner'].include?(role)
61
61
  entry.role=role
62
62
  f.acl.update_role(entry,entry.role)
63
+ if entry.role != role
64
+ #for whatever reason
65
+ f.acl.delete(entry)
66
+ f.acl.push({:scope_type=>"user",:scope=>email,:role=>role})
67
+ end
63
68
  elsif !['reader','writer','owner'].include?(role)
64
69
  raise "Invalid role #{role}"
65
70
  end
@@ -49,9 +49,9 @@ module GoogleDrive
49
49
  #with the contents of merge_sheet
50
50
  sheet = self
51
51
  sheet.reload
52
- entry = merge_sheet.spreadsheet.acl_entry("#{user}@#{Mobilize::Gdrive.domain}")
52
+ entry = sheet.spreadsheet.acl_entry("#{user}@#{Mobilize::Gdrive.domain}")
53
53
  unless entry and ['writer','owner'].include?(entry.role)
54
- raise "User #{user} is not allowed to write to #{merge_sheet.spreadsheet.title}"
54
+ raise "User #{user} is not allowed to write to #{sheet.spreadsheet.title}"
55
55
  end
56
56
  merge_sheet.reload
57
57
  curr_rows = sheet.num_rows
@@ -50,18 +50,25 @@ module Mobilize
50
50
  #return blank response if there are no slots available
51
51
  return nil unless gdrive_slot
52
52
  s = Stage.where(:path=>stage_path).first
53
- user = s.job.runner.user.name
53
+ user = s.job.runner.user
54
54
  target_path = s.params['target']
55
55
  target_path = "#{s.job.runner.title}/#{target_path}" unless target_path.index("/")
56
56
  source_dst = s.source_dsts(gdrive_slot).first
57
- tsv = source_dst.read(user)
57
+ tsv = source_dst.read(user.name)
58
58
  sheet_name = target_path.split("/").last
59
59
  temp_path = [stage_path.gridsafe,sheet_name].join("/")
60
60
  temp_sheet = Gsheet.find_or_create_by_path(temp_path,gdrive_slot)
61
61
  temp_sheet.write(tsv,Gdrive.owner_name)
62
62
  temp_sheet.check_and_fix(tsv)
63
- target_sheet = Gsheet.find_or_create_by_path(target_path,gdrive_slot)
64
- target_sheet.merge(temp_sheet,user)
63
+ target_sheet = Gsheet.find_by_path(target_path,gdrive_slot)
64
+ unless target_sheet
65
+ #only give the user edit permissions if they're the ones
66
+ #creating it
67
+ target_sheet = Gsheet.find_or_create_by_path(target_path,gdrive_slot)
68
+ target_sheet.spreadsheet.update_acl(user.email,"writer") unless target_sheet.spreadsheet.acl_entry(user.email).role=="owner"
69
+ target_sheet.delete_sheet1
70
+ end
71
+ target_sheet.merge(temp_sheet,user.name)
65
72
  #delete the temp sheet's book
66
73
  temp_sheet.spreadsheet.delete
67
74
  status = "Write successful for #{target_path}"
@@ -85,7 +85,16 @@ module Mobilize
85
85
 
86
86
  def gsheet(gdrive_slot)
87
87
  r = self
88
- jobs_sheet = Gsheet.find_or_create_by_path(r.path,gdrive_slot)
88
+ jobs_sheet = Gsheet.find_by_path(r.path,gdrive_slot)
89
+ #make sure the user has a runner with a jobs sheet and has write privileges on the spreadsheet
90
+ unless (jobs_sheet and jobs_sheet.spreadsheet.acl_entry(r.user.email).ie{|e| e and e.role=="writer"})
91
+ #only give the user edit permissions if they're the ones
92
+ #creating it
93
+ jobs_sheet = Gsheet.find_or_create_by_path(r.path,gdrive_slot)
94
+ unless jobs_sheet.spreadsheet.acl_entry(r.user.email).role=="owner"
95
+ jobs_sheet.spreadsheet.update_acl(r.user.email,"writer")
96
+ end
97
+ end
89
98
  jobs_sheet.add_headers(r.headers)
90
99
  begin;jobs_sheet.delete_sheet1;rescue;end #don't care if sheet1 deletion fails
91
100
  return jobs_sheet
@@ -1,5 +1,5 @@
1
1
  module Mobilize
2
2
  module Base
3
- VERSION = "1.1.01"
3
+ VERSION = "1.1.02"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mobilize-base
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.01
4
+ version: 1.1.02
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-26 00:00:00.000000000 Z
12
+ date: 2013-01-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -239,7 +239,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
239
239
  version: '0'
240
240
  segments:
241
241
  - 0
242
- hash: 3362582751526690476
242
+ hash: 1719370628244377798
243
243
  required_rubygems_version: !ruby/object:Gem::Requirement
244
244
  none: false
245
245
  requirements:
@@ -248,7 +248,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
248
248
  version: '0'
249
249
  segments:
250
250
  - 0
251
- hash: 3362582751526690476
251
+ hash: 1719370628244377798
252
252
  requirements: []
253
253
  rubyforge_project: mobilize-base
254
254
  rubygems_version: 1.8.24