예제 #1
0
def add_video(request, content_group_name):
    """
        add video
    """

    if not is_owner(request.user):
        return HttpResponseRedirect('/EEG/not_owner')
    if request.method == 'GET':
        context_base = owner_context(request.user.owner, content_group_name)
        context_base['current_content'] = None
        form = VideoForm()
        return render_to_response(
            'add_video.html',
            RequestContext(request, union({'form': form}, context_base)))
    else:
        form = VideoForm(request.POST)
        if form.is_valid():
            content_group = ContentGroup.objects.get(name=content_group_name)
            name = form.cleaned_data['name']
            url = form.cleaned_data['url']
            vid_id = url[-11:]
            duration_secs = get_video_length(vid_id)
            VideoContent.objects.create(name=name,
                                        group=content_group,
                                        video_url=url,
                                        duration=duration_secs)

            redirect = HttpResponseRedirect('/EEG/market/cg/' +
                                            content_group.name + '?' +
                                            urlencode({'content': name}))
            return redirect
    return HttpResponseRedirect('/EEG/add_video/' + content_group_name)
예제 #2
0
def add_campaign(request):
    """
    add a new campaign
    """
    if not is_owner(request.user):
        return HttpResponseRedirect('/EEG/not_owner')
    if request.method == 'GET':
        context_base = owner_context(request.user.owner)
        form = ContentGroupForm()
        return render_to_response(
            'add_campaign.html',
            RequestContext(request, union({'form': form}, context_base)))
    else:
        form = ContentGroupForm(request.POST)
        if form.is_valid():
            content_group_name = form.cleaned_data['content_group_name']
            content_group_name = '_'.join(content_group_name.split(' '))
            content_group = ContentGroup.objects.create(
                name=content_group_name)
            content_group.owners.add(request.user.owner)
            content_group.save()

            return HttpResponseRedirect('/EEG/add_video/' + content_group_name)
    return HttpResponseRedirect(
        '/EEG/add_campaign/')  # TODO: display an error message
예제 #3
0
def add_video_series(request, content_group_name):
    """
        page to add video series
        :Args:
        | request: a request object
        | content_group_name: the content group you want to add the videos to
    """
    if not is_owner(request.user):
        return HttpResponseRedirect('/EEG/not_owner')
    if request.method == 'GET':
        context_base = prof_context(request.user.owner, content_group_name)
        context_base['current_lecture'] = None
        form = VideoSeriesForm()
        return render_to_response(
            'add_video_series.html',
            RequestContext(request, union({'form': form}, context_base)))
    else:
        form = VideoSeriesForm(request.POST)
        if form.is_valid():
            content_group = ContentGroup.objects.get(name=content_group_name)
            name = form.cleaned_data['name']
            content = form.cleaned_data['content']
            # TODO: validate that these are all real content names
            VideoSeries.objects.create(name=name,
                                       group=content_group,
                                       content=content)

            redirect = HttpResponseRedirect('/EEG/market/cg/' +
                                            content_group.name + '?' +
                                            urlencode({'content': name}))
            return redirect
    return HttpResponseRedirect('/EEG/add_video_series/' + content_group_name)
예제 #4
0
def game_page(request, game, context):
    sessions = Session.objects.filter(content=game)
    num_views, num_viewers = gen_stats_for_sessions(sessions)
    return render(
        request, 'game.html',
        union({
            'num_views': num_views,
            'num_viewers': num_viewers
        }, context))
예제 #5
0
def video_page(request, video, context):
    sessions = Session.objects.filter(content=video)
    num_views, num_viewers = gen_stats_for_sessions(sessions)
    return render(
        request, 'video.html',
        union({
            'num_views': num_views,
            'num_viewers': num_viewers
        }, context))
예제 #6
0
def series_page(request, series, context):
    vids = series.content.split(';')
    sessions = Session.objects.filter(content__name__in=vids)
    num_views, num_viewers = gen_stats_for_sessions(sessions)
    return render(
        request, 'series.html',
        union({
            'num_views': num_views,
            'num_viewers': num_viewers
        }, context))
예제 #7
0
def add_course(request):
    """
    direct to a add course page
    :Args:
        | request: a request object

    :Returns:
        | a HttpResponse object with that rendered add course text

    """
    if not is_owner(request.user):
        return HttpResponseRedirect('/EEG/not_owner')
    if request.method == 'GET':
        context_base = prof_context(request.user.owner)
        form = ContentGroupForm()
        return render_to_response(
            'add_course.html',
            RequestContext(request, union({'form': form}, context_base)))
    else:
        form = ContentGroupForm(request.POST)
        if form.is_valid():
            content_group_name = form.cleaned_data['content_group_name']
            content_group_name = '_'.join(content_group_name.split(' '))
            content_group = ContentGroup.objects.create(
                name=content_group_name)
            content_group.owners.add(request.user.owner)
            content_group.save()

            user = request.user
            userID = user.username
            studentsList = form.cleaned_data['students'].split(';')
            if len(studentsList[0]) > 0:
                registration_address = request.get_host() + reverse(
                    'EEG.account.views.register')
                registration_address += '?' + urlencode({'student': True})
                mailText = 'Hi, SynMetricer \n\nPlease register this course: ' + content_group_name + '\nTaught by ' + userID
                mailText += ' at ' + registration_address
                mail.send_mail('REGISTER for a new course on SynMetric',
                               mailText,
                               from_email='*****@*****.**',
                               recipient_list=studentsList)
                for s in studentsList:
                    # TODO: 9999 collisions is not infinite, must report error
                    viewers = Viewer.objects.filter(user__email=s)
                    if (len(viewers) == 0):
                        viewer = generate_viewer()
                    else:
                        viewer = viewers[0]
                    content_group.viewers.add(viewer)
                    content_group.save()

            return HttpResponseRedirect('/EEG/add_lecture/' +
                                        content_group_name)
    return HttpResponseRedirect(
        '/EEG/add_course/')  # TODO: display an error message
