mobilize-base 1.293 → 1.294

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -220,9 +220,8 @@ production:
220
220
 
221
221
  gsheet.yml needs:
222
222
  * max_cells, which is the number of cells a sheet is allowed to have
223
- written to it at one time. Default is 400k cells, which is the max per
224
- book. Google Drive will throw its own exception if
225
- you try to write more than that.
223
+ written to it at one time. Default is 50k cells, which is about how
224
+ much you can write before things start breaking.
226
225
  * Because Google Docs ties date formatting to the Locale for the
227
226
  spreadsheet, there are 2 date format parameters:
228
227
  * read_date_format, which is the format that should be read FROM google
@@ -13,7 +13,7 @@ module GoogleDrive
13
13
  f = self
14
14
  #admin includes workers
15
15
  return true if f.has_admin_acl?
16
- accounts = (Mobilize::Gdrive.admin_emails + Mobilize::Gdrive.worker_emails)
16
+ accounts = (Mobilize::Gdrive.admin_emails + Mobilize::Gdrive.worker_emails).uniq
17
17
  accounts.each do |email|
18
18
  f.update_acl(email)
19
19
  end
@@ -21,9 +21,9 @@ module GoogleDrive
21
21
 
22
22
  def has_admin_acl?
23
23
  f = self
24
- curr_emails = f.acls.map{|a| a.scope}.sort
25
- admin_emails = (Mobilize::Gdrive.admin_emails + Mobilize::Gdrive.worker_emails)
26
- if (curr_emails & admin_emails) == admin_emails
24
+ curr_emails = f.acls.map{|a| a.scope}.compact.sort
25
+ admin_emails = (Mobilize::Gdrive.admin_emails + Mobilize::Gdrive.worker_emails).uniq
26
+ if curr_emails == admin_emails or (curr_emails & admin_emails) == admin_emails
27
27
  return true
28
28
  else
29
29
  return false
@@ -32,9 +32,9 @@ module GoogleDrive
32
32
 
33
33
  def has_worker_acl?
34
34
  f = self
35
- curr_emails = f.acls.map{|a| a.scope}.sort
35
+ curr_emails = f.acls.map{|a| a.scope}.compact.sort
36
36
  worker_emails = Mobilize::Gdrive.worker_emails.sort
37
- if (curr_emails & worker_emails) == worker_emails
37
+ if curr_emails == worker_emails or (curr_emails & worker_emails) == worker_emails
38
38
  return true
39
39
  else
40
40
  return false
@@ -84,7 +84,7 @@ module GoogleDrive
84
84
  end
85
85
  def acl_entry(email)
86
86
  f = self
87
- f.acls.select{|a| ['group','user'].include?(a.scope_type) and a.scope == email}.first
87
+ f.acls.select{|a| ['group','user'].include?(a.scope_type) and a.scope and a.scope == email}.first
88
88
  end
89
89
  def entry_hash
90
90
  f = self
@@ -132,9 +132,14 @@ module Mobilize
132
132
  raise "Need source for gsheet write" unless source
133
133
  tsv = source.read(u.name,gdrive_slot)
134
134
  raise "No data source found for #{source.url}" unless tsv
135
- stdout = if tsv.to_s.length == 0
135
+ tsv_row_count = tsv.to_s.split("\n").length
136
+ tsv_col_count = tsv.to_s.split("\n").first.to_s.split("\t").length
137
+ tsv_cell_count = tsv_row_count * tsv_col_count
138
+ stdout = if tsv_row_count == 0
136
139
  #soft error; no data to write. Stage will complete.
137
140
  "Write skipped for #{s.target.url}"
141
+ elsif tsv_cell_count > Gsheet.max_cells
142
+ raise "Too many datapoints; you have #{tsv_cell_count.to_s}, max is #{Gsheet.max_cells.to_s}"
138
143
  else
139
144
  Dataset.write_by_url(s.target.url,tsv,u.name,gdrive_slot,crop)
140
145
  #update status
@@ -1,5 +1,5 @@
1
1
  module Mobilize
2
2
  module Base
3
- VERSION = "1.293"
3
+ VERSION = "1.294"
4
4
  end
5
5
  end
@@ -1,17 +1,17 @@
1
1
  ---
2
2
  development:
3
- max_cells: 400000 #current google limit is 400k cells per book
3
+ max_cells: 50000 #current google limit is 400k cells per book but fails earlier
4
4
  read_date_format: "%Y-%m-%d" #format to record when reading sheets
5
5
  sheet_date_format: "%m/%d/%Y" #format to use to parse sheets
6
6
  test:
7
- max_cells: 400000 #current google limit is 400k cells per book
7
+ max_cells: 50000 #current google limit is 400k cells per book but fails earlier
8
8
  read_date_format: "%Y-%m-%d" #format to record when reading sheets
9
9
  sheet_date_format: "%m/%d/%Y" #format to use to parse sheets
10
10
  staging:
11
- max_cells: 400000 #current google limit is 400k cells per book
11
+ max_cells: 50000 #current google limit is 400k cells per book but fails earlier
12
12
  read_date_format: "%Y-%m-%d" #format to record when reading sheets
13
13
  sheet_date_format: "%m/%d/%Y" #format to use to parse sheets
14
14
  production:
15
- max_cells: 400000 #current google limit is 400k cells per book
15
+ max_cells: 50000 #current google limit is 400k cells per book but fails earlier
16
16
  read_date_format: "%Y-%m-%d" #format to record when reading sheets
17
17
  sheet_date_format: "%m/%d/%Y" #format to use to parse sheets
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.293'
4
+ version: '1.294'
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-03-30 00:00:00.000000000 Z
12
+ date: 2013-04-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -225,7 +225,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
225
225
  version: '0'
226
226
  segments:
227
227
  - 0
228
- hash: 3027972477721057312
228
+ hash: 1508381292879500596
229
229
  required_rubygems_version: !ruby/object:Gem::Requirement
230
230
  none: false
231
231
  requirements:
@@ -234,7 +234,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
234
234
  version: '0'
235
235
  segments:
236
236
  - 0
237
- hash: 3027972477721057312
237
+ hash: 1508381292879500596
238
238
  requirements: []
239
239
  rubyforge_project: mobilize-base
240
240
  rubygems_version: 1.8.25