from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage import settings from .models import Constants import time import boto3 import pandas as pd import numpy as np class Consent(Page): form_model = 'player' form_fields = ['name','signing_date'] # form_fields = ['username','machine'] live_method = 'live_method' # timeout_seconds = 120 def js_vars(self): return dict( data_received=self.player.data_received, ) class Info(Page): live_method = 'live_method' # timeout_seconds = 120 def js_vars(self): if self.participant.label is None: self.player.username = '' else: self.player.username = self.participant.label[1:-2] num = Constants.num_exercises groups = np.zeros(num,dtype=int) roles = np.zeros(num,dtype=int) role1s = ['' for i in range(num)] role2s = ['' for i in range(num)] role3s = ['' for i in range(num)] for i in range(num): data = pd.read_csv('negotiation_groups/matching%d.csv'%(i+1)) temp = data[data.role1==self.player.username] if len(temp)==1: groups[i] = temp.group role1s[i] = temp.role1.values[0] role2s[i] = temp.role2.values[0] if ~temp.role3.isna().values[0]: role3s[i] = temp.role3.values[0] roles[i] = 1 else: temp = data[data.role2==self.player.username] if len(temp) == 1: groups[i] = temp.group role1s[i] = temp.role1.values[0] role2s[i] = temp.role2.values[0] if ~temp.role3.isna().values[0]: role3s[i] = temp.role3.values[0] roles[i] = 2 else: temp = data[data.role3==self.player.username] if len(temp) == 1: groups[i] = temp.group role1s[i] = temp.role1.values[0] role2s[i] = temp.role2.values[0] if ~temp.role3.isna().values[0]: role3s[i] = temp.role3.values[0] roles[i] = 3 # print(self.player, roles,type(roles),type(list(roles))) return dict( data_received=self.player.data_received, starting_times = self.session.config.get('starting_times',['' for i in range(Constants.num_exercises)]), ending_times=self.session.config.get('ending_times', ['' for i in range(Constants.num_exercises)]), # roles= [1,2,2,1], roles= [int(role) for role in roles], ) def vars_for_template(self): self.player.username = self.participant.label[1:-2] num = Constants.num_exercises groups = np.zeros(num,dtype=int) roles = np.zeros(num,dtype=int) role1s = ['' for i in range(num)] role2s = ['' for i in range(num)] role3s = ['' for i in range(num)] starting_times = self.session.config.get('starting_times',['' for i in range(num)]) ending_times = self.session.config.get('ending_times',['' for i in range(num)]) raffle_info = pd.read_csv('negotiation_groups/experiment_raffle.csv') columns = ['experiment_payoff','raffle_first','raffle_last'] if np.isin(self.player.username,raffle_info.username): raffles = raffle_info.loc[raffle_info.username==self.player.username,columns].values[0] else: raffles = np.zeros(len(columns)).astype(int) participation = pd.read_csv('negotiation_groups/participation.csv') activities = list(participation.columns[-2:-1]) activities.extend(participation.columns[2:-2]) if np.isin(self.player.username,participation.username): scores = participation.loc[participation.username==self.player.username,activities].values[0] passed = participation.loc[participation.username==self.player.username,'TotalPoints'].values[0]>=260 else: scores = np.zeros(len(activities)).astype(int) passed = False for i in range(num): data = pd.read_csv('negotiation_groups/matching%d.csv'%(i+1)) temp = data[data.role1==self.player.username] if len(temp)==1: groups[i] = temp.group role1s[i] = temp.role1.values[0] role2s[i] = temp.role2.values[0] if ~temp.role3.isna().values[0]: role3s[i] = temp.role3.values[0] roles[i] = 1 else: temp = data[data.role2==self.player.username] if len(temp) == 1: groups[i] = temp.group role1s[i] = temp.role1.values[0] role2s[i] = temp.role2.values[0] if ~temp.role3.isna().values[0]: role3s[i] = temp.role3.values[0] roles[i] = 2 else: temp = data[data.role3==self.player.username] if len(temp) == 1: groups[i] = temp.group role1s[i] = temp.role1.values[0] role2s[i] = temp.role2.values[0] if ~temp.role3.isna().values[0]: role3s[i] = temp.role3.values[0] roles[i] = 3 return { 'groups': groups, 'roles': roles, 'role1s': role1s, 'role2s': role2s, 'role3s': role3s, 'starting_times': starting_times, 'ending_times': ending_times, 'activities': activities, 'scores': scores, 'raffles':raffles, 'passed': passed, } page_sequence = [ Consent, Info, ]