from otree.api import Currency as c, currency_range from otree.api import expect, SubmissionMustFail from . import pages from ._builtin import Bot from .models import Constants class PlayerBot(Bot): def play_round(self): yield pages.Intro yield SubmissionMustFail(pages.Risk, dict(avg_open=1)) yield pages.Risk, dict(avg_open=1, avg_open_girls=2, avg_open_boys=3, should_open=4, should_open_girls=5, should_open_boys=6) expect(self.player.avg_open, 1) expect(self.player.avg_open_girls, 2) expect(self.player.avg_open_boys, 3) expect(self.player.should_open, 4) expect(self.player.should_open_girls, 5) expect(self.player.should_open_boys, 6) yield SubmissionMustFail(pages.Present, dict(avg_invest=1)) yield pages.Present, dict(avg_invest=5, avg_invest_girls=1, avg_invest_boys=2, should_invest=3, should_invest_girls=5, should_invest_boys=2) expect(self.player.avg_invest, 5) expect(self.player.avg_invest_girls, 1) expect(self.player.avg_invest_boys, 2) expect(self.player.should_invest, 3) expect(self.player.should_invest_girls, 5) expect(self.player.should_invest_boys, 2) yield SubmissionMustFail(pages.Grit, dict(avg_grit=10)) yield pages.Grit, dict(avg_grit=59, avg_grit_girls=99, avg_grit_boys=25, should_grit=73, should_grit_girls=5, should_grit_boys=25) expect(self.player.avg_grit, 59) expect(self.player.avg_grit_girls, 99) expect(self.player.avg_grit_boys, 25) expect(self.player.should_grit, 73) expect(self.player.should_grit_girls, 5) expect(self.player.should_grit_boys, 25) yield SubmissionMustFail(pages.Altruism, dict(avg_altruism_give=10)) yield pages.Altruism, dict(avg_altruism_give=7, avg_altruism_give_girls=6, avg_altruism_give_boys=2, should_altruism_give=3, should_altruism_give_girls=5, should_altruism_give_boys=2) expect(self.player.avg_altruism_give, 7) expect(self.player.avg_altruism_give_girls, 6) expect(self.player.avg_altruism_give_boys, 2) expect(self.player.should_altruism_give, 3) expect(self.player.should_altruism_give_girls, 5) expect(self.player.should_altruism_give_boys, 2) yield SubmissionMustFail(pages.Trust, dict(avg_trust_give=1)) yield pages.Trust, dict(avg_trust_give=4, avg_trust_give_girls=1, avg_trust_give_boys=2, should_trust_give=3, should_trust_give_girls=5, should_trust_give_boys=2) expect(self.player.avg_trust_give, 4) expect(self.player.avg_trust_give_girls, 1) expect(self.player.avg_trust_give_boys, 2) expect(self.player.should_trust_give, 3) expect(self.player.should_trust_give_girls, 5) expect(self.player.should_trust_give_boys, 2) yield SubmissionMustFail(pages.Redistribution, dict(avg_redistribution_give=10)) yield pages.Redistribution, dict(avg_redistribution_give=7, avg_redistribution_give_girls=6, avg_redistribution_give_boys=2, should_redistribution_give=3, should_redistribution_give_girls=5, should_redistribution_give_boys=2) expect(self.player.avg_redistribution_give, 7) expect(self.player.avg_redistribution_give_girls, 6) expect(self.player.avg_redistribution_give_boys, 2) expect(self.player.should_redistribution_give, 3) expect(self.player.should_redistribution_give_girls, 5) expect(self.player.should_redistribution_give_boys, 2) yield SubmissionMustFail(pages.Cooperation, dict(avg_coop_give=1)) yield SubmissionMustFail(pages.Cooperation, dict(avg_coop_give=1.1)) yield pages.Cooperation, dict(avg_coop_give=0.4, avg_coop_give_girls=1, avg_coop_give_boys=0.2, should_coop_give=0.3, should_coop_give_girls=0.5, should_coop_give_boys=0.2) expect(self.player.avg_coop_give, 0.4) expect(self.player.avg_coop_give_girls, 1) expect(self.player.avg_coop_give_boys, 0.2) expect(self.player.should_coop_give, 0.3) expect(self.player.should_coop_give_girls, 0.5) expect(self.player.should_coop_give_boys, 0.2) yield SubmissionMustFail(pages.Competition, dict(avg_competitiveness=10)) yield pages.Competition, dict(avg_competitiveness=59, avg_competitiveness_girls=99, avg_competitiveness_boys=25, should_competitiveness=73, should_competitiveness_girls=5, should_competitiveness_boys=25) expect(self.player.avg_competitiveness, 59) expect(self.player.avg_competitiveness_girls, 99) expect(self.player.avg_competitiveness_boys, 25) expect(self.player.should_competitiveness, 73) expect(self.player.should_competitiveness_girls, 5) expect(self.player.should_competitiveness_boys, 25) yield SubmissionMustFail(pages.TraitRating, dict(grit_rating='In the average')) form_values = { 'risk_rating': 'In the average', 'present_rating': 'Higher', 'grit_rating': 'Weaker', 'altruism_rating': 'In the average', 'trust_rating': 'Higher', 'redistribution_rating': 'In the average', 'cooperation_rating': 'Weaker', 'competition_rating': 'Higher' } yield pages.TraitRating, form_values expect(self.player.risk_rating, 'In the average') expect(self.player.present_rating, 'Higher') expect(self.player.grit_rating, 'Weaker') expect(self.player.altruism_rating, 'In the average') expect(self.player.trust_rating, 'Higher') expect(self.player.redistribution_rating, 'In the average') expect(self.player.cooperation_rating, 'Weaker') expect(self.player.competition_rating, 'Higher') yield SubmissionMustFail(pages.TraitChange, dict(grit_change='Keep constant')) form_values = { 'risk_change': 'Keep constant', 'present_change': 'Increase', 'grit_change': 'Reduce', 'altruism_change': 'Keep constant', 'trust_change': 'Increase', 'redistribution_change': 'Keep constant', 'cooperation_change': 'Reduce', 'competition_change': 'Increase' } yield pages.TraitChange, form_values expect(self.player.risk_change, 'Keep constant') expect(self.player.present_change, 'Increase') expect(self.player.grit_change, 'Reduce') expect(self.player.altruism_change, 'Keep constant') expect(self.player.trust_change, 'Increase') expect(self.player.redistribution_change, 'Keep constant') expect(self.player.cooperation_change, 'Reduce') expect(self.player.competition_change, 'Increase') yield SubmissionMustFail(pages.TraitChangeConfidence, dict(grit_change_confidence='No')) form_values = { 'risk_change_confidence': 'No', 'present_change_confidence': 'No change', 'grit_change_confidence': 'Yes', 'altruism_change_confidence': 'No', 'trust_change_confidence': 'No change', 'redistribution_change_confidence': 'No', 'cooperation_change_confidence': 'Yes', 'competition_change_confidence': 'No change' } yield pages.TraitChangeConfidence, form_values expect(self.player.risk_change_confidence, 'No') expect(self.player.present_change_confidence, 'No change') expect(self.player.grit_change_confidence, 'Yes') expect(self.player.altruism_change_confidence, 'No') expect(self.player.trust_change_confidence, 'No change') expect(self.player.redistribution_change_confidence, 'No') expect(self.player.cooperation_change_confidence, 'Yes') expect(self.player.competition_change_confidence, 'No change') yield SubmissionMustFail(pages.TraitChangeHome, dict(grit_change_home='No')) form_values = { 'risk_change_home': 'No', 'present_change_home': 'No', 'grit_change_home': 'Yes', 'grit_change_home_comment': 'home sweet home', 'altruism_change_home': 'No', 'trust_change_home': 'No', 'redistribution_change_home': 'No', 'cooperation_change_home': 'Yes', 'competition_change_home': 'No' } yield pages.TraitChangeHome, form_values expect(self.player.risk_change_home, 'No') expect(self.player.present_change_home, 'No') expect(self.player.grit_change_home, 'Yes') expect(self.player.grit_change_home_comment, 'home sweet home') expect(self.player.altruism_change_home, 'No') expect(self.player.trust_change_home, 'No') expect(self.player.redistribution_change_home, 'No') expect(self.player.cooperation_change_home, 'Yes') expect(self.player.competition_change_home, 'No') yield SubmissionMustFail(pages.TraitDiscussedWith, dict(grit_discussed_with='Family')) form_values = { 'risk_discussed_with': 'Family', 'present_discussed_with': 'Teachers', 'grit_discussed_with': 'Friends', 'altruism_discussed_with': 'Family', 'trust_discussed_with': 'Teachers', 'redistribution_discussed_with': 'Family', 'cooperation_discussed_with': 'Friends', 'competition_discussed_with': 'No discussion' } yield pages.TraitDiscussedWith, form_values expect(self.player.risk_discussed_with, 'Family') expect(self.player.present_discussed_with, 'Teachers') expect(self.player.grit_discussed_with, 'Friends') expect(self.player.altruism_discussed_with, 'Family') expect(self.player.trust_discussed_with, 'Teachers') expect(self.player.redistribution_discussed_with, 'Family') expect(self.player.cooperation_discussed_with, 'Friends') expect(self.player.competition_discussed_with, 'No discussion') yield SubmissionMustFail(pages.TraitFrequency, dict(grit_frequency='Less than once a month')) form_values = { 'risk_frequency': 'Less than once a month', 'present_frequency': 'Once a month', 'grit_frequency': 'Never', 'altruism_frequency': 'Less than once a month', 'trust_frequency': 'Once a month', 'redistribution_frequency': 'Less than once a month', 'cooperation_frequency': 'Never', 'competition_frequency': 'Once a month' } yield pages.TraitFrequency, form_values expect(self.player.risk_frequency, 'Less than once a month') expect(self.player.present_frequency, 'Once a month') expect(self.player.grit_frequency, 'Never') expect(self.player.altruism_frequency, 'Less than once a month') expect(self.player.trust_frequency, 'Once a month') expect(self.player.redistribution_frequency, 'Less than once a month') expect(self.player.cooperation_frequency, 'Never') expect(self.player.competition_frequency, 'Once a month') yield SubmissionMustFail(pages.TraitImportance, dict(grit_importance='Very important')) form_values = { 'risk_importance': 'Very important', 'present_importance': 'Important', 'grit_importance': 'Not important at all', 'altruism_importance': 'Very important', 'trust_importance': 'Important', 'redistribution_importance': 'Very important', 'cooperation_importance': 'Not important at all', 'competition_importance': 'Important' } yield pages.TraitImportance, form_values expect(self.player.risk_importance, 'Very important') expect(self.player.present_importance, 'Important') expect(self.player.grit_importance, 'Not important at all') expect(self.player.altruism_importance, 'Very important') expect(self.player.trust_importance, 'Important') expect(self.player.redistribution_importance, 'Very important') expect(self.player.cooperation_importance, 'Not important at all') expect(self.player.competition_importance, 'Important')