from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ExtraModel, ) author = 'Your name here' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'EMexercise' players_per_group = 2 num_rounds = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): def live_method(self, id_in_group, data): sender = self.get_player_by_id(id_in_group) sender.counter += 1 Record.objects.create(player=sender, who=data['who'], when = data['when'], click = sender.counter) class Player(BasePlayer): counter = models.IntegerField(initial=0) class Record(ExtraModel): player = models.Link(Player) who = models.StringField() when = models.FloatField() click=models.IntegerField() def custom_export(players): # header row yield ['session_code', 'participant_code', 'id_in_group','click_who', 'when', 'count'] for rec in Record.objects.order_by('id'): yield [rec.player.session.code, rec.player.participant.code, rec.player.id_in_group, rec.who, rec.when, rec.click]