Beispiel #1
0
def stop_session(request):
    # TODO: check that the viewer has permission to stop this
    success = False
    if request.method != 'POST':
        #TODO: log not POST
        pass
    else:
        content_group_name = request.POST.get('content_group_name')
        content_name = request.POST.get('content_name')
        content_time = int(float(request.POST.get('content_time')))
        session_name = request.POST.get('session_name')
        # TODO: search only under current user's invited contents
        content_group = ContentGroup.objects.get(name=content_group_name)
        content = Content.objects.filter(name=content_name,
                                         group=content_group).get()
        print content.name, session_name
        session = Session.objects.filter(name=session_name,
                                         content=content).get()
        session.end_time = timefixer.now()
        session.content_end_sec = content_time
        session.save()

        success = True
    return HttpResponse(json.dumps({
        'ok': success,
        'session_name': session_name
    }),
                        content_type="application/json")
Beispiel #2
0
def check_eeg(request):
    viewer_names = json.loads(request.GET.get('viewer_names'))
    bad_connections = []
    for viewer_name in viewer_names:
        now_time = now()
        cut_off = now_time - datetime.timedelta(seconds=10)
        eegs = Raw.objects.filter(subject__user__username=viewer_name, end_time__gt=cut_off)
        if len(eegs) == 0:
            bad_connections.append(viewer_name)
    if len(bad_connections) > 0:
        return HttpResponse("bad connections: %s " % "; ".join(bad_connections))
    return HttpResponse("OK")
Beispiel #3
0
def fill_db_nm(now=None):
    # fill in default params
    if now is None:
        now = timefixer.now()
    # clear the db
    LabelType.objects.all().delete()
    Label.objects.all().delete()
    Tag.objects.all().delete()
    Raw.objects.all().delete()
    User.objects.all().delete()
    ContentGroup.objects.all().delete()
    Content.objects.all().delete()
    VideoContent.objects.all().delete()
    Session.objects.all().delete()

    # create label type
    label_type = {}
    label_type['engagement'] = LabelType.objects.create(name='engagement')
    label_type['happy'] = LabelType.objects.create(name='happy')
    label_type['sad'] = LabelType.objects.create(name='sad')

    # create prof
    user = User.objects.create(username='******')
    user.set_password('eter')
    user.save()
    owner = Owner.objects.create(user=user, marketer=True)

    # create campaigns
    content_group_names = ['dogs']
    for content_group_name in content_group_names:
        content_group = ContentGroup.objects.create(name=content_group_name)
        content_group.owners.add(owner)
        content_group.save()
        # create happy video
        content1 = VideoContent.objects.create(
            group=content_group,
            video_url='https://www.youtube.com/watch?v=I6yNcW2gmhc',
            duration=2 * 60,
            name='Happy')
        # create sad video
        content2 = VideoContent.objects.create(
            group=content_group,
            video_url='https://www.youtube.com/watch?v=t_9iKAvSybQ',
            duration=2 * 60,
            name='Sad')

        series = VideoSeries.objects.create(group=content_group,
                                            name='Experiment 1',
                                            content='Happy;Sad')
Beispiel #4
0
def start_session(request):
    # TODO: check that the viewer has permission to start this
    success = False
    session_name = None
    if request.method != 'POST':
        #TODO: log not POST
        pass
    else:
        content_group_name = request.POST.get('content_group_name')
        content_name = request.POST.get('content_name')
        content_time = int(float(request.POST.get('content_time')))
        viewer_names = json.loads(request.POST.get('viewer_name'))
        # TODO: search only under current user's invited contents
        viewers = Viewer.objects.filter(user__username__in=viewer_names)

        content_group = ContentGroup.objects.get(name=content_group_name)
        content = Content.objects.filter(name=content_name,
                                         group=content_group).get()
        session_count = content.sessions.count()
        session_name = 'session %d' % session_count
        session = Session.objects.create(content=content,
                                         name=session_name,
                                         start_time=timefixer.now(),
                                         end_time=timefixer.now() +
                                         datetime.timedelta(minutes=1),
                                         content_start_sec=content_time,
                                         content_end_sec=content.duration)
        print content.name, session_name
        session.viewers.add(*viewers)
        session.save()
        success = True
    return HttpResponse(json.dumps({
        'ok': success,
        'session_name': session_name
    }),
                        content_type="application/json")
