Commit 1bf68a013766fd06c4e671b25994fd08f8b54763
1 parent
bc10fdca
Exists in
master
and in
1 other branch
add valid field to CSV output of votes and non-votes
Showing
2 changed files
with
14 additions
and
6 deletions
Show diff stats
app/models/question.rb
... | ... | @@ -510,14 +510,14 @@ class Question < ActiveRecord::Base |
510 | 510 | when 'votes' |
511 | 511 | outfile = "ideamarketplace_#{self.id}_votes.csv" |
512 | 512 | |
513 | - headers = ['Vote ID', 'Session ID', 'Question ID','Winner ID', 'Winner Text', 'Loser ID', 'Loser Text', 'Prompt ID', 'Left Choice ID', 'Right Choice ID', 'Created at', 'Updated at', 'Appearance ID', 'Response Time (s)', 'Missing Response Time Explanation', 'Session Identifier'] | |
513 | + headers = ['Vote ID', 'Session ID', 'Question ID','Winner ID', 'Winner Text', 'Loser ID', 'Loser Text', 'Prompt ID', 'Left Choice ID', 'Right Choice ID', 'Created at', 'Updated at', 'Appearance ID', 'Response Time (s)', 'Missing Response Time Explanation', 'Session Identifier', 'Valid'] | |
514 | 514 | |
515 | 515 | when 'ideas' |
516 | 516 | outfile = "ideamarketplace_#{self.id}_ideas.csv" |
517 | 517 | headers = ['Ideamarketplace ID','Idea ID', 'Idea Text', 'Wins', 'Losses', 'Times involved in Cant Decide', 'Score', 'User Submitted', 'Session ID', 'Created at', 'Last Activity', 'Active', 'Appearances on Left', 'Appearances on Right'] |
518 | 518 | when 'non_votes' |
519 | 519 | outfile = "ideamarketplace_#{self.id}_non_votes.csv" |
520 | - headers = ['Record Type', 'Record ID', 'Session ID', 'Question ID','Left Choice ID', 'Left Choice Text', 'Right Choice ID', 'Right Choice Text', 'Prompt ID', 'Appearance ID', 'Reason', 'Created at', 'Updated at', 'Response Time (s)', 'Missing Response Time Explanation', 'Session Identifier'] | |
520 | + headers = ['Record Type', 'Record ID', 'Session ID', 'Question ID','Left Choice ID', 'Left Choice Text', 'Right Choice ID', 'Right Choice Text', 'Prompt ID', 'Appearance ID', 'Reason', 'Created at', 'Updated at', 'Response Time (s)', 'Missing Response Time Explanation', 'Session Identifier', 'Valid'] | |
521 | 521 | else |
522 | 522 | raise "Unsupported export type: #{type}" |
523 | 523 | end |
... | ... | @@ -530,7 +530,8 @@ class Question < ActiveRecord::Base |
530 | 530 | case type |
531 | 531 | when 'votes' |
532 | 532 | |
533 | - self.votes.find_each(:include => [:prompt, :choice, :loser_choice, :voter]) do |v| | |
533 | + Vote.find_each_without_default_scope(:conditions => {:question_id => self}, :include => [:prompt, :choice, :loser_choice, :voter]) do |v| | |
534 | + valid = v.valid_record ? "TRUE" : "FALSE" | |
534 | 535 | prompt = v.prompt |
535 | 536 | # these may not exist |
536 | 537 | loser_data = v.loser_choice.nil? ? "" : v.loser_choice.data.strip |
... | ... | @@ -541,7 +542,7 @@ class Question < ActiveRecord::Base |
541 | 542 | |
542 | 543 | csv << [ v.id, v.voter_id, v.question_id, v.choice_id, v.choice.data.strip, v.loser_choice_id, loser_data, |
543 | 544 | v.prompt_id, left_id, right_id, v.created_at, v.updated_at, v.appearance_id, |
544 | - time_viewed, v.missing_response_time_exp , v.voter.identifier] | |
545 | + time_viewed, v.missing_response_time_exp , v.voter.identifier, valid] | |
545 | 546 | end |
546 | 547 | |
547 | 548 | when 'ideas' |
... | ... | @@ -568,14 +569,15 @@ class Question < ActiveRecord::Base |
568 | 569 | if a.answerable.class == Skip |
569 | 570 | # If this appearance belongs to a skip, show information on the skip instead |
570 | 571 | s = a.answerable |
572 | + valid = s.valid_record ? 'TRUE' : 'FALSE' | |
571 | 573 | time_viewed = s.time_viewed.nil? ? "NA": s.time_viewed.to_f / 1000.0 |
572 | 574 | prompt = s.prompt |
573 | - csv << [ "Skip", s.id, s.skipper_id, s.question_id, s.prompt.left_choice.id, s.prompt.left_choice.data.strip, s.prompt.right_choice.id, s.prompt.right_choice.data.strip, s.prompt_id, s.appearance_id, s.skip_reason, s.created_at, s.updated_at, time_viewed , s.missing_response_time_exp, s.skipper.identifier] | |
575 | + csv << [ "Skip", s.id, s.skipper_id, s.question_id, s.prompt.left_choice.id, s.prompt.left_choice.data.strip, s.prompt.right_choice.id, s.prompt.right_choice.data.strip, s.prompt_id, s.appearance_id, s.skip_reason, s.created_at, s.updated_at, time_viewed , s.missing_response_time_exp, s.skipper.identifier,valid] | |
574 | 576 | |
575 | 577 | else |
576 | 578 | # If no skip and no vote, this is an orphaned appearance |
577 | 579 | prompt = a.prompt |
578 | - csv << [ "Orphaned Appearance", a.id, a.voter_id, a.question_id, a.prompt.left_choice.id, a.prompt.left_choice.data.strip, a.prompt.right_choice.id, a.prompt.right_choice.data.strip, a.prompt_id, 'N/A', 'N/A', a.created_at, a.updated_at, 'N/A', '', a.voter.identifier] | |
580 | + csv << [ "Orphaned Appearance", a.id, a.voter_id, a.question_id, a.prompt.left_choice.id, a.prompt.left_choice.data.strip, a.prompt.right_choice.id, a.prompt.right_choice.data.strip, a.prompt_id, 'N/A', 'N/A', a.created_at, a.updated_at, 'N/A', '', a.voter.identifier, 'N/A'] | |
579 | 581 | end |
580 | 582 | end |
581 | 583 | end | ... | ... |
app/models/vote.rb
... | ... | @@ -31,6 +31,12 @@ class Vote < ActiveRecord::Base |
31 | 31 | end |
32 | 32 | end |
33 | 33 | |
34 | + def self.find_each_without_default_scope(*args, &block) | |
35 | + with_exclusive_scope() do | |
36 | + find_each(*args, &block) | |
37 | + end | |
38 | + end | |
39 | + | |
34 | 40 | def update_winner_choice |
35 | 41 | choice.reload # make sure we're using updated counter values |
36 | 42 | choice.compute_score! | ... | ... |