def test(self): vote = Vote.get(94) vote_members = VoteMember.get_by_vote_id(vote.id) total_for, total_against, total_abstain = 0, 0, 0 for vote_member in vote_members: if vote_member.vote_result_code == 'voted for': total_for += 1 elif vote_member.vote_result_code == 'voted against': total_against += 1 elif vote_member.vote_result_code == 'abstain': total_abstain += 1 self.assertEqual(vote.total_for, total_for) self.assertEqual(vote.total_against, total_against) self.assertEqual(vote.total_abstain, total_abstain) self.assertTrue(isinstance(vote_member.member_id, int))
def test(self): vote = Vote.get(94) vote_members = VoteMember.get_by_vote_id(vote.id) total_for, total_against, total_abstain = 0, 0, 0 for vote_member in vote_members: if vote_member.vote_result_code == "voted for": total_for += 1 elif vote_member.vote_result_code == "voted against": total_against += 1 elif vote_member.vote_result_code == "abstain": total_abstain += 1 self.assertEqual(vote.total_for, total_for) self.assertEqual(vote.total_against, total_against) self.assertEqual(vote.total_abstain, total_abstain) self.assertTrue(isinstance(vote_member.member_id, int))
def _validate_vote_pages(self, out, pages, skip_to_vote_id, try_to_fix): writer = csv.writer(out) writer.writerow(['knesset vote id', 'open knesset vote id', 'error']) for page in pages: self._log_info('downloading page %s' % page) votes = DataserviceVote.get_page(order_by=('id', 'asc'), page_num=page) self._log_info('downloaded %s votes' % len(votes)) if len(votes) < 1: self._log_warn('no votes in the page') else: self._log_info(' first vote date: %s' % votes[0].datetime) for vote in votes: if not skip_to_vote_id or int( vote.id) >= int(skip_to_vote_id): self._log_info('validating vote %s' % vote.id) self._validate_vote(vote, writer, fix=try_to_fix)
def _handle_noargs(self, **options): if options.get('createvotesrcid'): src_ids = [int(i) for i in options['createvotesrcid'].split(',')] self._log_info('downloading %s votes' % len(src_ids)) dataservice_votes = [] for src_id in src_ids: self._log_info('downloading vote %s' % src_id) dataservice_vote = DataserviceVote.get(src_id) dataservice_votes.append(dataservice_vote) self._log_info('downloaded all votes data, will create them now') oknesset_votes = [] for dataservice_vote in dataservice_votes: if self._has_existing_object(dataservice_vote): raise VoteScraperException( 'vote already exists in DB: %s' % dataservice_vote.id) else: oknesset_vote = self._create_new_object(dataservice_vote) oknesset_votes.append(oknesset_vote) self._log_info('created vote %s (%s)' % (oknesset_vote, oknesset_vote.pk)) self._log_info('done, created %s votes' % len(oknesset_votes)) elif options.get('validatevotepages'): from_page, to_page = [ int(p) for p in options['validatevotepages'].split('-') ] skip_to_vote_id = options.get('validateskipto', None) output_file_name = options.get('validateoutputfile', None) try_to_fix = options.get('validatefix', False) if from_page > to_page: # we support reverse pages as well! pages = reversed(range(to_page, from_page + 1)) else: pages = range(from_page, to_page + 1) if output_file_name: out = open(output_file_name, 'wb') else: out = stdout self._validate_vote_pages(out, pages, skip_to_vote_id, try_to_fix) if output_file_name: out.close() self._log_info('done') else: return super(Command, self)._handle_noargs(**options)
def test(self): res = Vote.get_page() vote = res[5] self.assertTrue(isinstance(vote.datetime, datetime))