Beispiel #5
0
def directInput(request):
    student = request.GET.get('student')
    val = int(request.GET.get('confusion'))
    start_time = timefixer.now()
    end_time = start_time + datetime.timedelta(minutes=1)
    confusion_label_type = LabelType.objects.filter(name="confusion").get()
    for i in range(5):
        if i < val:
            confusion = 1
        else:
            confusion = 0
        viewer = Viewer.objects.filter(user__username=student).get()
        tag = Tag.objects.create(subject=viewer,
                                 start_time=start_time,
                                 end_time=end_time)
        label = Label.objects.create(label_type=confusion_label_type,
                                     tag=tag,
                                     true=confusion,
                                     predicted=-1)
    return HttpResponse("input received")
Beispiel #6
0
def add_engagement_test():
    st = timefixer.now()
    et = st + datetime.timedelta(seconds=100)
    viewer = Viewer.objects.get(user__username="******")
    c = VideoContent.objects.all()[0]
    print c.name
    sess = Session.objects.create(content=c,
                                  name='asdf',
                                  start_time=st,
                                  end_time=et,
                                  content_start_sec=0,
                                  content_end_sec=100)
    sess.viewers.add(viewer)
    for i in range(0, 10):
        st_ = st + datetime.timedelta(seconds=i * 10)
        et_ = st_ + datetime.timedelta(seconds=10)
        tag = Tag.objects.create(subject=viewer, start_time=st_, end_time=et_)
        engage = LabelType.objects.get(name='engage')
        Label.objects.create(tag=tag,
                             label_type=engage,
                             true=int(i / 5),
                             predicted=int(i / 3))
Beispiel #7
0
def store_session_tag(request):
    # TODO: check that the viewer has permission to stop this
    success = False
    if request.method != 'POST':
        #TODO: log not POST
        pass
    else:
        content_group_name = request.POST.get('content_group_name')
        content_name = request.POST.get('content_name')
        session_name = request.POST.get('session_name')
        data = request.POST.get('data')
        # TODO: search only under current user's invited contents
        content_group = ContentGroup.objects.get(name=content_group_name)
        content = Content.objects.filter(name=content_name,
                                         group=content_group).get()
        session = Session.objects.filter(name=session_name,
                                         content=content).get()
        tag_time = timefixer.now()
        SessionTag.objects.create(session=session, time=tag_time, data=data)
        success = True

    return HttpResponse(json.dumps({'ok': success}),
                        content_type="application/json")
