def test_is_election_admin(self): """ Test the is_election_admin function. """ app = flask.Flask('fedora_elections') with app.test_request_context(): flask.g.fas_user = None self.assertFalse( fedora_elections.is_election_admin( flask.g.fas_user, 1) ) flask.g.fas_user = FakeUser() self.assertFalse( fedora_elections.is_election_admin( flask.g.fas_user, 1) ) flask.g.fas_user = FakeUser( fedora_elections.APP.config['FEDORA_ELECTIONS_ADMIN_GROUP']) self.assertTrue(fedora_elections.is_election_admin( flask.g.fas_user, 1)) self.setup_db() with app.test_request_context(): flask.g.fas_user = FakeUser('testers') # This is user is not an admin for election #1 self.assertFalse( fedora_elections.is_election_admin( flask.g.fas_user, 1) ) # This is user is an admin for election #2 self.assertTrue( fedora_elections.is_election_admin( flask.g.fas_user, 2) )
def test_is_election_admin(self): """ Test the is_election_admin function. """ app = flask.Flask('fedora_elections') with app.test_request_context(): flask.g.fas_user = None self.assertFalse( fedora_elections.is_election_admin(flask.g.fas_user, 1)) flask.g.fas_user = FakeUser() self.assertFalse( fedora_elections.is_election_admin(flask.g.fas_user, 1)) flask.g.fas_user = FakeUser( fedora_elections.APP.config['FEDORA_ELECTIONS_ADMIN_GROUP']) self.assertTrue( fedora_elections.is_election_admin(flask.g.fas_user, 1)) self.setup_db() with app.test_request_context(): flask.g.fas_user = FakeUser('testers') # This is user is not an admin for election #1 self.assertFalse( fedora_elections.is_election_admin(flask.g.fas_user, 1)) # This is user is an admin for election #2 self.assertTrue( fedora_elections.is_election_admin(flask.g.fas_user, 2))
def election_results(election_alias): election = get_valid_election(election_alias, ended=True) if not isinstance(election, models.Election): # pragma: no cover return election elif election.embargoed: if is_authenticated() and ( is_admin(flask.g.fas_user) or is_election_admin(flask.g.fas_user, election.id)): flask.flash("You are only seeing this page because you are " "an admin.", "warning") flask.flash("The results for this election are currently " "embargoed pending formal announcement.", "warning") else: flask.flash("We are sorry. The results for this election " "cannot be viewed because they are currently " "embargoed pending formal announcement.") return safe_redirect_back() if is_authenticated() and ( is_admin(flask.g.fas_user) or is_election_admin(flask.g.fas_user, election.id)): flask.flash( "Check out the <a href='%s'>Text version</a> " "to send the annoucement" % flask.url_for( 'election_results_text', election_alias=election.alias) ) usernamemap = build_name_map(election) stats = models.Vote.get_election_stats(SESSION, election.id) cnt = 1 evolution_label = [] evolution_data = [] for delta in range((election.end_date - election.start_date).days + 1): day = ( election.start_date + timedelta(days=delta) ).strftime('%d-%m-%Y') evolution_label.append([cnt, day]) evolution_data.append([cnt, stats['vote_timestamps'].count(day)]) cnt += 1 return flask.render_template( 'results.html', election=election, usernamemap=usernamemap, stats=stats, evolution_label=evolution_label, evolution_data=evolution_data, )
def test_is_election_admin(self): """ Test the is_election_admin function. """ app = flask.Flask('fedora_elections') with app.test_request_context(): flask.g.fas_user = None self.assertFalse( fedora_elections.is_election_admin(flask.g.fas_user, 1)) flask.g.oidc_id_token = 'foobar' flask.g.fas_user = FakeUser() self.assertFalse( fedora_elections.is_election_admin(flask.g.fas_user, 1)) with patch('fedora_elections.OIDC.user_getfield', MagicMock(return_value=['elections'])): flask.g.fas_user = FakeUser( fedora_elections.APP.config['FEDORA_ELECTIONS_ADMIN_GROUP'] ) self.assertTrue( fedora_elections.is_election_admin(flask.g.fas_user, 1)) self.setup_db() with app.test_request_context(): flask.g.fas_user = FakeUser('testers') flask.g.oidc_id_token = 'foobar' # This is user is not an admin for election #1 with patch('fedora_elections.OIDC.user_getfield', MagicMock(return_value=['foobar'])): self.assertFalse( fedora_elections.is_election_admin(flask.g.fas_user, 1)) # This is user is an admin for election #2 self.assertTrue( fedora_elections.is_election_admin(flask.g.fas_user, 2))
def election_results_text(election_alias): election = get_valid_election(election_alias, ended=True) if not isinstance(election, models.Election): # pragma: no cover return election if not (is_authenticated() and (is_admin(flask.g.fas_user) or is_election_admin(flask.g.fas_user, election.id))): flask.flash( "The text results are only available to the admins", "error") return safe_redirect_back() usernamemap = build_name_map(election) stats = models.Vote.get_election_stats(SESSION, election.id) return flask.render_template( 'results_text.html', election=election, usernamemap=usernamemap, stats=stats, )
def election_results_text(election_alias): election = get_valid_election(election_alias, ended=True) if not isinstance(election, models.Election): # pragma: no cover return election if not (is_authenticated() and (is_admin(flask.g.fas_user) or is_election_admin(flask.g.fas_user, election.id))): flask.flash("The text results are only available to the admins", "error") return safe_redirect_back() usernamemap = build_name_map(election) stats = models.Vote.get_election_stats(SESSION, election.id) return flask.render_template( 'results_text.html', election=election, usernamemap=usernamemap, stats=stats, )