def test_user_event_status(client_session): client, session = client_session add_user(session, 'new_user', 'new_user', 'new_user', 'new_user', 'new_user', access_level='user') add_event(session, 'iris', 'iris_new_event', 'new_event', 'starting_kit', '/tmp/databoard_test/submissions', is_public=True) # user signed up, not approved for the event ask_sign_up_team(session, 'iris_new_event', 'new_user') with login_scope(client, 'new_user', 'new_user') as client: rv = client.get('/problems') assert rv.status_code == 200 assert b'user-waiting' in rv.data assert b'user-signed' not in rv.data # user signed up and approved for the event sign_up_team(session, 'iris_new_event', 'new_user') with login_scope(client, 'new_user', 'new_user') as client: rv = client.get('/problems') assert rv.status_code == 200 assert b'user-signed' in rv.data assert b'user-waiting' not in rv.data
def test_approve_sign_up_for_event(client_session): client, session = client_session with login_scope(client, 'test_iris_admin', 'test') as client: # check the redirection if the user or the event does not exist rv = client.get("/events/xxx/sign_up/test_user") session.commit() assert rv.status_code == 302 assert rv.location == "http://localhost/problems" with client.session_transaction() as cs: flash_message = dict(cs['_flashes']) assert flash_message['message'] == 'No event xxx or no user test_user' rv = client.get("/events/iris_test/sign_up/xxxx") session.commit() assert rv.status_code == 302 assert rv.location == "http://localhost/problems" with client.session_transaction() as cs: flash_message = dict(cs['_flashes']) assert flash_message['message'] == 'No event iris_test or no user xxxx' add_user(session, 'zz', 'zz', 'zz', 'zz', 'zz', access_level='user') _, _, event_team = ask_sign_up_team(session, 'iris_test', 'zz') assert not event_team.approved rv = client.get('/events/iris_test/sign_up/zz') assert rv.status_code == 302 assert rv.location == "http://localhost/problems" session.commit() event_team = get_event_team_by_name(session, 'iris_test', 'zz') assert event_team.approved with client.session_transaction() as cs: flash_message = dict(cs['_flashes']) assert "is signed up for Event" in flash_message['Successful sign-up']
def test_ask_sign_up_team(session_scope_function): event_name, username = '******', 'test_user' ask_sign_up_team(session_scope_function, event_name, username) event_team = session_scope_function.query(EventTeam).all() assert len(event_team) == 1 event_team = event_team[0] assert event_team.event.name == event_name assert event_team.team.name == username assert event_team.is_active is True assert event_team.last_submission_name is None current_datetime = datetime.datetime.now() assert event_team.signup_timestamp.year == current_datetime.year assert event_team.signup_timestamp.month == current_datetime.month assert event_team.signup_timestamp.day == current_datetime.day assert event_team.approved is False
def sign_up_for_event(event_name): """Landing page to sign-up to a specific RAMP event. Parameters ---------- event_name : str The name of the event. """ event = get_event(db.session, event_name) if not is_accessible_event(db.session, event_name, flask_login.current_user.name): return redirect_to_user('{}: no event named "{}"' .format(flask_login.current_user.firstname, event_name)) if app.config['TRACK_USER_INTERACTION']: add_user_interaction(db.session, interaction='signing up at event', user=flask_login.current_user, event=event) ask_sign_up_team(db.session, event.name, flask_login.current_user.name) if event.is_controled_signup: admin_users = User.query.filter_by(access_level='admin') for admin in admin_users: subject = ('Request to sign-up {} to RAMP event {}' .format(event.name, flask_login.current_user.name)) body = body_formatter_user(flask_login.current_user) url_approve = ('http://{}/events/{}/sign_up/{}' .format( app.config['DOMAIN_NAME'], event.name, flask_login.current_user.name )) body += ('Click on this link to approve the sign-up request: {}' .format(url_approve)) send_mail(admin, subject, body) return redirect_to_user("Sign-up request is sent to event admins.", is_error=False, category='Request sent') sign_up_team(db.session, event.name, flask_login.current_user.name) return redirect_to_sandbox( event, '{} is signed up for {}.' .format(flask_login.current_user.firstname, event), is_error=False, category='Successful sign-up' )
def test_approve_users_remove(client_session): client, session = client_session # create 2 new users add_user(session, 'xx', 'xx', 'xx', 'xx', 'xx', access_level='user') add_user(session, 'yy', 'yy', 'yy', 'yy', 'yy', access_level='asked') # ask for sign up for an event for the first user _, _, event_team = ask_sign_up_team(session, 'iris_test', 'xx') with login_scope(client, 'test_iris_admin', 'test') as client: # GET check that we get all new user to be approved rv = client.get('/approve_users') assert rv.status_code == 200 # line for user approval assert b'yy: yy yy - yy' in rv.data # line for the event approval assert b'iris_test - xx' # POST check that we are able to approve a user and event data = ImmutableMultiDict([('submit_button', 'Remove!'), ('approve_users', 'yy'), ('approve_event_teams', str(event_team.id)) ]) rv = client.post('/approve_users', data=data) assert rv.status_code == 302 assert rv.location == 'http://localhost/problems' # ensure that the previous change have been committed within our # session session.commit() user = get_user_by_name(session, 'yy') assert user is None event_team = get_event_team_by_name(session, 'iris_test', 'xx') assert event_team is None with client.session_transaction() as cs: flash_message = dict(cs['_flashes']) print(flash_message) assert re.match( r"Removed users:\nyy\nRemoved event_team:\n" r"Event\(iris_test\)/Team\(.*xx.*\)\n", flash_message['Removed users'])