Beispiel #8
0
def fill_db(now=None):
    # fill in default params
    if now is None:
        now = timefixer.now()
    # clear the db
    LabelType.objects.all().delete()
    Label.objects.all().delete()
    Tag.objects.all().delete()
    Raw.objects.all().delete()
    User.objects.all().delete()
    ContentGroup.objects.all().delete()
    Content.objects.all().delete()
    VideoContent.objects.all().delete()
    Session.objects.all().delete()

    # create label type
    confusion_label_type = LabelType.objects.create(name='confusion')

    # create prof
    user = User.objects.create(username='******')
    user.set_password('essor')
    user.save()
    owner = Owner.objects.create(user=user, marketer=False)

    # create students
    viewer_names = ['bic1', 'alice']
    viewers = []
    for name in viewer_names:
        user = User.objects.create(username=name)
        user.set_password('thomas')
        user.save()
        viewer = Viewer.objects.create(user=user)
        viewers.append(viewer)

    # create classes
    content_group_names = ['software_management', 'bic_capstone']
    lecture_length = 60 * 2
    for content_group_name in content_group_names:
        content_group = ContentGroup.objects.create(name=content_group_name)
        content_group.owners.add(owner)
        content_group.viewers.add(*viewers)
        content_group.save()
        # create lecture 1
        content1 = Content.objects.create(group=content_group,
                                          duration=lecture_length,
                                          name='lecture 1')
        content1.invited_viewers.add(*viewers)
        content1.save()
        d = now + datetime.timedelta(minutes=1)
        session1 = Session.objects.create(
            content=content1,
            start_time=d,
            end_time=d + datetime.timedelta(seconds=lecture_length),
            content_start_sec=0,
            content_end_sec=lecture_length)
        session1.viewers.add(*viewers)
        session1.save()
        # create lecture 2
        content2 = Content.objects.create(group=content_group,
                                          duration=lecture_length,
                                          name='lecture 2')
        content1.invited_viewers.add(*viewers)
        content2.save()
        start_18 = timefixer.str_to_datetime('2018-01-01 00:00:00')
        end_18 = start_18 + datetime.timedelta(lecture_length)
        session2 = Session.objects.create(content=content2,
                                          start_time=start_18,
                                          end_time=end_18,
                                          content_start_sec=0,
                                          content_end_sec=lecture_length)
        session2.viewers.add(*viewers)
        session2.save()
        # gen data for each student
        for viewer in viewers:
            step = 10  # seconds
            for i, t in enumerate(range(0, 300, step)):
                d = session1.start_time
                start_time = d + datetime.timedelta(seconds=t)
                end_time = start_time + datetime.timedelta(seconds=step)
                confusion = i % 2
                predicted_confusion = 1 - i
                tag = Tag.objects.create(subject=viewer,
                                         start_time=start_time,
                                         end_time=end_time)
                label = Label.objects.create(label_type=confusion_label_type,
                                             tag=tag,
                                             true=confusion,
                                             predicted=predicted_confusion)
                raw_data = Raw.objects.create(subject=viewer,
                                              start_time=start_time,
                                              end_time=end_time,
                                              sensor="center",
                                              rawwave='1 2 3 4 5')
