Skip to content
Set of tools facilitating the development of oTree projects
JavaScript Python CSS HTML Other
Branch: master
Clone or download
Latest commit 3072a57 May 14, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
_build time tracker is fixed Mar 14, 2019
mturk fixing issue with focus_tracker - upd to 0014 Aug 21, 2018
otree_tools to 11-15 fixin issue with num unfocused events Apr 9, 2019
paypal 0.0.13 Aug 21, 2018
serializer_ext reshuffling views Mar 25, 2019
LICENSE Update License May 14, 2019 first commit Jul 25, 2018
Makefile adding docs Aug 2, 2018
README.html adding tracking info to readme Nov 28, 2018
README.rst adding docs Aug 2, 2018
index.rst adding docs Aug 2, 2018
make.bat 0.3.13 Nov 27, 2018


Set of tools facilitating the development of oTree projects


  1. Either:
  • type pip install otree_tools -U in your terminal window.

(-U or --upgrade key guarantees that if you already have otree_tools installed, it will update it to the most recent version).

  1. or:
  • clone exisiting project git clone and copy the

otree_tools folder into your project folder, next to the apps of your module.

  1. After that add "otree_tools" to your EXTENSION_APPS section of file like this:

    EXTENSION_APPS = ['otree_tools']

If your settings contain other otree extensions, listed in EXTENSION_APSS, just add otree_tools into the same list. The extensions work independently from each other and they will not be in a conflict.

4. If you would like to track time or focused/unfocused time a user spends on a specific page, you need to include to a standard oTree template a reference to otree_tools and then include trackers:

{% load otree otree_tools %}
{% block content %}
   {% tracking_focus %}
   {% tracking_time %}
{% endblock%}

tracking_focus and tracking_time tags can be included into any block, not necessarily to content

Version History

0.0.4: An AdvancedSliderWidget is added to widgets

0.0.5: An AdvancedSliderWidget is updated to work with float numbers

0.0.6: An AdvancedSliderWidget has a new option 'suffix' which is added to each label

0.0.7: ListField is added as a possible field to render multiple choice selector

0.0.8: Temporarily removing static jquery-ui files

0.0.9: ListField gets options to set initial/default values

0.0.10: ListField gets an option max_choices

0.0.11: New tag {% tracking_time %} is added that allows to measure precisely time spent per page

0.0.12: ListField renamed to MultipleChoiceModelField. ListField becomes a general field to store lists

0.0.13: {% tracking_focus} tag - to track when/if user switches to another tab while staying on the page

0.0.14: Fixing issue with {% tracking_focus} tag - initial visibility event is registered now

0.0.15: Minor fixes with trackers

0.1.0: Export of participant.vars is added

0.1.1: Hosting of Anton Shurashov radiogrid widget (

0.2.1: Incorporating parts of otree_custom_export: json export, and data export for specific sessions; export of focus and enter/exit trackers as CSV

0.2.2: fixin issue with restframework

0.2.3: fixin issue with time_tracking tag

0.3.0: OtherField and MultipliChoice Field supports FOO_choices from oTree; admin menu; pagination of all lists streaming export of time and focus trackers; issue with time tracker events is solved

0.3.1: Upgrading boto

0.3.2: Solving issue with Multiple Choice Field

0.3.3: in utils two extra functions are added: get_focused_time() and get_unfocused_time()

0.3.4: minor error correction in get_focused_time function

0.3.6: confirm_button tag for showing modal with confirmation before proceeding further

0.3.8: Fixing get_XXX_time functions

0.3.9: Converting get_time_per_page function making it return .total_seconds(), not a timedelta object

0.3.10: fixing error message in multipleselectfield

0.3.11: adding min_choices to multipleselectfield

0.3.12: minor fix of multipleselectfield - dynamic choices

0.3.13: adding num_focus_events, num_visibility_events functions into utils

0.3.14: removing botocore ref

0.3.15b: adding marker for time tracker

0.3.16b: fixing low db data retrieval in time tracker

1.0.0: Huge reshuffle of time tracker.

1.0.1: Now tracking_time tag can optionally get a parameter wait_for_images. By default it is set to True.
If it is set to False then we'll register time when the page is shown to the player, but before all images are loaded.

1.0.2: Fixing cp issue

1.1.0: Total reshuffle of trackers

1.1.1: Minor change in exporting channel

You can’t perform that action at this time.