from otree.api import * import pandas as pd import math doc = """ Your app description """ class C(BaseConstants): NAME_IN_URL = 'Codecheck' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 class Subsession(BaseSubsession): pass def creating_session(subsession): session = subsession.session class Group(BaseGroup): pass class Player(BasePlayer): plcode = models.StringField() def FirstFunction(Player): vouchers = pd.read_csv('codecheck/_static/global/vouchercodes.csv') vouchers.columns = vouchers.columns.str.replace('.', '_') Player.session.vars['vouchers'] = vouchers Player.session.vars['codes_all'] = vouchers['Introduction_1_player_paymentid'].tolist() def Ccheck(Player): if Player.plcode in Player.session.vars['codes_all']: Player.participant.vars['tvuj_kod'] = Player.plcode return True else: return False # PAGES class MyPage(Page): @staticmethod def live_method(player, data): from datetime import datetime, timedelta now = datetime.now() this_week = now.strftime("%d. %m.") response = dict() player.plcode = data['t'] if this_week == "28. 06.": if player.Ccheck(): player.participant.vars['All_data'] = player.session.vouchers.loc[player.session.vouchers['Introduction_1_player_paymentid'] == player.plcode] player.participant.vars['typ_vyplaty'] = player.participant.vars['All_data']['payment_1_player_platba'].values[0] player.participant.vars['cislo_ukolu'] = player.participant.vars['All_data']['payment_1_player_chosen_task'].values[0] response.update(t='spravnykod') if player.participant.vars['typ_vyplaty'] == "Risk chart": player.participant.vars['kolik_ukolu'] = player.participant.vars['All_data']['riskcharts_1_player_pocet_ukolu'].values[0] response.update(t='spravnykod') #if player.participant.vars['All_data']['timepreferences_1_player_pocet_ukolu'].values[0] == this_week: if player.participant.vars['typ_vyplaty'] == "Nebyl vybran": response.update(t='spravnykod') if player.participant.vars['typ_vyplaty'] == "offline time prefereces": response.update(t='spravnykod') player.participant.vars['kolik_ukolu'] = player.participant.vars['All_data']['timepreferences_1_player_pocet_ukolu'].values[0] else: response.update(t='chyba') else: response.update(t='chyba') return {player.id_in_group: response} class Results(Page): def before_next_page(player: Player, timeout_happened): player.FirstFunction() page_sequence = [Results, MyPage]