Administrador
La interfaz de administración de oTree te permite crear, monitorear y exportar datos de las sesiones.
Abre tu navegador en localhost:8000 o en la URL de tu servidor.
Protección por contraseña
Cuando instalas oTree por primera vez, toda la interfaz de administración es accesible sin una contraseña. Sin embargo, cuando estés listo para desplegar a tu audiencia, deberías proteger la administración con una contraseña.
If you are launching an experiment and want visitors to only be able to
play your app if you provided them with a start link, set the
environment variable OTREE_AUTH_LEVEL to STUDY.
To put your site online in public demo mode where
anybody can play a demo version of your game
(but not access the full admin interface), set OTREE_AUTH_LEVEL
to DEMO.
The normal admin username is «admin».
You should set your password in the OTREE_ADMIN_PASSWORD environment variable
(on Heroku, log into your Heroku dashboard, and define it as a config var).
If you change the admin username or password, you need to reset the database.
Start links
Hay múltiples tipos de enlaces de inicio que puedes usar.
Salas
En la mayoría de los casos en los que estás realizando un estudio, la mejor manera de configurar las URL es crear una room.
Enlaces de un solo uso
Si una sala no se adapta a tus necesidades, puedes utilizar los enlaces de un solo uso de oTree. Cada vez que creas una sesión, necesitarás redistribuir las URL a cada participante.
Enlace de sesión
El enlace de sesión permite proporcionar el mismo enlace de inicio a todos los participantes en la sesión. Nota: esto puede resultar en que el mismo participante juegue dos veces, a menos que uses el parámetro participant_label en la URL (ver Etiquetas de participantes).
Antes de usar el enlace de sesión, considera usar un room, porque también puedes usar una sala sin un archivo de etiquetas de participantes para permitir que todos jueguen con la misma URL. La ventaja de usar una sala es que la URL es más fácil de escribir (no contiene un código generado aleatoriamente) y puedes reutilizarla entre sesiones.
Etiquetas de participantes
Ya sea que estés usando un room o no, puedes agregar un parámetro participant_label a la URL de inicio de cada participante para identificarlos, por ejemplo, por nombre, número de ID o estación de trabajo. Por ejemplo:
http://localhost:8000/room/my_room_name/?participant_label=John
oTree registrará esta etiqueta de participante. Se utilizará para identificar a ese participante en la interfaz de administración de oTree y en la página de pagos, etc. También puedes acceder a ella desde tu código como participant.label.
Otro beneficio de las etiquetas de participante es que si el participante abre su enlace de inicio dos veces, se le asignará de nuevo al mismo participante (si estás utilizando un enlace de sala o de sesión). Esto reduce la participación duplicada.
Orden de llegada
oTree asignará a la primera persona que llegue como P1, a la segunda como P2, etc., a menos que estés utilizando enlaces de un solo uso.
Customizing the admin interface
You can customize what data is shown in the admin interface.
For basic customization, you can define ADMIN_VIEW_FIELDS in your constants class.
For advanced customization, you can create a custom «admin report» tab.
ADMIN_VIEW_FIELDS
Nota
To use this, you must install oTree 6.0
You can choose what fields are shown in the admin’s «Session Data» view,
to focus on the important fields and ignore the rest.
Define ADMIN_VIEW_FIELDS in your constants class.
It can have 'player', 'group', and 'subsession' keys.
class C(BaseConstants):
...
ADMIN_VIEW_FIELDS = {
'player': ['guess', 'is_winner', 'payoff'],
# 'group': [...],
# 'subsession': [...],
}
Admin reports
Puedes agregar una pestaña personalizada a la página de administración de una sesión con cualquier contenido que desees; por ejemplo:
Un gráfico/tabla con los resultados del juego
Una página de pagos personalizada que es diferente de la incorporada en oTree
Aquí hay una captura de pantalla:
Aquí hay un ejemplo trivial, donde agregamos un informe de administración que muestra una lista ordenada de pagos para una ronda dada.
Primero, define una función vars_for_admin_report. Esto funciona de la misma manera que vars_for_template(). Por ejemplo:
def vars_for_admin_report(subsession):
payoffs = sorted([p.payoff for p in subsession.get_players()])
return dict(payoffs=payoffs)
Luego crea una plantilla incluible admin_report.html en tu aplicación, y muestra cualquier variable que se haya pasado en vars_for_admin_report:
<p>Here is the sorted list of payoffs in round {{ subsession.round_number }}</p>
<ul>
{{ for payoff in payoffs }}
<li>{{ payoff }}</li>
{{ endfor }}
</ul>
Notas:
subsession,sessionyCse pasan a la plantilla automáticamente.admin_report.htmlno necesita usar{{ block }}. El ejemplo anterior es válido como el contenido completo deadmin_report.html.
Si una o más aplicaciones en tu sesión tienen un admin_report.html, tu página de administración tendrá una pestaña de «Informes». Usa el menú para seleccionar la aplicación y el número de ronda, para ver el informe de esa subsesión.
Exportar Datos
En la interfaz de administración, haz clic en «Datos» para descargar tus datos en formato CSV o Excel.
También hay una exportación de datos para «tiempos de página», que muestra el tiempo exacto en que los usuarios completaron cada página. Aquí hay un script de Python que puedes ejecutar que tabula cuánto tiempo se pasa en cada página. Puedes modificar este script para calcular cosas similares, como cuánto tiempo pasa cada participante en las páginas de espera en total.
Exportaciones de datos personalizadas
Puedes crear tu propia exportación de datos personalizada para una aplicación. En oTree Studio, ve al modelo «Player» y haz clic en «custom_export» en la parte inferior. (Si usas un editor de texto, define la función a continuación). El argumento players es un queryset de todos los jugadores en la base de datos. Usa un yield para cada fila de datos.
def custom_export(players):
# header row
yield ['session', 'participant_code', 'round_number', 'id_in_group', 'payoff']
for p in players:
participant = p.participant
session = p.session
yield [session.code, participant.code, p.round_number, p.id_in_group, p.payoff]
O puedes ignorar el argumento players y exportar otros datos en su lugar, por ejemplo:
def custom_export(players):
# Export an ExtraModel called "Trial"
yield ['session', 'participant', 'round_number', 'response', 'response_msec']
# 'filter' without any args returns everything
trials = Trial.filter()
for trial in trials:
player = trial.player
participant = player.participant
session = player.session
yield [session.code, participant.code, player.round_number, trial.response, trial.response_msec]
Una vez que esta función esté definida, tu exportación de datos personalizada estará disponible en la página de exportación de datos regular.
Multiple custom_export functions
Nota
To use this, you must install oTree 6.0
You can define multiple custom export functions; just make sure they all start with custom_export;
e.g. def custom_export_xyz(players):.
Información de depuración
Cuando oTree se ejecuta en modo DEBUG (es decir, cuando la variable de entorno OTREE_PRODUCTION no está configurada), la información de depuración se muestra en la parte inferior de todas las pantallas.
Pagos
Si defines un participant field llamado finished, entonces puedes establecer participant.finished = True cuando un participante termina la sesión, y esto se mostrará en varios lugares como la página de pagos.