from otree.api import *
import random

doc = """
Questions in random order on a single page
"""


class C(BaseConstants):
    NAME_IN_URL = 'Random_divs'
    PLAYERS_PER_GROUP = None
    NUM_ROUNDS = 1


class Subsession(BaseSubsession):
    pass


class Group(BaseGroup):
    pass


class Player(BasePlayer):

    pyField1 = models.LongStringField(blank=False)
    pyField2 = models.LongStringField(blank=False)
    pyField3 = models.LongStringField(blank=False)
    pyField4 = models.LongStringField(blank=False)
    pyField5 = models.LongStringField(blank=False)
    pyField6 = models.LongStringField(blank=False)
    pyField7 = models.LongStringField(blank=False)
    pyField8 = models.LongStringField(blank=False)
    pyField9 = models.LongStringField(blank=False)
    pyField10 = models.LongStringField(blank=False)
    pyField11 = models.LongStringField(blank=False)
    pyField12 = models.LongStringField(blank=False)
    pyField13 = models.LongStringField(blank=False)
    pyField14 = models.LongStringField(blank=False)
    rand_q_sequence = models.StringField()


# FUNCTIONS

def creating_session(subsession: Subsession):
    if subsession.round_number == 1:
        for p in subsession.get_players():
            p.participant.rand_q_sequence = random.sample(range(0, 14), 14)


# PAGES

class Questionnaire(Page):

    form_model = 'player'
    form_fields = [
        'pyField1', 'pyField2', 'pyField3', 'pyField4', 'pyField5', 'pyField6', 'pyField7',
        'pyField8', 'pyField9', 'pyField10', 'pyField11', 'pyField12', 'pyField13', 'pyField14',
    ]

    def vars_for_template(player):
        return dict(
            pyFields_shuffled = [Questionnaire.form_fields[i] for i in player.participant.rand_q_sequence],
        )


page_sequence = [Questionnaire]
