from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants from otree.api import safe_json from decimal import Decimal class Game(Page): form_model = "player" def is_displayed(self): return self.player.color == 'yellow' or self.player.color == 'orange' class Game2(Page): form_model = "player" def is_displayed(self): return self.player.color == 'black' or self.player.color == 'white' class Reporting(Page): form_model = "player" def is_displayed(self): return self.player.color == 'yellow' or self.player.color == 'orange' form_fields = ['outcome'] def before_next_page(self): if self.player.outcome == 0: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 1: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 2: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 3: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 4: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 5: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 6: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 7: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 8: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 9: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 10: self.participant.payoff = self.player.outcome + 3 class Reporting2(Page): form_model = "player" def is_displayed(self): return self.player.color == 'black' or self.player.color == 'white' form_fields = ['outcome'] def before_next_page(self): if self.player.outcome == 0: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 1: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 2: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 3: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 4: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 5: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 6: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 7: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 8: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 9: self.participant.payoff = self.player.outcome + 3 if self.player.outcome == 10: self.participant.payoff = self.player.outcome + 3 class Survey2(Page): pass class Survey3(Page): pass class Survey4(Page): pass class Survey5(Page): pass class ResultsWaitPage(WaitPage): def after_all_players_arrive(self): pass class Results(Page): def is_displayed(self): return self.player.color == 'red' or self.player.color == 'green' form_model = "player" class Greed(Page): form_model = "player" form_fields = ['greed1', 'greed2', 'greed3', 'greed4', 'greed5', 'greed6', 'greed7'] class Beliefs(Page): form_model = "player" def is_displayed(self): return self.player.color == 'red' form_fields = ['belief0', 'belief1', 'belief2', 'belief3', 'belief4', 'belief5', 'belief6', 'belief7', 'belief8', 'belief9'] def before_next_page(self) : self.player.set_payoff() class Beliefs2(Page): form_model = "player" def is_displayed(self): return self.player.color == 'green' form_fields = ['belief0', 'belief1', 'belief2', 'belief3', 'belief4', 'belief5', 'belief6', 'belief7', 'belief8', 'belief9'] def before_next_page(self) : self.player.set_payoff() class PostBeliefs(Page): form_model = "player" def is_displayed(self): return self.player.color == 'green' or self.player.color == 'red' form_fields = ['confidence'] class Form(Page): form_model = "player" form_fields = "outcome2" class Charity(Page): form_model = "player" form_fields = ['charity'] class Questionnaire(Page): form_model = "player" form_fields = ["HEXACO1", "HEXACO2", "HEXACO3", "HEXACO4", "HEXACO5", "HEXACO6", "HEXACO7", "HEXACO8", "HEXACO10"] class Questionnaire2(Page): pass class Questionnaire3(Page): pass class ResultsMouse(Page): def vars_for_template(self) : mouse_x = self.player.mouse_x.split(",") mouse_y = self.player.mouse_y.split(",") mouse_x = list(map(int, mouse_x)) mouse_y = list(map(int, mouse_y)) mouse_y = [max(mouse_y) - x for x in mouse_y] data = [] for i, j in zip(mouse_x, mouse_y) : data.append([i, j]) series = [{'name' : 'Coordinate', 'data' : data}] return { 'series' : safe_json(series) } page_sequence = [Game, Game2, Reporting, Reporting2, Beliefs, Beliefs2, PostBeliefs, Results, Greed, Questionnaire, Charity]