household_people_and_contributions 0.0.4 → 0.0.5
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d9a91c47d27bfa976f854fd2a85ca6eb12cf2d8
|
4
|
+
data.tar.gz: 5dc77e700b48af65c6fdc4bcf59bf6d183976d9c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cfb7c893f52945b2bda79e1037bf1a0986f976de12942be4328930e8d5d4c2961844fcb8ae4ce7ed2a5df3fb86d4c402302127241d45ac665521d434d54379a9
|
7
|
+
data.tar.gz: a675043c16ed18ff764fa0793e43e96f43f101b5b00b80f312d9eefd9bd5a837a55c175cf4e3d710d29dd79d94830000014da425bf5d840b508cbf2ff0bd4061
|
data/Gemfile.lock
CHANGED
@@ -6,7 +6,7 @@ begin
|
|
6
6
|
require "household_people_and_contributions"
|
7
7
|
rescue LoadError => e
|
8
8
|
warn "LoadError: #{e.message.inspect}"
|
9
|
-
|
9
|
+
require_relative "../lib/household_people_and_contributions"
|
10
10
|
end
|
11
11
|
|
12
12
|
if File.basename(__FILE__) == File.basename($PROGRAM_NAME)
|
@@ -38,9 +38,9 @@ module HouseholdPeopleAndContributions
|
|
38
38
|
JSONED_GRADE_FILE = "grade_records.json"
|
39
39
|
JSONED_HOUSEHOLDS_FILE = "household_records.json"
|
40
40
|
|
41
|
-
HOUSEHOLD_SEARCH_PATH_PREFIX = "/v1/Households/Search.json?searchfor="
|
41
|
+
HOUSEHOLD_SEARCH_PATH_PREFIX = "/v1/Households/Search.json?include=communications&searchfor="
|
42
42
|
PEOPLE_RECORDS_PATH_TEMPLATE = "/v1/Households/%s/People.json"
|
43
|
-
ATTRIBUTED_SCHOLAR_RECORDS_PATH_FORMAT = "/v1/People/Search.json?id=%s&include=attributes"
|
43
|
+
ATTRIBUTED_SCHOLAR_RECORDS_PATH_FORMAT = "/v1/People/Search.json?id=%s&include=communications,attributes"
|
44
44
|
CONTRIBUTION_RECORDS_PATH_TEMPLATE = "/giving/v1/contributionreceipts/search.json?householdID=%s&startReceivedDate=%s&endReceivedDate=%s"
|
45
45
|
|
46
46
|
def key
|
@@ -295,6 +295,33 @@ module HouseholdPeopleAndContributions
|
|
295
295
|
return @people
|
296
296
|
end
|
297
297
|
|
298
|
+
def parent_records(id_list_csv, options={})
|
299
|
+
@parent_records = []
|
300
|
+
emailable_parent_records_path = ATTRIBUTED_SCHOLAR_RECORDS_PATH_FORMAT % id_list_csv
|
301
|
+
emailable_parent_records_path = "#{emailable_parent_records_path}&#{options[:extra_params]}"
|
302
|
+
parent_results = lookup(emailable_parent_records_path, JSONED_GRADE_FILE, prefix: id_list_csv.gsub(',','_'))
|
303
|
+
|
304
|
+
parent_results.each do |results|
|
305
|
+
parents_array = results["results"]["person"]
|
306
|
+
@parent_records += parents_array.reduce([]) { |memo, parent_record|
|
307
|
+
|
308
|
+
if parent_record["communications"]
|
309
|
+
tmp_record = {}
|
310
|
+
communications_array = parent_record["communications"]["communication"]
|
311
|
+
communications_array.each do |communication_entry|
|
312
|
+
if communication_entry["communicationType"]["name"].downcase == "email"
|
313
|
+
tmp_record["key"] = communication_entry["person"]["@id"]
|
314
|
+
tmp_record["email"] = communication_entry["communicationValue"]
|
315
|
+
end
|
316
|
+
end
|
317
|
+
memo << tmp_record.dup if tmp_record["email"]
|
318
|
+
end
|
319
|
+
memo
|
320
|
+
}
|
321
|
+
end
|
322
|
+
@parent_records
|
323
|
+
end
|
324
|
+
|
298
325
|
def scholar_records(id_list_csv, options={})
|
299
326
|
@scholar_records = []
|
300
327
|
attributed_scholar_records_path = ATTRIBUTED_SCHOLAR_RECORDS_PATH_FORMAT % id_list_csv
|
@@ -321,10 +348,28 @@ module HouseholdPeopleAndContributions
|
|
321
348
|
end
|
322
349
|
|
323
350
|
|
351
|
+
def get_people_email_for(people=[], options = {})
|
352
|
+
n_at_a_time = options[:recordsPerPage] || 200
|
353
|
+
@emailable_people = []
|
354
|
+
warn "\n\n\t------------------> HERE\n\n"
|
355
|
+
parents = people.select { |person| PARENT_STATUS == person["status"].downcase }
|
356
|
+
warn "\n\tparents: #{parents.inspect}\n\n\n"
|
357
|
+
extra_params = "recordsPerPage=#{n_at_a_time}"
|
358
|
+
while !parents.empty?
|
359
|
+
parent_id_list = parents.pop(n_at_a_time).map {|s| s["key"] }
|
360
|
+
parent_id_list_csv = parent_id_list.join(",")
|
361
|
+
@emailable_people += parent_records(parent_id_list_csv, extra_params: extra_params)
|
362
|
+
end
|
363
|
+
|
364
|
+
return @emailable_people
|
365
|
+
end
|
366
|
+
|
324
367
|
def get_scholar_grades_for(people=[], options = {})
|
325
368
|
n_at_a_time = options[:recordsPerPage] || 200
|
326
369
|
@attributed_scholars = []
|
327
|
-
|
370
|
+
warn "\n\n\t------------------> HERE\n\n"
|
371
|
+
scholars = people.select { |person| SCHOLAR_STATUS == person["status"].downcase }
|
372
|
+
warn "\n\tscholars: #{scholars.inspect}\n\n\n"
|
328
373
|
extra_params = "recordsPerPage=#{n_at_a_time}"
|
329
374
|
while !scholars.empty?
|
330
375
|
scholar_id_list = scholars.pop(n_at_a_time).map {|s| s["key"] }
|
@@ -346,6 +391,16 @@ module HouseholdPeopleAndContributions
|
|
346
391
|
return hh
|
347
392
|
end
|
348
393
|
|
394
|
+
def add_email_to_people(em, pp)
|
395
|
+
em.each do |parent|
|
396
|
+
person = pp.detect { |p| p["key"] == parent["key"] }
|
397
|
+
if person
|
398
|
+
person["email"] = parent["email"]
|
399
|
+
end
|
400
|
+
end
|
401
|
+
return pp
|
402
|
+
end
|
403
|
+
|
349
404
|
def add_grades_to_people(as, pp)
|
350
405
|
as.each do |scholar|
|
351
406
|
person = pp.detect { |p| p["key"] == scholar["key"] }
|
@@ -380,6 +435,8 @@ module HouseholdPeopleAndContributions
|
|
380
435
|
def as
|
381
436
|
unless @as
|
382
437
|
@as = get_scholar_grades_for(pp, recordsPerPage: 200)
|
438
|
+
@em = get_people_email_for(pp, recordsPerPage: 200)
|
439
|
+
@pp = add_email_to_people(@em, pp)
|
383
440
|
@pp = add_grades_to_people(@as, pp)
|
384
441
|
end
|
385
442
|
@as
|
@@ -399,6 +456,7 @@ module HouseholdPeopleAndContributions
|
|
399
456
|
end
|
400
457
|
|
401
458
|
def report
|
459
|
+
as # get people, add grades to them...
|
402
460
|
warn "\n--> people and scholars: "
|
403
461
|
File.write(OUTPUT_DIR + "/" + "people.json", pp.to_json)
|
404
462
|
puts pp.to_json
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: household_people_and_contributions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jay Tee
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|