from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) import random from django import forms from django.forms.widgets import NumberInput from django.db import models as djmodels author = 'Jian S' doc = """ non-exclusive group contest """ class Constants(BaseConstants): name_in_url = 'neg_contest_withp' players_per_group = None players_per_round = 12 num_rounds = 3 id_in_group = (1,2,3,4,5,6,7,8,9,10,11,12) endowment = c(1000) v = c(1000) class Subsession(BaseSubsession): def creating_session(self): print ('in creating session') class Group(BaseGroup): def set_payoffs(self): #UW = self.get_player_by_role('UW') #UP = self.get_player_by_role('UP') #RW = self.get_player_by_role('RW') #RP = self.get_player_by_role('RP') for p in self.get_players(): p.cost = 10*((p.tokens)**2)/2 p.token_U_total = self.get_player_by_id(1).token_U + self.get_player_by_id(2).token_U+self.get_player_by_id(5).token_U+self.get_player_by_id(6).token_U + self.get_player_by_id(9).token_U + self.get_player_by_id(10).token_U #sum([o.token_U for o in self.get_player_by_id in (1,2,5,6,9,10)]) p.token_R_total = self.get_player_by_id(3).token_R + self.get_player_by_id(4).token_R+self.get_player_by_id(7).token_R+self.get_player_by_id(8).token_R + self.get_player_by_id(11).token_R + self.get_player_by_id(12).token_R #sum([o.token_R for o in self.get_player_by_id in (3,4,7,8,11,12)]) p.token_W_total = self.get_player_by_id(1).token_W + self.get_player_by_id(3).token_W + self.get_player_by_id(5).token_W+self.get_player_by_id(7).token_W + self.get_player_by_id(9).token_W + self.get_player_by_id(11).token_W #sum([o.token_W for o in self.get_player_by_id in (1,3,5,7,9,11)]) p.token_P_total = self.get_player_by_id(2).token_P + self.get_player_by_id(4).token_P + self.get_player_by_id(6).token_P+self.get_player_by_id(8).token_P + self.get_player_by_id(10).token_P + self.get_player_by_id(12).token_P #sum([o.token_P for o in self.get_player_by_id in (2,4,6,8,10,12)]) p.token_total = p.token_U_total + p.token_R_total + p.token_W_total + p.token_P_total if p.token_total == 0: for player in self.get_players(): player.prob_U = 0 player.prob_R = 0 player.prob_P = 0 player.prob_W = 0 else: p.prob_U = p.token_U_total / p.token_total p.prob_R = p.token_R_total / p.token_total p.prob_W = p.token_W_total / p.token_total p.prob_P = p.token_P_total / p.token_total if p.token_total != 0: z = random.random() while (z == 1): z = random.random() for player in self.get_players(): if 0 <= z and z < player.prob_U: player.U_win = True player.R_win = False player.W_win = False player.P_win = False elif player.prob_U <= z and z < player.prob_U + player.prob_R: player.R_win = True player.U_win = False player.W_win = False player.P_win = False elif player.prob_U + player.prob_R <= z and z < player.prob_U + player.prob_R + player.prob_W: player.W_win = True player.U_win = False player.R_win = False player.P_win = False elif player.prob_U + player.prob_R + player.prob_W <= z and z < 1: player.P_win = True player.U_win = False player.W_win = False player.R_win = False else: for p in self.get_players(): p.U_win = False p.R_win = False p.W_win = False p.P_win = False for p in self.get_players(): if p.U_win: if p.id_in_group in (1,2,5,6,9,10): #for p in self.id_in_group in (1,2,5,6,9,10): p.round_earning = Constants.v + Constants.endowment - p.cost elif p.id_in_group in (3,4,7,8,11,12): p.round_earning = Constants.endowment - p.cost elif p.R_win: if p.id_in_group in (3,4,7,8,11,12): p.round_earning = Constants.v + Constants.endowment - p.cost elif p.id_in_group in (1,2,5,6,9,10): p.round_earning = Constants.endowment - p.cost elif p.W_win: if p.id_in_group in (1,3,5,7,9,11): p.round_earning = Constants.v + Constants.endowment - p.cost elif p.id_in_group in (2,4,6,8,10,12): p.round_earning = Constants.endowment - p.cost elif p.P_win: if p.id_in_group in (2,4,6,8,10,12): p.round_earning = Constants.v + Constants.endowment - p.cost elif p.id_in_group in (1,3,5,7,9,11): p.round_earning = Constants.endowment - p.cost else: for p in self.get_players(): p.round_earning = Constants.endowment def set_punishment_contribution(self): for p in self.get_players(): if p.id_in_group == 1: p.contribution1 = self.get_player_by_id(2).token_U p.contribution2 = self.get_player_by_id(5).token_U p.contribution3 = self.get_player_by_id(6).token_U p.contribution4 = self.get_player_by_id(9).token_U p.contribution5 = self.get_player_by_id(10).token_U p.contribution6 = self.get_player_by_id(3).token_W p.contribution7 = self.get_player_by_id(5).token_W p.contribution8 = self.get_player_by_id(6).token_W p.contribution9 = self.get_player_by_id(9).token_W p.contribution10 = self.get_player_by_id(11).token_W elif p.id_in_group == 2: p.contribution1 = self.get_player_by_id(1).token_U p.contribution2 = self.get_player_by_id(5).token_U p.contribution3 = self.get_player_by_id(6).token_U p.contribution4 = self.get_player_by_id(9).token_U p.contribution5 = self.get_player_by_id(10).token_U p.contribution6 = self.get_player_by_id(4).token_P p.contribution7 = self.get_player_by_id(6).token_P p.contribution8 = self.get_player_by_id(8).token_P p.contribution9 = self.get_player_by_id(10).token_P p.contribution10 = self.get_player_by_id(12).token_P elif p.id_in_group == 3: p.contribution1 = self.get_player_by_id(4).token_R p.contribution2 = self.get_player_by_id(7).token_R p.contribution3 = self.get_player_by_id(8).token_R p.contribution4 = self.get_player_by_id(11).token_R p.contribution5 = self.get_player_by_id(12).token_R p.contribution6 = self.get_player_by_id(1).token_W p.contribution7 = self.get_player_by_id(5).token_W p.contribution8 = self.get_player_by_id(7).token_W p.contribution9 = self.get_player_by_id(9).token_W p.contribution10 = self.get_player_by_id(11).token_W elif p.id_in_group == 4: p.contribution1 = self.get_player_by_id(3).token_R p.contribution2 = self.get_player_by_id(7).token_R p.contribution3 = self.get_player_by_id(8).token_R p.contribution4 = self.get_player_by_id(11).token_R p.contribution5 = self.get_player_by_id(12).token_R p.contribution6 = self.get_player_by_id(2).token_P p.contribution7 = self.get_player_by_id(6).token_P p.contribution8 = self.get_player_by_id(8).token_P p.contribution9 = self.get_player_by_id(10).token_P p.contribution10 = self.get_player_by_id(12).token_P elif p.id_in_group == 5: p.contribution1 = self.get_player_by_id(1).token_U p.contribution2 = self.get_player_by_id(2).token_U p.contribution3 = self.get_player_by_id(6).token_U p.contribution4 = self.get_player_by_id(9).token_U p.contribution5 = self.get_player_by_id(10).token_U p.contribution6 = self.get_player_by_id(1).token_W p.contribution7 = self.get_player_by_id(3).token_W p.contribution8 = self.get_player_by_id(7).token_W p.contribution9 = self.get_player_by_id(9).token_W p.contribution10 = self.get_player_by_id(11).token_W elif p.id_in_group == 6: p.contribution1 = self.get_player_by_id(1).token_U p.contribution2 = self.get_player_by_id(2).token_U p.contribution3 = self.get_player_by_id(5).token_U p.contribution4 = self.get_player_by_id(9).token_U p.contribution5 = self.get_player_by_id(10).token_U p.contribution6 = self.get_player_by_id(2).token_P p.contribution7 = self.get_player_by_id(4).token_P p.contribution8 = self.get_player_by_id(8).token_P p.contribution9 = self.get_player_by_id(10).token_P p.contribution10 = self.get_player_by_id(12).token_P elif p.id_in_group == 7: p.contribution1 = self.get_player_by_id(3).token_R p.contribution2 = self.get_player_by_id(4).token_R p.contribution3 = self.get_player_by_id(8).token_R p.contribution4 = self.get_player_by_id(11).token_R p.contribution5 = self.get_player_by_id(12).token_R p.contribution6 = self.get_player_by_id(1).token_W p.contribution7 = self.get_player_by_id(3).token_W p.contribution8 = self.get_player_by_id(5).token_W p.contribution9 = self.get_player_by_id(9).token_W p.contribution10 = self.get_player_by_id(11).token_W elif p.id_in_group == 8: p.contribution1 = self.get_player_by_id(3).token_R p.contribution2 = self.get_player_by_id(4).token_R p.contribution3 = self.get_player_by_id(7).token_R p.contribution4 = self.get_player_by_id(11).token_R p.contribution5 = self.get_player_by_id(12).token_R p.contribution6 = self.get_player_by_id(2).token_P p.contribution7 = self.get_player_by_id(4).token_P p.contribution8 = self.get_player_by_id(6).token_P p.contribution9 = self.get_player_by_id(10).token_P p.contribution10 = self.get_player_by_id(12).token_P elif p.id_in_group == 9: p.contribution1 = self.get_player_by_id(1).token_U p.contribution2 = self.get_player_by_id(2).token_U p.contribution3 = self.get_player_by_id(5).token_U p.contribution4 = self.get_player_by_id(6).token_U p.contribution5 = self.get_player_by_id(10).token_U p.contribution6 = self.get_player_by_id(1).token_W p.contribution7 = self.get_player_by_id(3).token_W p.contribution8 = self.get_player_by_id(5).token_W p.contribution9 = self.get_player_by_id(7).token_W p.contribution10 = self.get_player_by_id(11).token_W elif p.id_in_group == 10: p.contribution1 = self.get_player_by_id(1).token_U p.contribution2 = self.get_player_by_id(2).token_U p.contribution3 = self.get_player_by_id(5).token_U p.contribution4 = self.get_player_by_id(6).token_U p.contribution5 = self.get_player_by_id(9).token_U p.contribution6 = self.get_player_by_id(2).token_P p.contribution7 = self.get_player_by_id(4).token_P p.contribution8 = self.get_player_by_id(6).token_P p.contribution9 = self.get_player_by_id(8).token_P p.contribution10 = self.get_player_by_id(12).token_P elif p.id_in_group == 11: p.contribution1 = self.get_player_by_id(3).token_R p.contribution2 = self.get_player_by_id(4).token_R p.contribution3 = self.get_player_by_id(7).token_R p.contribution4 = self.get_player_by_id(8).token_R p.contribution5 = self.get_player_by_id(12).token_R p.contribution6 = self.get_player_by_id(1).token_W p.contribution7 = self.get_player_by_id(3).token_W p.contribution8 = self.get_player_by_id(5).token_W p.contribution9 = self.get_player_by_id(7).token_W p.contribution10 = self.get_player_by_id(9).token_W elif p.id_in_group == 12: p.contribution1 = self.get_player_by_id(3).token_R p.contribution2 = self.get_player_by_id(4).token_R p.contribution3 = self.get_player_by_id(7).token_R p.contribution4 = self.get_player_by_id(8).token_R p.contribution5 = self.get_player_by_id(11).token_R p.contribution6 = self.get_player_by_id(2).token_P p.contribution7 = self.get_player_by_id(4).token_P p.contribution8 = self.get_player_by_id(6).token_P p.contribution9 = self.get_player_by_id(8).token_P p.contribution10 = self.get_player_by_id(10).token_P def set_punishment_payoff(self): for p in self.get_players(): if p.id_in_group == 1: p.punishment_sent = p.punishment_sent1 + p.punishment_sent2 + p.punishment_sent3 + p.punishment_sent4 + p.punishment_sent5 + p.punishment_sent6 + p.punishment_sent7 + p.punishment_sent8 + p.punishment_sent9 + p.punishment_sent10 p.punishment_received1 = self.get_player_by_id(2).punishment_sent1 + self.get_player_by_id( 5).punishment_sent1 + self.get_player_by_id(6).punishment_sent1 + self.get_player_by_id( 9).punishment_sent1 + self.get_player_by_id(10).punishment_sent1 p.punishment_received2 = self.get_player_by_id(3).punishment_sent6 + self.get_player_by_id( 5).punishment_sent6 + self.get_player_by_id(7).punishment_sent6 + self.get_player_by_id( 9).punishment_sent6 + self.get_player_by_id(11).punishment_sent6 p.payoff = p.round_earning - p.punishment_sent - p.punishment_received1 - p.punishment_received2 elif p.id_in_group == 2: p.punishment_sent = p.punishment_sent1 + p.punishment_sent2 + p.punishment_sent3 + p.punishment_sent4 + p.punishment_sent5 + p.punishment_sent6 + p.punishment_sent7 + p.punishment_sent8 + p.punishment_sent9 + p.punishment_sent10 p.punishment_received1 = self.get_player_by_id(1).punishment_sent1 + self.get_player_by_id( 5).punishment_sent2 + self.get_player_by_id(6).punishment_sent2 + self.get_player_by_id( 9).punishment_sent2 + self.get_player_by_id(10).punishment_sent2 p.punishment_received2 = self.get_player_by_id(4).punishment_sent6 + self.get_player_by_id( 6).punishment_sent6 + self.get_player_by_id(8).punishment_sent6 + self.get_player_by_id( 10).punishment_sent6 + self.get_player_by_id(12).punishment_sent6 p.payoff = p.round_earning - p.punishment_sent - p.punishment_received1 - p.punishment_received2 elif p.id_in_group == 3: p.punishment_sent = p.punishment_sent1 + p.punishment_sent2 + p.punishment_sent3 + p.punishment_sent4 + p.punishment_sent5 + p.punishment_sent6 + p.punishment_sent7 + p.punishment_sent8 + p.punishment_sent9 + p.punishment_sent10 p.punishment_received1 = self.get_player_by_id(4).punishment_sent1 + self.get_player_by_id( 7).punishment_sent1 + self.get_player_by_id(8).punishment_sent1 + self.get_player_by_id( 11).punishment_sent1 + self.get_player_by_id(12).punishment_sent1 p.punishment_received2 = self.get_player_by_id(1).punishment_sent6 + self.get_player_by_id( 5).punishment_sent7 + self.get_player_by_id(7).punishment_sent7 + self.get_player_by_id( 9).punishment_sent7 + self.get_player_by_id(11).punishment_sent7 p.payoff = p.round_earning - p.punishment_sent - p.punishment_received1 - p.punishment_received2 elif p.id_in_group == 4: p.punishment_sent = p.punishment_sent1 + p.punishment_sent2 + p.punishment_sent3 + p.punishment_sent4 + p.punishment_sent5 + p.punishment_sent6 + p.punishment_sent7 + p.punishment_sent8 + p.punishment_sent9 + p.punishment_sent10 p.punishment_received1 = self.get_player_by_id(3).punishment_sent1 + self.get_player_by_id( 7).punishment_sent2 + self.get_player_by_id(8).punishment_sent2 + self.get_player_by_id( 11).punishment_sent2 + self.get_player_by_id(12).punishment_sent2 p.punishment_received2 = self.get_player_by_id(2).punishment_sent6 + self.get_player_by_id( 6).punishment_sent7 + self.get_player_by_id(8).punishment_sent7 + self.get_player_by_id( 10).punishment_sent7 + self.get_player_by_id(12).punishment_sent7 p.payoff = p.round_earning - p.punishment_sent - p.punishment_received1 - p.punishment_received2 elif p.id_in_group == 5: p.punishment_sent = p.punishment_sent1 + p.punishment_sent2 + p.punishment_sent3 + p.punishment_sent4 + p.punishment_sent5 + p.punishment_sent6 + p.punishment_sent7 + p.punishment_sent8 + p.punishment_sent9 + p.punishment_sent10 p.punishment_received1 = self.get_player_by_id(1).punishment_sent2 + self.get_player_by_id( 2).punishment_sent2 + self.get_player_by_id(6).punishment_sent3 + self.get_player_by_id( 9).punishment_sent3 + self.get_player_by_id(10).punishment_sent3 p.punishment_received2 = self.get_player_by_id(1).punishment_sent7 + self.get_player_by_id( 3).punishment_sent7 + self.get_player_by_id(7).punishment_sent8 + self.get_player_by_id( 9).punishment_sent8 + self.get_player_by_id(11).punishment_sent8 p.payoff = p.round_earning - p.punishment_sent - p.punishment_received1 - p.punishment_received2 elif p.id_in_group == 6: p.punishment_sent = p.punishment_sent1 + p.punishment_sent2 + p.punishment_sent3 + p.punishment_sent4 + p.punishment_sent5 + p.punishment_sent6 + p.punishment_sent7 + p.punishment_sent8 + p.punishment_sent9 + p.punishment_sent10 p.punishment_received1 = self.get_player_by_id(1).punishment_sent3 + self.get_player_by_id( 2).punishment_sent3 + self.get_player_by_id(5).punishment_sent3 + self.get_player_by_id( 9).punishment_sent4 + self.get_player_by_id(10).punishment_sent4 p.punishment_received2 = self.get_player_by_id(2).punishment_sent7 + self.get_player_by_id( 4).punishment_sent7 + self.get_player_by_id(8).punishment_sent8 + self.get_player_by_id( 10).punishment_sent8 + self.get_player_by_id(12).punishment_sent8 p.payoff = p.round_earning - p.punishment_sent - p.punishment_received1 - p.punishment_received2 elif p.id_in_group == 7: p.punishment_sent = p.punishment_sent1 + p.punishment_sent2 + p.punishment_sent3 + p.punishment_sent4 + p.punishment_sent5 + p.punishment_sent6 + p.punishment_sent7 + p.punishment_sent8 + p.punishment_sent9 + p.punishment_sent10 p.punishment_received1 = self.get_player_by_id(3).punishment_sent2 + self.get_player_by_id( 4).punishment_sent2 + self.get_player_by_id(8).punishment_sent3 + self.get_player_by_id( 11).punishment_sent3 + self.get_player_by_id(12).punishment_sent3 p.punishment_received2 = self.get_player_by_id(1).punishment_sent8 + self.get_player_by_id( 3).punishment_sent8 + self.get_player_by_id(5).punishment_sent8 + self.get_player_by_id( 9).punishment_sent9 + self.get_player_by_id(11).punishment_sent9 p.payoff = p.round_earning - p.punishment_sent - p.punishment_received1 - p.punishment_received2 elif p.id_in_group == 8: p.punishment_sent = p.punishment_sent1 + p.punishment_sent2 + p.punishment_sent3 + p.punishment_sent4 + p.punishment_sent5 + p.punishment_sent6 + p.punishment_sent7 + p.punishment_sent8 + p.punishment_sent9 + p.punishment_sent10 p.punishment_received1 = self.get_player_by_id(3).punishment_sent3 + self.get_player_by_id( 4).punishment_sent3 + self.get_player_by_id(7).punishment_sent3 + self.get_player_by_id( 11).punishment_sent4 + self.get_player_by_id(12).punishment_sent4 p.punishment_received2 = self.get_player_by_id(2).punishment_sent8 + self.get_player_by_id( 4).punishment_sent8 + self.get_player_by_id(6).punishment_sent8 + self.get_player_by_id( 10).punishment_sent9 + self.get_player_by_id(12).punishment_sent9 p.payoff = p.round_earning - p.punishment_sent - p.punishment_received1 - p.punishment_received2 elif p.id_in_group == 9: p.punishment_sent = p.punishment_sent1 + p.punishment_sent2 + p.punishment_sent3 + p.punishment_sent4 + p.punishment_sent5 + p.punishment_sent6 + p.punishment_sent7 + p.punishment_sent8 + p.punishment_sent9 + p.punishment_sent10 p.punishment_received1 = self.get_player_by_id(1).punishment_sent4 + self.get_player_by_id( 2).punishment_sent4 + self.get_player_by_id(5).punishment_sent4 + self.get_player_by_id( 6).punishment_sent4 + self.get_player_by_id(10).punishment_sent5 p.punishment_received2 = self.get_player_by_id(1).punishment_sent9 + self.get_player_by_id( 3).punishment_sent9 + self.get_player_by_id(5).punishment_sent9 + self.get_player_by_id( 7).punishment_sent9 + self.get_player_by_id(11).punishment_sent10 p.payoff = p.round_earning - p.punishment_sent - p.punishment_received1 - p.punishment_received2 elif p.id_in_group == 10: p.punishment_sent = p.punishment_sent1 + p.punishment_sent2 + p.punishment_sent3 + p.punishment_sent4 + p.punishment_sent5 + p.punishment_sent6 + p.punishment_sent7 + p.punishment_sent8 + p.punishment_sent9 + p.punishment_sent10 p.punishment_received1 = self.get_player_by_id(1).punishment_sent5 + self.get_player_by_id( 2).punishment_sent5 + self.get_player_by_id(5).punishment_sent5 + self.get_player_by_id( 6).punishment_sent5 + self.get_player_by_id(9).punishment_sent5 p.punishment_received2 = self.get_player_by_id(2).punishment_sent9 + self.get_player_by_id( 4).punishment_sent9 + self.get_player_by_id(6).punishment_sent9 + self.get_player_by_id( 8).punishment_sent9 + self.get_player_by_id(12).punishment_sent10 p.payoff = p.round_earning - p.punishment_sent - p.punishment_received1 - p.punishment_received2 elif p.id_in_group == 11: p.punishment_sent = p.punishment_sent1 + p.punishment_sent2 + p.punishment_sent3 + p.punishment_sent4 + p.punishment_sent5 + p.punishment_sent6 + p.punishment_sent7 + p.punishment_sent8 + p.punishment_sent9 + p.punishment_sent10 p.punishment_received1 = self.get_player_by_id(3).punishment_sent4 + self.get_player_by_id( 4).punishment_sent4 + self.get_player_by_id(7).punishment_sent4 + self.get_player_by_id( 8).punishment_sent4 + self.get_player_by_id(12).punishment_sent5 p.punishment_received2 = self.get_player_by_id(1).punishment_sent10 + self.get_player_by_id( 3).punishment_sent10 + self.get_player_by_id(5).punishment_sent10 + self.get_player_by_id( 7).punishment_sent10 + self.get_player_by_id(9).punishment_sent10 p.payoff = p.round_earning - p.punishment_sent - p.punishment_received1 - p.punishment_received2 elif p.id_in_group == 12: p.punishment_sent = p.punishment_sent1 + p.punishment_sent2 + p.punishment_sent3 + p.punishment_sent4 + p.punishment_sent5 + p.punishment_sent6 + p.punishment_sent7 + p.punishment_sent8 + p.punishment_sent9 + p.punishment_sent10 p.punishment_received1 = self.get_player_by_id(3).punishment_sent5 + self.get_player_by_id( 4).punishment_sent5 + self.get_player_by_id(7).punishment_sent5 + self.get_player_by_id( 8).punishment_sent5 + self.get_player_by_id(11).punishment_sent5 p.punishment_received2 = self.get_player_by_id(2).punishment_sent10 + self.get_player_by_id( 4).punishment_sent10 + self.get_player_by_id(6).punishment_sent10 + self.get_player_by_id( 8).punishment_sent10 + self.get_player_by_id(10).punishment_sent10 p.payoff = p.round_earning - p.punishment_sent - p.punishment_received1 - p.punishment_received2 class Player(BasePlayer): def role(self): if self.id_in_group in (1,5,9): return 'UW' elif self.id_in_group in (2,6,10): return 'UP' elif self.id_in_group in(3,7,11): return 'RW' elif self.id_in_group in (4,8,12): return 'RP' tokens = models.IntegerField( min=0,max=15, label ='How many tokens you would like to purchase in total?') token_U = models.IntegerField (min=0, max = 15, label = 'How many tokens you would like to purchase to group Red?') token_R = models.IntegerField (min=0, max = 15, label = 'How many tokens you would like to purchase to group Blue? ') token_W = models.IntegerField(min=0, max=15, label='How many tokens you would like to purchase to group Rectangle?') token_P = models.IntegerField(min=0, max=15, label='How many tokens you would like to purchase to group Triangle? ') U_win = models.BooleanField() R_win = models.BooleanField() W_win = models.BooleanField() P_win = models.BooleanField() token_U_total = models.IntegerField() token_R_total = models.IntegerField() token_W_total = models.IntegerField() token_P_total = models.IntegerField() token_total = models.IntegerField() prob_U = models.FloatField() prob_R = models.FloatField() prob_W = models.FloatField() prob_P = models.FloatField() round_earning = models.CurrencyField() payoff = models.CurrencyField() cost = models.CurrencyField() age = models.IntegerField( label='What is your age?', min=18, max=125) gender = models.StringField( choices=['Male', 'Female', 'Other'], label='What is your gender?', widget=widgets.RadioSelect) citizenship = models.StringField( label='Your country of citizenship') major = models.StringField( label='What is your major?') year = models.StringField( choices=['Freshman', 'Sophomore', 'Junior', 'Senior', 'Graduate', 'Other'], label='Which year are you in?', widget=widgets.RadioSelect) risk = models.StringField( choices=['Strongly Disagree', 'Disagree', 'Slightly Disagree', 'Slightly Agree', 'Agree', 'Strongly Agree'], label='You are the person who is fully prepared to take risks.', widget=widgets.RadioSelect) decision = models.TextField(initial=None, verbose_name="How you made your decisions in Part 1?") comments = models.TextField(blank=True, initial=None, verbose_name="Do you have any comment, questions, or complains about today's experiment?") punishment_sent1 = models.CurrencyField(initial=0,label='How many tokens would you like to deduct this player',) punishment_sent2 = models.CurrencyField(initial=0,label='How many tokens would you like to deduct this player',) punishment_sent3 = models.CurrencyField(initial=0,label='How many tokens would you like to deduct this player',) punishment_sent4 = models.CurrencyField(initial=0,label='How many tokens would you like to deduct this player',) punishment_sent5 = models.CurrencyField(initial=0,label='How many tokens would you like to deduct this player',) punishment_sent6 = models.CurrencyField(initial=0,label='How many tokens would you like to deduct this player', ) punishment_sent7 = models.CurrencyField(initial=0,label='How many tokens would you like to deduct this player', ) punishment_sent8 = models.CurrencyField(initial=0,label='How many tokens would you like to deduct this player', ) punishment_sent9 = models.CurrencyField(initial=0,label='How many tokens would you like to deduct this player', ) punishment_sent10 = models.CurrencyField(initial=0,label='How many tokens would you like to deduct this player', ) punishment_received1 = models.CurrencyField(initial=0,) punishment_received2 = models.CurrencyField(initial=0,) punishment_sent = models.CurrencyField(initial=0,) contribution1 = models.IntegerField(label='the number of tokens denoted by this group member is:') contribution2 = models.IntegerField(label='the number of tokens denoted by this group member is:') contribution3 = models.IntegerField(label='the number of tokens denoted by this group member is:') contribution4 = models.IntegerField(label='the number of tokens denoted by this group member is:') contribution5 = models.IntegerField(label='the number of tokens denoted by this group member is:') contribution6 = models.IntegerField(label='the number of tokens denoted by this group member is:') contribution7 = models.IntegerField(label='the number of tokens denoted by this group member is:') contribution8 = models.IntegerField(label='the number of tokens denoted by this group member is:') contribution9 = models.IntegerField(label='the number of tokens denoted by this group member is:') contribution10 = models.IntegerField(label='the number of tokens denoted by this group member is:') #def get_other_players_by_role(self,role1,role2): # return [p for p in self.get_others_in_subsession() if ((p.role() == role1) or (p.role()== role2))] #def get_UW_memberW(self): # return self.get_other_players_by_role('RW','UW') #def get_UW_memberU(self): # return self.get_other_players_by_role('UP','UW') #def get_UW_contributionW(self): # return [p.token_W for p in self.get_UW_memberW()] #def get_UW_contributionU(self): # return [p.token_U for p in self.get_UW_memberU()] #def get_RW_memberW(self): # return self.get_other_players_by_role('RW', 'UW') #def get_RW_memberR(self): # return self.get_other_players_by_role('RW', 'RP') #def get_RW_contributionW(self): # return [p.token_W for p in self.get_RW_memberW()] #def get_RW_contributionR(self): # return [p.token_R for p in self.get_RW_memberR()] #def get_UP_memberP(self): # return self.get_other_players_by_role('UP','RP') #def get_UP_memberU(self): # return self.get_other_players_by_role('UP','UW') #def get_UP_contributionP(self): # return [p.token_P for p in self.get_UP_memberP()] #def get_UP_contributionU(self): # return [p.token_U for p in self.get_UP_memberU()] #def get_RP_memberR(self): # return self.get_other_players_by_role('RP','RW') #def get_RP_memberP(self): # return self.get_other_players_by_role('RP','UP') #def get_RP_contributionR(self): # return [p.token_R for p in self.get_RP_memberR()] #def get_RP_contributionP(self): # return [p.token_P for p in self.get_RP_memberP()]