papercall 0.14.0 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/lib/papercall/analysis.rb +23 -23
- data/lib/papercall/rest_fetcher.rb +19 -12
- data/lib/papercall/version.rb +1 -1
- data/papercall.gemspec +1 -0
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab9ff289a7b73ca13abe407dbf7faf36ad50e5f5
|
4
|
+
data.tar.gz: eca379283228ab7e574ad8ce594e7b73db34bd37
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d10215d20228deb40b8102efa206a9af260767cfe87899729ce134f1f1213c4c58b43f3e1e6c3bf21a4eba222bcf8da52ba022ef46bee82a96603c4d43ef8876
|
7
|
+
data.tar.gz: 478adce38dd114a1ce2e3a8606bfc7acf382577d98254bbbb89e0ea35fe25b5c90ba3d1f4b7bb55b6c2e05d1cb9f04945796a1d6f13b40de58901f74c77f60ee
|
data/.gitignore
CHANGED
data/lib/papercall/analysis.rb
CHANGED
@@ -19,26 +19,26 @@ module Papercall
|
|
19
19
|
|
20
20
|
def analyze
|
21
21
|
startTime = Time.now
|
22
|
-
print
|
22
|
+
print 'Performing analysis...'
|
23
23
|
@analysis['submissions'].each do |submission|
|
24
|
-
submission[
|
25
|
-
|
26
|
-
@analysis['reviewers'][rating[
|
24
|
+
submission['ratings'].each do |rating|
|
25
|
+
if !(@analysis['reviewers'].include? rating['user']['name'])
|
26
|
+
@analysis['reviewers'][rating['user']['name']] = [{:id => rating['submission_id']}]
|
27
27
|
else
|
28
|
-
@analysis['reviewers'][rating['user']['name']] << {:id => rating[
|
28
|
+
@analysis['reviewers'][rating['user']['name']] << {:id => rating['submission_id']}
|
29
29
|
end
|
30
30
|
end
|
31
|
-
@analysis['talksWithoutReviews'] << {:id => submission[
|
32
|
-
@analysis['talksWithFourOrMoreReviews'] << {:id => submission[
|
33
|
-
@analysis['talksWithLessThanThreeReviews'] << {:id => submission[
|
34
|
-
@analysis['talksWithoutFeedback'] << {:id => submission[
|
35
|
-
@analysis['highlyRated'] << {:id => submission[
|
36
|
-
@analysis['lowRated'] << {:id => submission[
|
37
|
-
@analysis['maybe'] << {:id => submission[
|
38
|
-
@analysis['accepted'] << {:id => submission[
|
39
|
-
@analysis['waitlist'] << {:id => submission[
|
40
|
-
@analysis['rejected'] << {:id => submission[
|
41
|
-
@analysis['confirmed'] << {:id => submission[
|
31
|
+
@analysis['talksWithoutReviews'] << {:id => submission['id'], :submission => submission} if submission['ratings'].empty?
|
32
|
+
@analysis['talksWithFourOrMoreReviews'] << {:id => submission['id'], :submission => submission} if submission['ratings'].size >= 4
|
33
|
+
@analysis['talksWithLessThanThreeReviews'] << {:id => submission['id'], :submission => submission} if submission['ratings'].size < 3
|
34
|
+
@analysis['talksWithoutFeedback'] << {:id => submission['id'], :submission => submission} if submission['feedback'].empty?
|
35
|
+
@analysis['highlyRated'] << {:id => submission['id'], :submission => submission} if highlyRated? submission
|
36
|
+
@analysis['lowRated'] << {:id => submission['id'], :submission => submission} if lowRated? submission
|
37
|
+
@analysis['maybe'] << {:id => submission['id'], :submission => submission} if maybe? submission
|
38
|
+
@analysis['accepted'] << {:id => submission['id'], :submission => submission} if accepted? submission
|
39
|
+
@analysis['waitlist'] << {:id => submission['id'], :submission => submission} if waitlisted? submission
|
40
|
+
@analysis['rejected'] << {:id => submission['id'], :submission => submission} if rejected? submission
|
41
|
+
@analysis['confirmed'] << {:id => submission['id'], :submission => submission} if confirmed? submission
|
42
42
|
end
|
43
43
|
@analysis['summary'] = summary
|
44
44
|
puts "finished in #{Time.now - startTime} seconds."
|
@@ -48,11 +48,11 @@ module Papercall
|
|
48
48
|
private
|
49
49
|
|
50
50
|
def highlyRated?(submission)
|
51
|
-
submission[
|
51
|
+
submission['rating'] >= 75 && review_complete?(submission)
|
52
52
|
end
|
53
53
|
|
54
54
|
def lowRated?(submission)
|
55
|
-
submission[
|
55
|
+
submission['rating'] <= 25 && review_complete?(submission)
|
56
56
|
end
|
57
57
|
|
58
58
|
def maybe?(submission)
|
@@ -60,23 +60,23 @@ module Papercall
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def review_complete?(submission)
|
63
|
-
submission[
|
63
|
+
submission['ratings'].size >= 3
|
64
64
|
end
|
65
65
|
|
66
66
|
def accepted?(submission)
|
67
|
-
submission[
|
67
|
+
submission['state'] == 'accepted'
|
68
68
|
end
|
69
69
|
|
70
70
|
def rejected?(submission)
|
71
|
-
submission[
|
71
|
+
submission['state'] == 'rejected'
|
72
72
|
end
|
73
73
|
|
74
74
|
def waitlisted?(submission)
|
75
|
-
submission[
|
75
|
+
submission['state'] == 'waitlist'
|
76
76
|
end
|
77
77
|
|
78
78
|
def confirmed?(submission)
|
79
|
-
accepted?(submission) && submission[
|
79
|
+
accepted?(submission) && submission['confirmed'] == true
|
80
80
|
end
|
81
81
|
|
82
82
|
def summary
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'rest-client'
|
3
|
+
require 'parallel'
|
3
4
|
|
4
5
|
module Papercall
|
5
6
|
#Fetches submissions from Papercall REST API
|
@@ -25,43 +26,49 @@ module Papercall
|
|
25
26
|
RestClient::Request.execute(method: :get,
|
26
27
|
url: papercall_url,
|
27
28
|
headers: @auth_hash) # :timeout => 120
|
28
|
-
|
29
|
+
if raw_results
|
30
|
+
JSON.parse raw_results
|
31
|
+
else
|
32
|
+
[]
|
33
|
+
end
|
29
34
|
end
|
30
35
|
|
31
36
|
def fetch(*states)
|
32
|
-
states = [[
|
37
|
+
states = [%i[submitted accepted rejected waitlist declined]] if states == [[:all]]
|
33
38
|
states.flatten.each do |state|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
end
|
39
|
+
next unless state
|
40
|
+
start_time = Time.now
|
41
|
+
print "Fetching #{state} submissions from PaperCall API..."
|
42
|
+
instance_variable_set("@#{state}", papercall(submission_url(state.to_s)))
|
43
|
+
puts "finished in #{Time.now - start_time} seconds."
|
40
44
|
end
|
41
45
|
fetch_ratings
|
42
46
|
fetch_feedback
|
43
47
|
end
|
44
48
|
|
45
49
|
def fetch_ratings
|
46
|
-
|
50
|
+
start_time = Time.now
|
47
51
|
print "Fetching ratings for all submissions from Papercall API..."
|
48
|
-
|
52
|
+
|
53
|
+
Parallel.each(analysis, in_threads: 8) do |submission|
|
49
54
|
unless submission['ratings']
|
50
55
|
ratings_url = "#{SUBMISSIONS_URL}/#{submission['id']}/ratings"
|
51
56
|
submission['ratings'] = papercall(ratings_url)
|
52
57
|
end
|
58
|
+
submission['ratings'] = [] unless submission['ratings']
|
53
59
|
end
|
54
|
-
puts "finished in #{Time.now -
|
60
|
+
puts "finished in #{Time.now - start_time} seconds."
|
55
61
|
end
|
56
62
|
|
57
63
|
def fetch_feedback
|
58
64
|
startTime = Time.now
|
59
65
|
print "Fetching feedback for all submissions from Papercall API..."
|
60
|
-
|
66
|
+
Parallel.each(analysis, in_threads: 8) do |submission|
|
61
67
|
unless submission['feedback']
|
62
68
|
feedback_url = "#{SUBMISSIONS_URL}/#{submission['id']}/feedback"
|
63
69
|
submission['feedback'] = papercall(feedback_url)
|
64
70
|
end
|
71
|
+
submission['feedback'] = [] unless submission['feedback']
|
65
72
|
end
|
66
73
|
puts "finished in #{Time.now - startTime} seconds."
|
67
74
|
end
|
data/lib/papercall/version.rb
CHANGED
data/papercall.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: papercall
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jørn Ølmheim
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -176,6 +176,20 @@ dependencies:
|
|
176
176
|
- - "~>"
|
177
177
|
- !ruby/object:Gem::Version
|
178
178
|
version: 0.9.1
|
179
|
+
- !ruby/object:Gem::Dependency
|
180
|
+
name: parallel
|
181
|
+
requirement: !ruby/object:Gem::Requirement
|
182
|
+
requirements:
|
183
|
+
- - "~>"
|
184
|
+
- !ruby/object:Gem::Version
|
185
|
+
version: 1.12.1
|
186
|
+
type: :runtime
|
187
|
+
prerelease: false
|
188
|
+
version_requirements: !ruby/object:Gem::Requirement
|
189
|
+
requirements:
|
190
|
+
- - "~>"
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
version: 1.12.1
|
179
193
|
description: Small client library for the PaperCall API. With some analytics for the
|
180
194
|
submissions.
|
181
195
|
email:
|
@@ -225,7 +239,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
225
239
|
version: '0'
|
226
240
|
requirements: []
|
227
241
|
rubyforge_project:
|
228
|
-
rubygems_version: 2.6.
|
242
|
+
rubygems_version: 2.6.14
|
229
243
|
signing_key:
|
230
244
|
specification_version: 4
|
231
245
|
summary: Small client library for the PaperCall API
|