예제 #8
0
def setup_game(request, content_group_name):
    if not is_owner(request.user):
        return HttpResponseRedirect('/EEG/not_owner')
    context_base = owner_context(request.user.owner, content_group_name,
                                 request.GET.get('content'),
                                 request.GET.get('series'))
    if context_base['current_content'] is not None:
        form = FilmForm(context_base['current_content'].name)
        return render(request, 'setup_game.html',
                      union({'form': form}, context_base))
    return HttpResponseRedirect('/EEG/market/cg/' + content_group_name)
예제 #9
0
def add_lecture(request, content_group_name):
    """
        direct to a add course page
        :Args:
        | request: a request object

        :Returns:
        | a HttpResponse object with that rendered add course text

    """
    if not is_owner(request.user):
        return HttpResponseRedirect('/EEG/not_owner')
    if request.method == 'GET':
        context_base = prof_context(request.user.owner, content_group_name)
        context_base['current_lecture'] = None
        form = LectureForm()
        return render_to_response(
            'add_lecture.html',
            RequestContext(request, union({'form': form}, context_base)))
    else:
        form = LectureForm(request.POST)
        if form.is_valid():
            content_group = ContentGroup.objects.get(name=content_group_name)
            name = form.cleaned_data['name']
            start_time = form.cleaned_data['start_date']
            end_time = form.cleaned_data['end_date']
            start_time.astimezone(pytz.utc)  # convert to utc
            end_time.astimezone(pytz.utc)  # convert to utc
            duration_secs = (start_time - end_time).total_seconds()

            # TODO: add invited viewers
            content = Content.objects.create(name=name,
                                             group=content_group,
                                             duration=duration_secs)
            session = Session.objects.create(start_time=start_time,
                                             end_time=end_time,
                                             content_start_sec=0,
                                             content_end_sec=duration_secs,
                                             name=name,
                                             content=content)

            redirect = HttpResponseRedirect('/EEG/course/' +
                                            content_group.name + '?' +
                                            urlencode({'lecture': name}))
            return redirect
    return HttpResponseRedirect('/EEG/add_lecture/' + content_group_name)
예제 #10
0
def setup_experiment(request, content_group_name):
    """
        setup the necessary information to run an experiment
        :Args:
        | request: a request object
        | content_group_name: the content group you want to start
        :Returns:
        | a HttpResponse object containing the setup page
    """
    if not is_owner(request.user):
        return HttpResponseRedirect('/EEG/not_owner')
    context_base = owner_context(request.user.owner, content_group_name,
                                 request.GET.get('content'),
                                 request.GET.get('series'))
    if context_base['current_series'] is not None:
        form = ExperimentForm(context_base['current_series'].name)
        return render(request, 'setup_experiment.html',
                      union({'form': form}, context_base))
    return HttpResponseRedirect('/EEG/market/cg/' + content_group_name)
예제 #11
0
def add_video_lecture(request, content_group_name):
    """
        direct to a add vedio lecture page
        :Args:
            | request: a request object
            | content_group_name: the content group you want to add the lecture to

        :Returns:
            | a HttpResponse object with that rendered add course text

    """

    if not is_owner(request.user):
        return HttpResponseRedirect('/EEG/not_owner')
    if request.method == 'GET':
        context_base = prof_context(request.user.owner, content_group_name)
        context_base['current_lecture'] = None
        form = VideoLectureForm()
        return render_to_response(
            'add_video_lecture.html',
            RequestContext(request, union({'form': form}, context_base)))
    else:
        form = VideoLectureForm(request.POST)
        if form.is_valid():
            content_group = ContentGroup.objects.get(name=content_group_name)
            name = form.cleaned_data['name']
            url = form.cleaned_data['url']
            vid_id = url[-11:]
            duration_secs = get_video_length(vid_id)
            VideoContent.objects.create(name=name,
                                        group=content_group,
                                        video_url=url,
                                        duration=duration_secs)

            redirect = HttpResponseRedirect('/EEG/course/' +
                                            content_group.name + '?' +
                                            urlencode({'lecture': name}))
            return redirect
    return HttpResponseRedirect('/EEG/add_video_lecture/' + content_group_name)
예제 #12
0
def add_content(request, content_group_name):
    if not is_owner(request.user):
        return HttpResponseRedirect('/EEG/not_owner')
    if request.method == 'GET':
        context_base = owner_context(request.user.owner, content_group_name)
        context_base['current_content'] = None
        form = ContentForm()
        return render_to_response(
            'add_content.html',
            RequestContext(request, union({'form': form}, context_base)))
    else:
        form = ContentForm(request.POST)
        if form.is_valid():
            content_group = ContentGroup.objects.get(name=content_group_name)
            name = form.cleaned_data['name']
            Content.objects.create(
                name=name, group=content_group,
                duration=100)  # TODO: take duratino out of the content model

            return HttpResponseRedirect('/EEG/market/cg/' +
                                        content_group.name + '?' +
                                        urlencode({'content': name}))
    return HttpResponseRedirect('/EEG/add_content/' + content_group_name)