from otree.api import * c = cu doc = '' class C(BaseConstants): NAME_IN_URL = 'my_ultimatum' PLAYERS_PER_GROUP = 2 NUM_ROUNDS = 12 ENDOWMENT = cu(10) class Subsession(BaseSubsession): pass def creating_session(subsession: Subsession): session = subsession.session import random #f= open('C:/Users/gvonn/Desktop/otreeProjects/nameListSample.txt') #content= f.read() #f.close() #name_list= content.split("\n") name_list=["mai","lu","huy","tuan","kai","priya","tanisha","kenya","lakisha","tyrone","latasha","latisha", "jermaine","latonya","mohammad","keisha","ebony","aisha","jamal","lawanda","darius","lamar","tasha","latoya", "terrell","leroy","cedric","latanya","ahmad","dewayne", "tamika","pablo","esperanza","santiago","jose","julio","santos","humberto","roberto", "alejandro","jesus","gonzalo","enrique","guadalupe","fernando", "consuelo","lupe","miguel","rodrigo","juan","ernesto","reynaldo","ricardo","heriberto", "carmelita","eduardo","brad","becky","katie","scotty","scott","jake","mindy","nancy","katherine", "debbie","gary","timmy","kathryn","dolly","katelyn", "holly","kathleen","april","erin","andy","joan","patrick","hank","lindsey","pete","brent", "todd","tim","molly","jane","brett","allison","cathy", "ellen","brittany","dean","dustin","phil","dan","amy","austin","billy","guy","heather","abigail", "heidi","adam","emma","christine","melissa"] if subsession.round_number == 1: for player in subsession.get_players(): participant= player.participant participant.alias = random.choice(name_list).capitalize() class Group(BaseGroup): offer_amount = models.IntegerField(choices=[[0, '0'], [1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5'], [6, '6'], [7, '7'], [8, '8'], [9, '9'], [10, '10']], label='Please select an amount') offer_response = models.BooleanField(choices=[[True, 'Accept'], [False, 'Reject']], label='Do you accept or reject the offer from Participant A?') def set_payoffs(group: Group): p1 = group.get_player_by_id(1) p2 = group.get_player_by_id(2) if group.offer_response: p1.payoff = C.ENDOWMENT - group.offer_amount p2.payoff = group.offer_amount else: p1.payoff= 0 p2.payoff= 0 def set_aliases(group: Group): p1 = group.get_player_by_id(1) p2 = group.get_player_by_id(2) p1.alias = group.get_player_by_id(1).participant.alias p2.alias = group.get_player_by_id(1).participant.alias class Player(BasePlayer): alias = models.StringField(initial='NA') class Introduction(Page): form_model = 'player' @staticmethod def is_displayed(player: Player): return player.round_number == 1 class Offer(Page): form_model = 'group' form_fields = ['offer_amount'] @staticmethod def is_displayed(player: Player): group = player.group return player.id_in_group == 1 @staticmethod def vars_for_template(player: Player): group = player.group participant = player.participant return dict(alias1=group.get_player_by_id(1).participant.alias, alias2=group.get_player_by_id(2).participant.alias) class WaitForP1(WaitPage): pass class Response(Page): form_model = 'group' form_fields = ['offer_response'] @staticmethod def is_displayed(player: Player): group = player.group return player.id_in_group == 2 @staticmethod def vars_for_template(player: Player): group = player.group participant = player.participant return dict(kept_amount=C.ENDOWMENT - group.offer_amount, alias1=group.get_player_by_id(1).participant.alias, alias2=group.get_player_by_id(2).participant.alias) class WaitForResults(WaitPage): after_all_players_arrive = set_payoffs class Results(Page): form_model = 'player' @staticmethod def vars_for_template(player: Player): group = player.group participant = player.participant if group.offer_response: response_text= "Accept" else: response_text= "Reject" return dict(response_text=response_text, alias1=group.get_player_by_id(1).participant.alias, alias2=group.get_player_by_id(2).participant.alias) page_sequence = [Introduction, Offer, WaitForP1, Response, WaitForResults, Results]