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)
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
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)
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))
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))
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))
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
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)
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)
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)
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)
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)