mobilize-base 1.1.01 → 1.1.02

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.
@@ -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