from otree.api import * class C(BaseConstants): NAME_IN_URL = 'survey_mapas' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 # Matriz de tratamientos: ID, Letra, Nombre y Coordenadas UBICACIONES = [ {'id': 1, 'letra': 'A', 'nombre': 'Cra 9A Cll 100', 'lat': 4.681959835126193, 'lng': -74.04151671952825}, {'id': 2, 'letra': 'B', 'nombre': 'NQS Cll 97', 'lat': 4.682460700513208, 'lng': -74.04890099353733}, {'id': 3, 'letra': 'C', 'nombre': 'Auto Cll 94', 'lat': 4.677262749955496, 'lng': -74.04650754422408}, {'id': 4, 'letra': 'D', 'nombre': 'Cra 7 Cll74', 'lat': 4.6567643532288345, 'lng': -74.05431670401198}, {'id': 5, 'letra': 'E', 'nombre': 'Cra 11 Cll 96', 'lat': 4.679154425478972, 'lng': -74.04510000028536}, {'id': 6, 'letra': 'F', 'nombre': 'Cra 7 Cll 100', 'lat': 4.680161445927889, 'lng': -74.03777626240236}, {'id': 7, 'letra': 'G', 'nombre': 'Cra 7 Cll 77', 'lat': 4.6593817715855925, 'lng': -74.05216598766572}, {'id': 8, 'letra': 'H', 'nombre': 'Cra 7 Cll 26', 'lat': 4.612576386276891, 'lng': -74.06948146844528}, {'id': 9, 'letra': 'I', 'nombre': 'Cra 15 Cll 92', 'lat': 4.6761336646879945, 'lng': -74.05239216304092}, {'id': 10, 'letra': 'J', 'nombre': 'Cra 7 Cll 76', 'lat': 4.659019669659699, 'lng': -74.05299932071313}, ] MEDIOS = [ ('tm', 'TransMilenio'), ('sitp', 'SITP'), ('carro', 'Carro propio'), ('app', 'Apps de transporte o Taxi'), ('bici', 'Bicicleta'), ('pati', 'Patineta o moto eléctrica'), ('caminando', 'Caminando'), ] class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): # Variable dependiente: El ranking final del sujeto ranking_lugares = models.LongStringField() transporte_publico = models.FloatField(min=0, max=10) parqueaderos = models.FloatField(min=0, max=10) centros_comerciales = models.FloatField(min=0, max=10) seguridad = models.FloatField(min=0, max=10) info_panel_opened = models.BooleanField(initial=False) info_panel_time_ms = models.IntegerField(initial=0) correo_institucional = models.StringField( label="Correo institucional", blank=False ) direccion_residencia = models.StringField( label="Dirección de residencia", blank=False ) medio_transporte = models.StringField( choices=C.MEDIOS, widget=widgets.RadioSelect ) # PÁGINAS class MyPage(Page): form_model = 'player' form_fields = ['ranking_lugares', 'info_panel_opened', 'info_panel_time_ms'] @staticmethod def vars_for_template(player: Player): return { 'api_key': "AIzaSyC-B6rg6FpzHUpUgMeIr5R8csAGIaU8WuE", 'ubicaciones': C.UBICACIONES } class rank_atributos(Page): form_model = 'player' form_fields = [ 'transporte_publico', 'parqueaderos', 'centros_comerciales', 'seguridad' ] class Results(Page): pass class Welcome(Page): form_model = 'player' form_fields = ['correo_institucional', 'direccion_residencia', 'medio_transporte'] page_sequence = [Welcome, MyPage, rank_atributos, Results]