mobilize-base 1.25 → 1.26

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ce15c1af069e5c285df26cf613ce6cf378489f1f
4
- data.tar.gz: 5a4098bb5d320d6580ab5dbe695348015edd0949
3
+ metadata.gz: 589b56572a43097c84f63317ef02d681f7add21d
4
+ data.tar.gz: 660181a7039188861db41215c185fc1ec76244ba
5
5
  SHA512:
6
- metadata.gz: cca5b69d992e93bac4b7a738199993c81802534366f52bf12f2c6171ab88fe15c3f18735402c102d77d01e2224bedd93a97226ee996959a05cd77df5c2433d16
7
- data.tar.gz: d6d7de9e7516102527baeccb3d0198fc03d5aaccb47f1a702160ba4d4e25b0fea3e0232bacc4b22465dd360581c3560f75b53d69441cd7a21b97c61ba80473de
6
+ metadata.gz: eafc31651c0737c1b9788f109a6a34f7afdc3af235028892d98173b03d6279e6e867a85498b08b0f4700d24320ebc3ebe43d561f1809bf94a901ae8942c53b8d
7
+ data.tar.gz: 19508e09afba3af8aea6091a26c8481a9382b905ef07ba9af8288bdcb8829e296fb684b0800206ff89d7a99b25766b76ecd827a9325ec4c75b0d156a8119a925
@@ -1,6 +1,6 @@
1
1
  module GoogleDrive
2
2
  class Worksheet
3
- def to_tsv
3
+ def to_tsv(gsub_line_breaks="\n")
4
4
  sheet = self
5
5
  rows = sheet.rows
6
6
  header = rows.first
@@ -8,7 +8,12 @@ module GoogleDrive
8
8
  #look for blank cols to indicate end of row
9
9
  col_last_i = (header.index("") || header.length)-1
10
10
  #ignore user-entered line breaks for purposes of tsv reads
11
- out_tsv = rows.map{|r| r[0..col_last_i].join("\t").gsub("\n","")+"\n"}.join + "\n"
11
+ out_tsv = rows.map do |r|
12
+ row = r[0..col_last_i].join("\t")
13
+ row.gsub!("\n",gsub_line_breaks)
14
+ row = row + "\n"
15
+ row
16
+ end.join + "\n"
12
17
  out_tsv.tsv_convert_dates(Mobilize::Gsheet.config['sheet_date_format'],
13
18
  Mobilize::Gsheet.config['read_date_format'])
14
19
  end
@@ -1,6 +1,6 @@
1
1
  module Mobilize
2
2
  module Gfile
3
- def Gfile.path_to_dst(path,stage_path)
3
+ def Gfile.path_to_dst(path,stage_path,gdrive_slot)
4
4
  #don't need the ://
5
5
  path = path.split("://").last if path.index("://")
6
6
  if Gfile.find_by_path(path)
@@ -10,12 +10,10 @@ module Mobilize
10
10
  end
11
11
 
12
12
  # converts a source path or target path to a dst in the context of handler and stage
13
- def Gsheet.path_to_dst(path,stage_path)
13
+ def Gsheet.path_to_dst(path,stage_path,gdrive_slot)
14
14
  s = Stage.where(:path=>stage_path).first
15
15
  params = s.params
16
16
  target_path = params['target']
17
- #take random slot if one is not available
18
- gdrive_slot = Gdrive.slot_worker_by_path(stage_path) || Gdrive.worker_emails.sort_by{rand}.first
19
17
  #if this is the target, it doesn't have to exist already
20
18
  is_target = true if path == target_path
21
19
  #don't need the ://
@@ -46,9 +44,7 @@ module Mobilize
46
44
 
47
45
  def Gsheet.read_by_dataset_path(dst_path,user_name,*args)
48
46
  #expects gdrive slot as first arg, otherwise chooses random
49
- gdrive_slot = args
50
- worker_emails = Gdrive.worker_emails.sort_by{rand}
51
- gdrive_slot = worker_emails.first unless worker_emails.include?(gdrive_slot)
47
+ gdrive_slot = args.to_a.first
52
48
  sheet = Gsheet.find_by_path(dst_path,gdrive_slot)
53
49
  sheet.read(user_name) if sheet
54
50
  end
@@ -56,8 +52,6 @@ module Mobilize
56
52
  def Gsheet.write_by_dataset_path(dst_path,tsv,user_name,*args)
57
53
  #expects gdrive slot as first arg, otherwise chooses random
58
54
  gdrive_slot,crop = args
59
- worker_emails = Gdrive.worker_emails.sort_by{rand}
60
- gdrive_slot = worker_emails.first unless worker_emails.include?(gdrive_slot)
61
55
  crop ||= true
62
56
  Gsheet.write_target(dst_path,tsv,user_name,gdrive_slot,crop)
63
57
  end
@@ -134,7 +128,7 @@ module Mobilize
134
128
  crop = s.params['crop'] || true
135
129
  begin
136
130
  #get tsv to write from stage
137
- source = s.sources.first
131
+ source = s.sources(gdrive_slot).first
138
132
  raise "Need source for gsheet write" unless source
139
133
  tsv = source.read(u.name,gdrive_slot)
140
134
  raise "No data source found for #{source.url}" unless tsv
@@ -101,7 +101,8 @@ module Mobilize
101
101
 
102
102
  def read_gsheet(gdrive_slot)
103
103
  r = self
104
- gsheet_tsv = r.gsheet(gdrive_slot).read(Gdrive.owner_name)
104
+ #argument converts line breaks in cells to spaces
105
+ gsheet_tsv = r.gsheet(gdrive_slot).to_tsv(" ")
105
106
  #turn it into a hash array
106
107
  gsheet_jobs = gsheet_tsv.tsv_to_hash_array
107
108
  #go through each job, update relevant job with its params
@@ -212,14 +212,15 @@ module Mobilize
212
212
  raise "incompatible target handler #{handler} for #{s.handler} stage"
213
213
  else
214
214
  begin
215
- return "Mobilize::#{s.handler.downcase.capitalize}".constantize.path_to_dst(target_path,s.path)
215
+ #nil gdrive_slot for targets since there is no verification
216
+ return "Mobilize::#{s.handler.downcase.capitalize}".constantize.path_to_dst(target_path,s.path,nil)
216
217
  rescue => exc
217
218
  raise "Could not get #{target_path} with error: #{exc.to_s}"
218
219
  end
219
220
  end
220
221
  end
221
222
 
222
- def sources
223
+ def sources(gdrive_slot)
223
224
  #returns an array of Datasets corresponding to
224
225
  #items listed as sources in the stage params
225
226
  s = self
@@ -248,7 +249,7 @@ module Mobilize
248
249
  end
249
250
  begin
250
251
  stage_path = s.path
251
- dsts << "Mobilize::#{handler.downcase.capitalize}".constantize.path_to_dst(source_path,stage_path)
252
+ dsts << "Mobilize::#{handler.downcase.capitalize}".constantize.path_to_dst(source_path,stage_path,gdrive_slot)
252
253
  rescue => exc
253
254
  raise "Could not get #{source_path} with error: #{exc.to_s}"
254
255
  end
@@ -1,5 +1,5 @@
1
1
  module Mobilize
2
2
  module Base
3
- VERSION = "1.25"
3
+ VERSION = "1.26"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mobilize-base
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.25'
4
+ version: '1.26'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cassio Paes-Leme
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-03-24 00:00:00.000000000 Z
11
+ date: 2013-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake