Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
)
experimenter_name = models.CharField(
max_length=300, null=True, blank=True, help_text='For internal record-keeping'
)
code = models.CharField(
default=random_chars_8,
max_length=16,
# set non-nullable, until we make our CharField non-nullable
null=False,
unique=True,
doc="Randomly generated unique identifier for the session.",
)
mturk_HITId = models.CharField(
max_length=300,
null=True,
blank=True,
help_text='Hit id for this session on MTurk',
)
mturk_HITGroupId = models.CharField(
max_length=300,
null=True,
blank=True,
help_text='Hit id for this session on MTurk',
)
# since workers can drop out number of participants on server should be
# greater than number of participants on mturk
# value -1 indicates that this session it not intended to run on mturk
mturk_num_participants = models.IntegerField(
from otree.db import models
from otree.models_concrete import ParticipantToPlayerLookup
from .varsmixin import ModelWithVars
class Participant(ModelWithVars):
class Meta:
ordering = ['pk']
app_label = "otree"
index_together = ['session', 'mturk_worker_id', 'mturk_assignment_id']
session = models.ForeignKey(
'otree.Session', on_delete=models.CASCADE
)
label = models.CharField(
max_length=50, null=True, doc=(
"Label assigned by the experimenter. Can be assigned by passing a "
"GET param called 'participant_label' to the participant's start "
"URL"
)
)
id_in_session = models.PositiveIntegerField(null=True)
payoff = models.CurrencyField(default=0)
time_started = models.DateTimeField(null=True)
user_type_in_url = constants_internal.user_type_participant
mturk_assignment_id = models.CharField(
max_length=50, null=True)
mturk_worker_id = models.CharField(max_length=50, null=True)
default=False, db_index=True,
doc="""Whether this user's start URL was opened"""
)
ip_address = models.GenericIPAddressField(null=True)
# stores when the page was first visited
_last_page_timestamp = models.PositiveIntegerField(null=True)
_last_request_timestamp = models.PositiveIntegerField(null=True)
is_on_wait_page = models.BooleanField(default=False)
# these are both for the admin
# In the changelist, simply call these "page" and "app"
_current_page_name = models.CharField(max_length=200, null=True,
verbose_name='page')
_current_app_name = models.CharField(max_length=200, null=True,
verbose_name='app')
# only to be displayed in the admin participants changelist
_round_number = models.PositiveIntegerField(
null=True
)
_current_form_page_url = models.URLField()
_max_page_index = models.PositiveIntegerField()
_browser_bot_finished = models.BooleanField(default=False)
_is_bot = models.BooleanField(default=False)
code = models.CharField(
default=random_chars_8,
max_length=16,
# set non-nullable, until we make our CharField non-nullable
null=False,
unique=True,
doc="Randomly generated unique identifier for the session.",
)
mturk_HITId = models.CharField(
max_length=300,
null=True,
blank=True,
help_text='Hit id for this session on MTurk',
)
mturk_HITGroupId = models.CharField(
max_length=300,
null=True,
blank=True,
help_text='Hit id for this session on MTurk',
)
# since workers can drop out number of participants on server should be
# greater than number of participants on mturk
# value -1 indicates that this session it not intended to run on mturk
mturk_num_participants = models.IntegerField(
default=-1, help_text="Number of participants on MTurk"
)
mturk_use_sandbox = models.BooleanField(
default=True, help_text="Should this session be created in mturk sandbox?"
)
)
ip_address = models.GenericIPAddressField(null=True)
# stores when the page was first visited
_last_page_timestamp = models.PositiveIntegerField(null=True)
_last_request_timestamp = models.PositiveIntegerField(null=True)
is_on_wait_page = models.BooleanField(default=False)
# these are both for the admin
# In the changelist, simply call these "page" and "app"
_current_page_name = models.CharField(max_length=200, null=True,
verbose_name='page')
_current_app_name = models.CharField(max_length=200, null=True,
verbose_name='app')
# only to be displayed in the admin participants changelist
_round_number = models.PositiveIntegerField(
null=True
)
_current_form_page_url = models.URLField()
_max_page_index = models.PositiveIntegerField()
_browser_bot_finished = models.BooleanField(default=False)
_is_bot = models.BooleanField(default=False)
# can't start with an underscore because used in template
# can't end with underscore because it's a django field (fields.E001)
max_length=50, null=True, doc=(
"Label assigned by the experimenter. Can be assigned by passing a "
"GET param called 'participant_label' to the participant's start "
"URL"
)
)
id_in_session = models.PositiveIntegerField(null=True)
payoff = models.CurrencyField(default=0)
time_started = models.DateTimeField(null=True)
user_type_in_url = constants_internal.user_type_participant
mturk_assignment_id = models.CharField(
max_length=50, null=True)
mturk_worker_id = models.CharField(max_length=50, null=True)
_index_in_subsessions = models.PositiveIntegerField(default=0, null=True)
_index_in_pages = models.PositiveIntegerField(default=0, db_index=True)
def _id_in_session(self):
"""the human-readable version."""
return 'P{}'.format(self.id_in_session)
_waiting_for_ids = models.CharField(null=True, max_length=300)
code = models.CharField(
default=random_chars_8,
max_length=16,
# set non-nullable, until we make our CharField non-nullable
null=False,
label = models.CharField(
max_length=50, null=True, doc=(
"Label assigned by the experimenter. Can be assigned by passing a "
"GET param called 'participant_label' to the participant's start "
"URL"
)
)
id_in_session = models.PositiveIntegerField(null=True)
payoff = models.CurrencyField(default=0)
time_started = models.DateTimeField(null=True)
user_type_in_url = constants_internal.user_type_participant
mturk_assignment_id = models.CharField(
max_length=50, null=True)
mturk_worker_id = models.CharField(max_length=50, null=True)
_index_in_subsessions = models.PositiveIntegerField(default=0, null=True)
_index_in_pages = models.PositiveIntegerField(default=0, db_index=True)
def _id_in_session(self):
"""the human-readable version."""
return 'P{}'.format(self.id_in_session)
_waiting_for_ids = models.CharField(null=True, max_length=300)
code = models.CharField(
default=random_chars_8,
max_length=16,
user_type_in_url = constants_internal.user_type_participant
mturk_assignment_id = models.CharField(
max_length=50, null=True)
mturk_worker_id = models.CharField(max_length=50, null=True)
_index_in_subsessions = models.PositiveIntegerField(default=0, null=True)
_index_in_pages = models.PositiveIntegerField(default=0, db_index=True)
def _id_in_session(self):
"""the human-readable version."""
return 'P{}'.format(self.id_in_session)
_waiting_for_ids = models.CharField(null=True, max_length=300)
code = models.CharField(
default=random_chars_8,
max_length=16,
# set non-nullable, until we make our CharField non-nullable
null=False,
# unique implies DB index
unique=True,
doc=(
"Randomly generated unique identifier for the participant. If you "
"would like to merge this dataset with those from another "
"subsession in the same session, you should join on this field, "
"which will be the same across subsessions."
)
)
visited = models.BooleanField(