Beispiel #9
0
def fill_db_pilot(now=None):
    # fill in default params
    if now is None:
        now = timefixer.now()
    # clear the db
    LabelType.objects.all().delete()
    Label.objects.all().delete()
    Tag.objects.all().delete()
    Raw.objects.all().delete()
    User.objects.all().delete()
    ContentGroup.objects.all().delete()
    Content.objects.all().delete()
    VideoContent.objects.all().delete()
    Session.objects.all().delete()

    # create label type
    label_type = {}
    engage_label_type = LabelType.objects.create(name='engage')

    # create prof
    user = User.objects.create(username='******')
    user.set_password('eter')
    user.save()
    owner = Owner.objects.create(user=user, marketer=True)

    # create viewer
    user = User.objects.create(username='******')
    user.set_password('default')
    user.save()
    viewer = Viewer.objects.create(user=user)

    # create campaigns
    content_group = ContentGroup.objects.create(name='data_collection')
    content_group.owners.add(owner)
    content_group.save()

    vids = {}
    '''
    vids['TED'] = [[], []]
    vids['TED'][0] = [  # engage
    'http://www.youtube.com/watch?v=t8PtN4y3TH8',
    'http://www.youtube.com/watch?v=5AUVBXWiJ3Y',
    'http://www.youtube.com/watch?v=2xvA2M8jn_U',
    'http://www.youtube.com/watch?v=WZKQoWtS-aI',
    'http://www.youtube.com/watch?v=jZTWTQ4ddOc',
    'http://www.youtube.com/watch?v=MNlqpJQfqCc',
    'http://www.youtube.com/watch?v=z8jCuCXmFbQ',
    'http://www.youtube.com/watch?v=fiZFAiZTL5A',
    'http://www.youtube.com/watch?v=2wigi2nL464',
    'http://www.youtube.com/watch?v=2P__7VUNDH0',
    'http://www.youtube.com/watch?v=DHGabjH0eTM',
    'http://www.youtube.com/watch?v=zNqAFw4rBqs',
    'http://www.youtube.com/watch?v=436bdwzqc20',
    'http://www.youtube.com/watch?v=ykUuTgbCCmg',
    'http://www.youtube.com/watch?v=VvynK3E90jA',
    'http://www.youtube.com/watch?v=3qzR2rQWqzw',
    'http://www.youtube.com/watch?v=OdlaA9xscoA',
    'http://www.youtube.com/watch?v=IqttkRSIlvw',
    'http://www.youtube.com/watch?v=eaNN0yUDsfI',
    'http://www.youtube.com/watch?v=PUIKoBiXZ4U']
    vids['TED'][1] = [  # disengage
    'http://www.youtube.com/watch?v=meiU6TxysCg',
    'http://www.youtube.com/watch?v=LCHtw6WbbnM',
    'http://www.youtube.com/watch?v=zAFcV7zuUDA',
    'http://www.youtube.com/watch?v=CK62I-4cuSY',
    'http://www.youtube.com/watch?v=PmDTtkZlMwM',
    'http://www.youtube.com/watch?v=mKXXc14H6RM',
    'http://www.youtube.com/watch?v=6WQtRI7A064',
    'http://www.youtube.com/watch?v=Y6bbMQXQ180',
    'http://www.youtube.com/watch?v=dQpGwnN3dfc',
    'http://www.youtube.com/watch?v=d0NHOpeczUU',
    'http://www.youtube.com/watch?v=DkGMY63FF3Q',
    'http://www.youtube.com/watch?v=nw52e0dfCaA',
    'http://www.youtube.com/watch?v=OzJbpA8_wl4',
    'http://www.youtube.com/watch?v=SosPuPjf3W4',
    'http://www.youtube.com/watch?v=jb7gspHxZiI',
    'http://www.youtube.com/watch?v=-mha1uuMr6k',
    'http://www.youtube.com/watch?v=NHopJHSlVo4',
    'http://www.youtube.com/watch?v=JNJlhtNpuiU',
    'http://www.youtube.com/watch?v=AeTmPRNmwNk',
    'http://www.youtube.com/watch?v=-KSryJXDpZo']
    vids['SuperPoli'] = [[], []]
    vids['SuperPoli'][0] = [  # engage
    'http://www.youtube.com/watch?v=uQB7QRyF4p4',
    'http://www.youtube.com/watch?v=aoRD1wmvwUc',
    'http://www.youtube.com/watch?v=q33drZUXSzY',
    'http://www.youtube.com/watch?v=tnUEcG4iH34',
    'http://www.youtube.com/watch?v=gKKVQLDYYcw',
    'http://www.youtube.com/watch?v=AMpZ0TGjbWE',
    'http://www.youtube.com/watch?v=SKL254Y_jtc',
    'http://www.youtube.com/watch?v=bwwJvVUGxas',
    'http://www.youtube.com/watch?v=KmpiwU50f5w',
    'http://www.youtube.com/watch?v=KlSn8Isv-3M',
    'http://www.youtube.com/watch?v=ANhmS6QLd5Q',
    'http://www.youtube.com/watch?v=K7L5QByvXOQ',
    'http://www.youtube.com/watch?v=1aDhfTGkLTg',
    'http://www.youtube.com/watch?v=dhQKyg6EyTI',
    'http://www.youtube.com/watch?v=dKMyCKx50kQ',
    'http://www.youtube.com/watch?v=anLqu77uTH0',
    'http://www.youtube.com/watch?v=jr2gdPY-88w',
    'http://www.youtube.com/watch?v=dOMrA-BGuLY',
    'http://www.youtube.com/watch?v=9g9wXBkdWEg',
    'http://www.youtube.com/watch?v=68al-o2XSpE']
    vids['SuperPoli'][1] = [  # disengage
    'http://www.youtube.com/watch?v=FBorRZnqtMo',
    'http://www.youtube.com/watch?v=tdAjGXFJw3s',
    'http://www.youtube.com/watch?v=v31chfx7PeY',
    'http://www.youtube.com/watch?v=7h3GPc_yMCE',
    'http://www.youtube.com/watch?v=EZ3B8WvVjL4',
    'http://www.youtube.com/watch?v=grqp-JQMFuM',
    'http://www.youtube.com/watch?v=v30Dpbvvj8s',
    'http://www.youtube.com/watch?v=fbdd_Fasz0k',
    'http://www.youtube.com/watch?v=UPy7RnHwvmA',
    'http://www.youtube.com/watch?v=Y_zTN4BXvYI',
    'http://www.youtube.com/watch?v=X0wkR9goqJ0',
    'http://www.youtube.com/watch?v=EC9j6Wfdq3o',
    'http://www.youtube.com/watch?v=9l4sUV6uSCo',
    'http://www.youtube.com/watch?v=PoU41UwL5LI',
    'http://www.youtube.com/watch?v=DWc7XCLMKfQ',
    'http://www.youtube.com/watch?v=HQdTgkY321s',
    'http://www.youtube.com/watch?v=j3MpFKGNZZA',
    'http://www.youtube.com/watch?v=dDTBnsqxZ3k',
    'http://www.youtube.com/watch?v=Svbcwx6FZPA']
    '''
    vids['TrailerDrug'] = [[], []]
    vids['TrailerDrug'][0] = [  # engage
        'http://www.youtube.com/watch?v=KYBF3HKzrmE',
        'http://www.youtube.com/watch?v=KVu3gS7iJu4',
        'http://www.youtube.com/watch?v=T6DJcgm3wNY',
        'http://www.youtube.com/watch?v=nCjsWpM9zFU',
        'http://www.youtube.com/watch?v=nbp3Ra3Yp74',
        'http://www.youtube.com/watch?v=GokKUqLcvD8',
        'http://www.youtube.com/watch?v=vIu85WQTPRc',
        'http://www.youtube.com/watch?v=HcwTxRuq-uk',
        'http://www.youtube.com/watch?v=atCfTRMyjGU',
        'http://www.youtube.com/watch?v=g8evyE9TuYk',
        'http://www.youtube.com/watch?v=INmtQXUXez8',
        'http://www.youtube.com/watch?v=F_UxLEqd074',
        'http://www.youtube.com/watch?v=g8FBRATbJoA',
        'http://www.youtube.com/watch?v=7VdONYkKFmQ',
        'http://www.youtube.com/watch?v=NLWsK1ZFunA',
        'http://www.youtube.com/watch?v=siQgD9qOhRs',
        'http://www.youtube.com/watch?v=dUkCaPW8xCM',
        'http://www.youtube.com/watch?v=G0k3kHtyoqc',
        'http://www.youtube.com/watch?v=j1p0_R8ZLB0',
        'http://www.youtube.com/watch?v=cRdxXPV9GNQ'
    ]
    vids['TrailerDrug'][1] = [  # disengage
        'http://www.youtube.com/watch?v=P8KAaf45g5U',
        'http://www.youtube.com/watch?v=xN0254u56Mc',
        'http://www.youtube.com/watch?v=ub_a2t0ZfTs',
        'http://www.youtube.com/watch?v=n4X2lbxc5O4',
        'http://www.youtube.com/watch?v=a7nbmjkImHQ',
        'http://www.youtube.com/watch?v=hkBHp1M3_Is',
        'http://www.youtube.com/watch?v=iE7ukc7MV-k',
        'http://www.youtube.com/watch?v=TePVtnXtaPs',
        'http://www.youtube.com/watch?v=bvS0wYB09Ew',
        'http://www.youtube.com/watch?v=90rw7_6cUDE',
        'http://www.youtube.com/watch?v=F-t8HsHNN-k',
        'http://www.youtube.com/watch?v=DC0O5OVnDkY',
        'http://www.youtube.com/watch?v=qSXrTrhx6Us',
        'http://www.youtube.com/watch?v=pBvC_NCkn7I',
        'http://www.youtube.com/watch?v=wdpOIaGnzvA',
        'http://www.youtube.com/watch?v=acwo6OCB9kg',
        'http://www.youtube.com/watch?v=hwBg56bjfMM',
        'http://www.youtube.com/watch?v=yLR2OKesTw0',
        'http://www.youtube.com/watch?v=PaYZn2f8IW8',
        'http://www.youtube.com/watch?v=C7FGtYVQMFc'
    ]
    '''
    vids['TrailerSilence'] = [[], []]
    vids['TrailerSilence'][0] = [  # engage
    'http://www.youtube.com/watch?v=KYBF3HKzrmE',
    'http://www.youtube.com/watch?v=KVu3gS7iJu4',
    'http://www.youtube.com/watch?v=T6DJcgm3wNY',
    'http://www.youtube.com/watch?v=nCjsWpM9zFU',
    'http://www.youtube.com/watch?v=nbp3Ra3Yp74',
    'http://www.youtube.com/watch?v=GokKUqLcvD8',
    'http://www.youtube.com/watch?v=vIu85WQTPRc',
    'http://www.youtube.com/watch?v=HcwTxRuq-uk',
    'http://www.youtube.com/watch?v=atCfTRMyjGU',
    'http://www.youtube.com/watch?v=g8evyE9TuYk',
    'http://www.youtube.com/watch?v=INmtQXUXez8',
    'http://www.youtube.com/watch?v=F_UxLEqd074',
    'http://www.youtube.com/watch?v=g8FBRATbJoA',
    'http://www.youtube.com/watch?v=7VdONYkKFmQ',
    'http://www.youtube.com/watch?v=NLWsK1ZFunA',
    'http://www.youtube.com/watch?v=siQgD9qOhRs',
    'http://www.youtube.com/watch?v=dUkCaPW8xCM',
    'http://www.youtube.com/watch?v=G0k3kHtyoqc',
    'http://www.youtube.com/watch?v=j1p0_R8ZLB0',
    'http://www.youtube.com/watch?v=cRdxXPV9GNQ']
    vids['TrailerSilence'][1] = [  # disengage
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8',
    'http://youtu.be/B3gQaE-43o8']
    '''
    for vid_type in vids.keys():
        for i, url in enumerate(vids[vid_type][0]):
            vid = VideoContent.objects.create(group=content_group,
                                              video_url=url,
                                              duration=180,
                                              name=vid_type + '_Engage_' +
                                              str(i))
            ContentLabel.objects.create(label_type=engage_label_type,
                                        content=vid,
                                        value=1)
        for i, url in enumerate(vids[vid_type][1]):
            vid = VideoContent.objects.create(group=content_group,
                                              video_url=url,
                                              duration=180,
                                              name=vid_type + '_Disengage_' +
                                              str(i))
            ContentLabel.objects.create(label_type=engage_label_type,
                                        content=vid,
                                        value=0)
    VideoContent.objects.create(
        group=content_group,
        video_url='https://www.youtube.com/watch?v=Q2dQy5l072g',
        duration=20,
        name='Fixation')
    # create rest video
    VideoContent.objects.create(group=content_group,
                                video_url='http://youtu.be/B3gQaE-43o8',
                                duration=42,
                                name='Rest')
    '''
    VideoSeries.objects.create(group=content_group,
                                        name='TED',
                                        content='Rest')
    VideoSeries.objects.create(group=content_group,
                                         name='SuperPoli',
                                         content='Rest')
    '''
    VideoSeries.objects.create(group=content_group,
                               name='TrailerDrug',
                               content='Rest')