예제 #1
0
파일: views.py 프로젝트: Out-Man/elearning
def category_detail(request, cat_slug):
	category = get_object_or_404(Category, slug=cat_slug)
	videos = category.video_set.all()
	page_view.send(request.user, 
				page_path=request.get_full_path(), 
				primary_obj=category
	)
	template='videos/video_list.html'
	context = {
		'category': category,
		'videos': videos
	}
	return render(request, template, context)


# def video_edit(request):

# 	template='videos/video_single.html'
# 	context = {}
# 	return render(request, template, context)

# def video_create(request):

# 	template='videos/video_single.html'
# 	context = {}
# 	return render(request, template, context)
def video_detail(request, cat_slug,vid_slug):
	cat = get_object_or_404(Category, slug=cat_slug)
	obj = get_object_or_404(Video, slug=vid_slug, category=cat)
	page_view.send(request.user,
		page_path=request.get_full_path(),
		primary=obj,
		secondary=cat)
	head_title = obj.title
	context = {
		"head_title":head_title,
		"obj":obj,
	}
	template = "videos/video_detail.html"
	try:
		is_member = request.user.is_member
	except:
		is_member = False

	if obj.has_preview or is_member:
		if request.user.is_authenticated():
			comments = obj.comment_set.all()
			comment_form = CommentForm()
			context.update({
				"comments":comments,
				"comment_form":comment_form,
			})
	else:
		next_url = cat.get_absolute_url()
		messages.warning(request, 'You have to be a member to access this content. <a href="%s">Upgrade your account here</a>' %(reverse('account_upgrade'))) 
		return redirect_to(next_url)
		# return HttpResponseRedirect("%s?next=%s"%(reverse('account_upgrade'), next_url)) # activate this if you want the user to go to upgrade
	return render(request, template, context)
예제 #3
0
파일: views.py 프로젝트: LABETE/srvup
 def get_queryset(self, *args, **kwargs):
     cat = get_object_or_404(Category, slug=self.kwargs['slug'])
     qs = Video.objects.get_by_category(self.kwargs['slug'])
     page_view.send(self.request.user,
                    page_path=self.request.get_full_path(),
                    primary_obj=cat)
     return qs
def video_detail(request, cat_slug, vid_slug):
	cat = get_object_or_404(Category, slug=cat_slug)
	obj = get_object_or_404(Video, slug=vid_slug, category=cat)
	page_view.send(request.user,
				page_path=request.get_full_path(),
				primary_obj=obj,
				secondary_obj=cat)
	if request.user.is_authenticated() or obj.has_preview:
		try:
			is_member = request.user.is_member
		except:
			is_member = None
		if is_member or obj.has_preview:
			comments = obj.comment_set.all()
			for c in comments:
				c.get_children()
			comment_form = CommentForm()
			context = {"obj": obj,
				"comments":comments,
				"comment_form": comment_form}
			return render(request, "videos/video_detail.html", context)
		else:
			# upgrade account
			next_url = obj.get_absolute_url()
			return HttpResponseRedirect("%s?next=%s"%(reverse('account_upgrade'), next_url))
	else:
		next_url = obj.get_absolute_url()
		return HttpResponseRedirect("%s?next=%s"%(reverse('login'), next_url))
예제 #5
0
def video_detail(request, cat_slug, vid_slug):

    # try:
    cat = get_object_or_404(Category, slug=cat_slug)
    # cat = Category.objects.get(slug=cat_slug)
    obj = get_object_or_404(Video, slug=vid_slug, category=cat)
    page_view.send(request.user,
                   page_path=request.get_full_path(),
                   primary_obj=obj,
                   secondary_obj=cat)

    # obj  = Video.objects.get(slug=vid_slug)
    if (request.user.is_authenticated()
            and request.user.is_member) or obj.has_preview:
        comments = Comment.objects.filter(video=obj)
        content_type = ContentType.objects.get_for_model(obj)
        tags = TaggedItem.objects.filter(content_type=content_type,
                                         object_id=obj.id)
        print(obj.tags.all())
        comment_form = CommentForm()

        context = {
            "object": obj,
            "comments": comments,
            "comment_form": comment_form
        }
        return render(request, "videos/video_detail.html", context)
    else:
        next_url = obj.get_absolute_url()
        return HttpResponseRedirect('%s?next=%s' %
                                    (reverse('login'), next_url))
예제 #6
0
def category_detail(request, cat_slug):
    cat = get_object_or_404(Category,slug=cat_slug)
    page_view.send(
        sender = request.user,
        path = request.get_full_path(),
        primary_obj = cat,)
    return render(request, 'video/category_detail.html', {'object': cat,})
def logged_in_homepage(request):
	try:
	    page_view.send(
	    	request.user,
	    	page_path=request.get_full_path()
	    	)
	    if request.user.is_authenticated():
	    	page_view_objs = request.user.pageview_set.get_videos()[:6]

	    	recent_videos = []
	    	for obj in page_view_objs:
	    		if not obj.primary_object in recent_videos:
	    			#print obj.primary_object
	    			recent_videos.append(obj.primary_object)
	    	recent_questions = Question.objects.recent()

	    	#top items
	    	video_type = ContentType.objects.get_for_model(Video)
	    	popular_videos_list = PageView.objects.filter(primary_content_type=video_type)\
	    	 .values("primary_object_id")\
	    	 .annotate(the_count=Count("primary_object_id"))\
	    	 .order_by("-the_count")[:4]
	    	popular_videos = []
	    	for item in popular_videos_list:
	    		try:
	    			new_video = Video.objects.get(id=item['primary_object_id'])
	    			popular_videos.append(new_video)
	    		except:
	    			pass

	    	random_videos = Video.objects.all().order_by('?')[:6]
	    	#print popular_videos
	    	# one item
	    	#PageView.objects.filter(primary_content_type=video_type, primary_object_id=21).count()


	    	context = {
	    		"random_videos": random_videos,
	    		"recent_videos": recent_videos,
	    		"recent_questions": recent_questions,
	    		"popular_videos": popular_videos,
	    		}
	    	template = "logged_in/home.html"
	    	#return HttpResponseRedirect('/dashboard/')
	    else:
	    	featured_categories = Category.objects.get_featured()
	    	featured_videos = Video.objects.get_featured()
	    	login_form = LoginForm()
	    	register_form = RegisterForm()
	    	template = "post_list.html"
	    	context = {
	    		"register_form": register_form,
	    		"login_form": login_form,
	    		"featured_videos":featured_videos,
	    		"featured_categories": featured_categories,
	    	}

	    return render(request,template,context)
	except:
		raise Http404
예제 #8
0
파일: views.py 프로젝트: Pythonian/srvup
def video_detail(request, cat_slug, vid_slug):
    cat = get_object_or_404(Category, slug=cat_slug)
    obj = get_object_or_404(Video, slug=vid_slug, category=cat)
    page_view.send(request.user,
                   page_path=request.get_full_path(),
                   primary_obj=obj,
                   secondary_obj=cat)
    if request.user.is_authenticated() or obj.has_preview:
        try:
            is_member = request.user.is_member
        except:
            is_member = None
        if is_member or obj.has_preview:
            comments = obj.comment_set.all()
            for c in comments:
                c.get_children()
            comment_form = CommentForm()
            context = {
                "obj": obj,
                "comments": comments,
                "comment_form": comment_form
            }
            return render(request, "videos/video_detail.html", context)
        else:
            # upgrade account
            next_url = obj.get_absolute_url()
            return HttpResponseRedirect("%s?next=%s" %
                                        (reverse('account_upgrade'), next_url))
    else:
        next_url = obj.get_absolute_url()
        return HttpResponseRedirect("%s?next=%s" %
                                    (reverse('login'), next_url))
예제 #9
0
def video_detail(request, cat_slug, vid_slug):
    cat = get_object_or_404(Category, slug=cat_slug)
    obj = get_object_or_404(Video, slug=vid_slug, category=cat)
    page_view.send(request.user,
                   page_path=request.get_full_path(),
                   primary=obj,
                   secondary=cat)
    head_title = obj.title
    context = {
        "head_title": head_title,
        "obj": obj,
    }
    template = "videos/video_detail.html"
    try:
        is_member = request.user.is_member
    except:
        is_member = False

    if obj.has_preview or is_member:
        if request.user.is_authenticated():
            comments = obj.comment_set.all()
            comment_form = CommentForm()
            context.update({
                "comments": comments,
                "comment_form": comment_form,
            })
    else:
        next_url = cat.get_absolute_url()
        messages.warning(
            request,
            'You have to be a member to access this content. <a href="%s">Upgrade your account here</a>'
            % (reverse('account_upgrade')))
        return redirect_to(next_url)
        # return HttpResponseRedirect("%s?next=%s"%(reverse('account_upgrade'), next_url)) # activate this if you want the user to go to upgrade
    return render(request, template, context)
예제 #10
0
파일: views.py 프로젝트: LABETE/srvup
 def get_context_data(self, *args, **kwargs):
     context = super(HomeView, self).get_context_data(*args, **kwargs)
     page_view.send(self.request.user,
                    page_path=self.request.get_full_path())
     if not self.request.user.is_authenticated():
         context["featured_videos"] = Video.objects.get_featured()
         context["featured_categories"] = Category.objects.get_featured()
     if self.request.user.is_authenticated():
         recent_views_objs = self.request.user.pageview_set.get_videos()
         recent_videos = []
         for video in recent_views_objs:
             if video.primary_object not in recent_videos:
                 recent_videos.append(video.primary_object)
         recent_comments = Comment.objects.recent()
         popular_videos = []
         video_type = ContentType.objects.get_for_model(Video)
         popular_videos_list = PageView.objects.filter(
             primary_content_type=video_type)\
             .values("primary_object_id")\
             .annotate(the_count=Count("primary_object_id"))\
             .order_by("-the_count")[:2]
         for item in popular_videos_list:
             popular_video = Video.objects.get(id=item["primary_object_id"])
             popular_videos.append(popular_video)
         random_videos = Video.objects.all().order_by("?")[:6]
         context["recent_videos"] = recent_videos
         context["recent_comments"] = recent_comments
         context["popular_videos"] = popular_videos
         context["random_videos"] = random_videos
     return context
예제 #11
0
파일: views.py 프로젝트: marcogx/psps
def video_detail(request, proj_slug, vid_slug):
	proj = get_object_or_404(Project, slug=proj_slug)
	vid = get_object_or_404(Video, slug=vid_slug, proj=proj)
	page_view.send(
		request.user,
		page_path=request.get_full_path(),
		primary_obj=vid,
		secondary_obj=proj
	)
	if request.user.is_authenticated() or vid.has_preview:
		if vid.has_preview or request.user.is_member:
			comments = vid.comment_set.all()
			for comment in comments:
				comment.get_children()
			comment_form = CommentForm()
			context = {
				"video": vid,
				"comments": comments,
				"comment_form": comment_form
			}
			return render(request, "videos/video_detail.html", context)
		else:
			# upgrade account and set the current video url as the next url once the upgrade completes.
			next_url = vid.get_absolute_url()
			return HttpResponseRedirect("%s?next=%s" % (reverse('account_upgrade'), next_url))
	else:
		# let visitor login and set the current video url as the next usl once the login completes.
		next_url = vid.get_absolute_url()
		return HttpResponseRedirect("%s?next=%s" % (reverse('login'), next_url))
def category_detail(request, cat_slug):
    obj = get_object_or_404(Category, slug=cat_slug)
    queryset = obj.video_set.all()
    page_view.send(request.user,
                   page_path=request.get_full_path(),
                   primary_obj=obj)
    print queryset
    return render(request, "videos/video_list.html", {"obj": obj, "queryset": queryset})
예제 #13
0
 def get_context_data(self, *args, **kwargs):
     context = super(VideoDetailView, self).get_context_data(*args, **kwargs)
     cat = get_object_or_404(Category, slug=self.kwargs["cat_slug"])
     vid = get_object_or_404(Video, slug=self.kwargs["slug"], category=cat)
     page_view.send(self.request.user, page_path=self.request.get_full_path(), primary_obj=vid, secondary_obj=cat)
     context["comments"] = self.get_object().comment_set.all()
     context["form"] = self.form_class
     return context
예제 #14
0
def home(request):
    #向signal函数page_view发送本次事件的参数
    page_view.send(request.user, page_path=request.get_full_path())
    #访问者是否是注册用户
    if request.user.is_authenticated():
        #用户最近浏览过的6个视频
        page_view_objs = request.user.pageview_set.get_videos()[:6]
        recent_videos = []
        #将最近浏览过的视频添加到列表recent_videos里
        for obj in page_view_objs:
            if not obj.primary_object in recent_videos:
                recent_videos.append(obj.primary_object)
        #最近的6个评论
        recent_comments = Comment.objects.recent()

        video_type = ContentType.objects.get_for_model(Video)
        #点击次数最多的4个视频
        popular_videos_list = PageView.objects.filter(primary_content_type=video_type)\
         .values("primary_object_id")\
         .annotate(the_count=Count("primary_object_id"))\
         .order_by("-the_count")[:4]
        popular_videos = []
        for item in popular_videos_list:
            try:
                new_video = Video.objects.get(id=item['primary_object_id'])
                popular_videos.append(new_video)
            except:
                pass
        #随机的6个视频
        random_videos = Video.objects.all().order_by('?')[:6]

        context = {
            "random_videos": random_videos,
            "recent_videos": recent_videos,
            "recent_comments": recent_comments,
            "popular_videos": popular_videos,
        }
        template = "accounts/home_logged_in.html"
    else:
        #有代表性的视频类别
        featured_categories = Category.objects.get_featured()
        #有代表性的视频
        featured_videos = Video.objects.get_featured()
        login_form = LoginForm()
        #注册表
        register_form = RegisterForm()
        template = "accounts/home_visitor.html"
        queryset = Category.objects.all()

        context = {
            "register_form": register_form,
            "login_form": login_form,
            "featured_videos": featured_videos,
            "featured_categories": featured_categories,
            "queryset": queryset,
        }

    return render(request, template, context)
예제 #15
0
def category_detail(request, cat_slug):
    cat = get_object_or_404(Category, slug=cat_slug)
    queryset = cat.video_set.all()
    page_view.send(request.user,
                   page_path=request.get_full_path(),
                   primary_obj=cat)

    context = {"object": cat, "queryset": queryset}
    return render(request, "videos/category_detail.html", context)
예제 #16
0
파일: views.py 프로젝트: marcogx/psps
def project_detail(request, proj_slug):
	proj = get_object_or_404(Project, slug=proj_slug)
	video_queryset = proj.video_set.all()
	page_view.send(request.user, page_path=request.get_full_path(), primary_obj=proj)
	context = {
		"project": proj,
		"queryset": video_queryset,
	}
	return render(request, "videos/project_detail.html", context)
예제 #17
0
def category_detail(request, cat_slug):
	#从视频地址中的cat_slug解析视要浏览的类
	obj = get_object_or_404(Category, slug=cat_slug)
	#类别中的所有视频
	queryset = obj.video_set.all()
	#当进入视频类别页就会发送消息到analytics.signals.page_view,通知最近浏览视频类别
	page_view.send(request.user, 
			page_path=request.get_full_path(), 
			primary_obj=obj)
	return render(request, "videos/video_list.html", {"obj": obj, "queryset": queryset})
예제 #18
0
파일: views.py 프로젝트: Pythonian/srvup
def category_detail(request, cat_slug):
    obj = get_object_or_404(Category, slug=cat_slug)
    queryset = obj.video_set.all()
    page_view.send(request.user,
                   page_path=request.get_full_path(),
                   primary_obj=obj)
    return render(request, "videos/video_list.html", {
        "obj": obj,
        "queryset": queryset
    })
예제 #19
0
def home(request):

    page_view.send(request.user, page_path=request.get_full_path())
    if request.user.is_authenticated():
        page_view_objs = request.user.pageview_set.get_videos()[:6]

        recent_videos = []
        for obj in page_view_objs:
            if not obj.primary_object in recent_videos:
                #print obj.primary_object
                recent_videos.append(obj.primary_object)
        recent_comments = Comment.objects.recent()

        #top items
        video_type = ContentType.objects.get_for_model(Video)
        popular_videos_list = PageView.objects.filter(primary_content_type=video_type)\
         .values("primary_object_id")\
         .annotate(the_count=Count("primary_object_id"))\
         .order_by("-the_count")[:4]
        popular_videos = []
        for item in popular_videos_list:
            try:
                new_video = Video.objects.get(id=item['primary_object_id'])
                popular_videos.append(new_video)
            except:
                pass

        random_videos = Video.objects.all().order_by('?')[:6]
        #print popular_videos
        # one item
        #PageView.objects.filter(primary_content_type=video_type, primary_object_id=21).count()

        context = {
            "random_videos": random_videos,
            "recent_videos": recent_videos,
            "recent_comments": recent_comments,
            "popular_videos": popular_videos,
        }
        template = "accounts/home_logged_in.html"
        #return HttpResponseRedirect('/dashboard/')
    else:
        featured_categories = Category.objects.get_featured()
        featured_videos = Video.objects.get_featured()
        login_form = LoginForm()
        register_form = RegisterForm()
        template = "accounts/home_visitor.html"
        context = {
            "register_form": register_form,
            "login_form": login_form,
            "featured_videos": featured_videos,
            "featured_categories": featured_categories,
        }

    return render(request, template, context)
예제 #20
0
def category_detail(request, cat_slug):
    obj = get_object_or_404(Category, slug=cat_slug)
    videos = obj.video_set.all()
    page_view.send(
        request.user,
        page_path=request.get_full_path(),
        notify_primary=obj,
    )
    context = {
        "obj": obj,
        "videos": videos,
    }
    return render(request, "category_detail.html", context)
예제 #21
0
def category_detail(request, cat_slug):
    #从视频地址中的cat_slug解析视要浏览的类
    obj = get_object_or_404(Category, slug=cat_slug)
    #类别中的所有视频
    queryset = obj.video_set.all()
    #当进入视频类别页就会发送消息到analytics.signals.page_view,通知最近浏览视频类别
    page_view.send(request.user,
                   page_path=request.get_full_path(),
                   primary_obj=obj)
    return render(request, "videos/video_list.html", {
        "obj": obj,
        "queryset": queryset
    })
예제 #22
0
def category_detail(request, cat_slug):
    """
    Get all videos bound to specific category
    """
    cat = get_object_or_404(Category, slug=cat_slug)
    all_videos = cat.video_set.all()
    page_view.send(request.user,
                   page_path=request.get_full_path(),
                   primary_obj=cat,
                   )
    return render(request, "videos/video_list.html", {"cat": cat,
                                                      "all_videos": all_videos,
                                                      })
예제 #23
0
파일: views.py 프로젝트: marcogx/psps
def home(request):
	page_view.send(request.user, page_path=request.get_full_path())

	if request.user.is_authenticated():
		page_view_list = request.user.pageview_set.get_videos()[:6]
		recent_videos = []
		for obj in page_view_list:
			if obj.primary_object not in recent_videos:
				recent_videos.append(obj.primary_object)
		recent_comments = Comment.objects.recent()

		# Top videos showed on homepage
		video_type = ContentType.objects.get_for_model(Video)
		popular_videos_list = PageView.objects.filter(primary_content_type=video_type) \
			.values("primary_object_id").annotate(the_count=Count("primary_object_id")) \
			.order_by("-the_count")[:5]
		popular_videos = []
		for item in popular_videos_list:
			try:
				new_video = Video.objects.get(id=item['primary_object_id'])
				popular_videos.append(new_video)
			except:
				pass

		print 'yoyoyo', popular_videos
		# !!!This is where recommended items and recommendation system play a role in future
		random_videos = Video.objects.all().order_by('?')[:10]
		# recommended_items = random_videos

		context = {
			"random_videos": random_videos,
			"recent_videos": recent_videos,
			"recent_comments": recent_comments,
			"popular_videos": popular_videos,
		}
		template = "accounts/home_logged_in.html"
	else:
		featured_categories = Project.objects.get_featured()
		featured_videos = Video.objects.get_featured()
		login_form = LoginForm()
		register_form = RegisterForm()
		template = "accounts/home_visitor.html"
		context = {
			"register_form": register_form,
			"login_form": login_form,
			"featured_videos": featured_videos,
			"featured_categories": featured_categories,
		}

	return render(request, template, context)
예제 #24
0
def home(request):
    # print request.user.pageview_set.get_videos()
    page_view.send(
        request.user,
        page_path=request.get_full_path())
    if request.user.is_authenticated():
        page_view_objects = request.user.pageview_set.get_videos()[:6]

        recent_videos=[]
        for  obj in page_view_objects:
            if not obj.primary_object in recent_videos:
                recent_videos.append(obj.primary_object)
        recent_comments = Comment.objects.recent()
        


        #top itmes
        video_type = ContentType.objects.get_for_model(Video)
        popular_videos = PageView.objects.filter(primary_content_type=video_type).values("primary_object_id")\
                                .annotate(the_count=Count("primary_object_id"))\
                                .order_by("-the_count")[:10]
        
        
        
        # one item
        # pageView.objects.filter(primary_content_type=video_type,primary_object_id=6).count()
        
        popular_videos_list=[]
        for item in popular_videos:
            try:
                new_video = Video.objects.get(id=item['primary_object_id'])
                popular_videos_list.append(new_video)
            except:
                pass
        
        context ={"recent_videos":recent_videos,
                  "recent_comments": recent_comments,
                  "popular_videos": popular_videos_list
                    
        }
        template = "home_logged_in.html"
        
    else:
        login_form = LoginForm(request.POST or None)
        register_form =  RegistrationForm(request.POST or None)
        template = "home_visitor.html"
        context = {"register_form":register_form,"login_form":login_form}
    
    return render(request,template,context)
예제 #25
0
파일: views.py 프로젝트: Out-Man/elearning
def home(request):
	page_view.send(
		request.user,
		page_path=request.get_full_path()
	)
	if request.user.is_authenticated():
		page_view_objs = request.user.pageview_set.get_videos()[:6]
		recent_videos = []
		for obj in page_view_objs:
			if not obj.primary_object in recent_videos:
				recent_videos.append(obj.primary_object)
		recent_comments = Comment.objects.recent()

		#top items
		video_type = ContentType.objects.get_for_model(Video)
		popular_videos_list = PageView.objects.filter(primary_content_type=video_type)\
		.values("primary_object_id")\
		.annotate(the_count=Count("primary_object_id"))\
		.order_by("-the_count")[:4]
		popular_videos = []
		for item in popular_videos_list:
			try:
				new_video = Video.objects.get(id=item['primary_object_id'])
				popular_videos.append(new_video)
			except:
				pass
		random_videos = Video.objects.all().order_by('?')[:6]
		context = {
			"random_videos": random_videos,
			"recent_videos": recent_videos,
			"recent_comments": recent_comments,
			"popular_videos": popular_videos,
		}
		template = 'accounts/home_logged_in.html'
	else:
		featured_categories = Category.objects.get_featured()
		featured_videos = Video.objects.get_featured()
		login_form = LoginForm()
		register_form = RegisterForm()
		template = 'accounts/home_visitor.html'
		context = {
			"register_form": register_form, 
			"login_form": login_form,
			"featured_videos": featured_videos,
			"featured_categories": featured_categories, 
		}
	
	return render(request, template, context)
def category_detail(request, cat_slug):
	head_title = "Detailed"
	path = request.get_full_path()
	comments = Comment.objects.filter(path=path)
	obj = get_object_or_404(Category, slug=cat_slug)
	queryset = obj.video_set.all()
	page_view.send(request.user,
		page_path=request.get_full_path(),
		primary=obj,)
	context  = {
		"head_title":head_title,
		"obj":obj,
		"queryset":queryset,
		"comments":comments,
	}
	template = "videos/category_detail.html"
	return render(request, template, context)
예제 #27
0
파일: views.py 프로젝트: topaz1874/srvup
def home(request):
    if request.user.is_authenticated():
        page_view.send(
            sender=request.user,
            path=request.get_full_path())

        obj_lst = []
        # recent_comments = Comment.objects.get_recent(request.user)
        recent_videos = request.user.pageview_set.get_videos()[:6]
        recent_comments = request.user.comment_set.get_recent()
        video_type = ContentType.objects.get_for_model(Video)
        popular_videos_ids = request.user.pageview_set\
            .filter(primary_content_type=video_type)\
            .values_list("primary_object_id")\
            .annotate(the_count=Count("primary_object_id"))\
            .order_by('-the_count')[:6]
        popular_videos = []
        if popular_videos:
            for i in popular_videos_ids:
                popular_videos.append(Video.objects.get(id=i[0]))

        for vid in recent_videos:
            obj =  vid.primary_content_object
            if obj not in obj_lst:
                obj_lst.append(obj) 

        if  len(obj_lst) == 0:
            return redirect('category_list')
        context = {
        'obj_lst':obj_lst,
        'recent_comments': recent_comments,
        'popular_videos': popular_videos,
        }
        return render(request, 'home_logged_in.html',context)
    else:
        # register_form = UserCreationForm()
        register_form = RegisterForm()
        #todo use cripsy tags with ajax validation
        login_form = LoginForm()
        context = {
        'register_form': register_form,
        'login_form': login_form,
        }
        return render(request, "home.html", context)
예제 #28
0
def video_detail(request, cat_slug, vid_slug):
    """
    Take a look at videos, check if user has a premium account.
    List free videos if possible.
    """
    cat = get_object_or_404(Category, slug=cat_slug)
    video = get_object_or_404(Video, slug=vid_slug, category=cat)

    # Log that video page is viewed for analytics purpose
    page_view.send(request.user,
                   page_path=request.get_full_path(),
                   primary_obj=video,
                   secondary_obj=cat
                   )

    if request.user.is_authenticated() or video.has_preview:
        try:
            is_member = request.user.is_member
        except:
            is_member = None
        if is_member or video.has_preview:
            comment_form = CommentForm()
            comments = video.comment_set.all()

            context = {"video": video,
                       "comments": comments,
                       "comment_form": comment_form,
                       }
            return render(request, "videos/video_detail.html", context)
        else:
            # If viewer has no premium account, ask for it
            next_url = video.get_absolute_url()
            return HttpResponseRedirect("%s?next=%s" % (
                reverse('account_upgrade'),
                next_url)
                )
    else:
        # If viewer is not logged in ask to log in
        next_url = video.get_absolute_url()
        return HttpResponseRedirect("%s?next=%s" % (
            reverse('account_login'),
            next_url)
            )
예제 #29
0
def home(request):
    # print request.user.pageview_set.get_videos()
    page_view.send(request.user, page_path=request.get_full_path())
    if request.user.is_authenticated():
        page_view_objects = request.user.pageview_set.get_videos()[:6]

        recent_videos = []
        for obj in page_view_objects:
            if not obj.primary_object in recent_videos:
                recent_videos.append(obj.primary_object)
        recent_comments = Comment.objects.recent()

        #top itmes
        video_type = ContentType.objects.get_for_model(Video)
        popular_videos = PageView.objects.filter(primary_content_type=video_type).values("primary_object_id")\
                                .annotate(the_count=Count("primary_object_id"))\
                                .order_by("-the_count")[:10]

        # one item
        # pageView.objects.filter(primary_content_type=video_type,primary_object_id=6).count()

        popular_videos_list = []
        for item in popular_videos:
            try:
                new_video = Video.objects.get(id=item['primary_object_id'])
                popular_videos_list.append(new_video)
            except:
                pass

        context = {
            "recent_videos": recent_videos,
            "recent_comments": recent_comments,
            "popular_videos": popular_videos_list
        }
        template = "home_logged_in.html"

    else:
        login_form = LoginForm(request.POST or None)
        register_form = RegistrationForm(request.POST or None)
        template = "home_visitor.html"
        context = {"register_form": register_form, "login_form": login_form}

    return render(request, template, context)
예제 #30
0
def category_detail(request, cat_slug):
    head_title = "Detailed"
    path = request.get_full_path()
    comments = Comment.objects.filter(path=path)
    obj = get_object_or_404(Category, slug=cat_slug)
    queryset = obj.video_set.all()
    page_view.send(
        request.user,
        page_path=request.get_full_path(),
        primary=obj,
    )
    context = {
        "head_title": head_title,
        "obj": obj,
        "queryset": queryset,
        "comments": comments,
    }
    template = "videos/category_detail.html"
    return render(request, template, context)
예제 #31
0
def video_detail(request,cat_slug,vid_slug):
    """
    video object can be retrieved if user is authenticated 
    or has free preivew property otherwise redirect to login
    page
    """
    cat = get_object_or_404(Category, slug=cat_slug)
    obj = get_object_or_404(Video, category=cat, slug=vid_slug)
    
    page_view.send(
        sender = request.user,
        path = request.get_full_path(),
        primary_obj = obj,
        secondary_obj = cat)


    if request.user.is_authenticated():
        member = request.user.is_member
        if member:
            comments = obj.comment_set.all()
            comment_form = CommentForm(request.POST or None)
            return render(request, 'video/video_detail.html', {
                'object':obj,
                'comments':comments,
                'comment_form':comment_form,
                })
    
        elif  obj.has_preview:
            return render(request, 'video/video_detail.html', {'object':obj,})

        else:
            # upgrade to become a member
            next_url = obj.get_absolute_url()
            return HttpResponseRedirect('%s?next=%s' % (reverse('upgrade'),next_url))
    

    else:
        next_url = obj.get_absolute_url()
        return HttpResponseRedirect('%s?next=%s' % (reverse('login'),next_url))
예제 #32
0
def video_detail(request, cat_slug, slug):
    # path = request.get_full_path()
    # comments = Comment.objects.filter(path=path)

    cat = get_object_or_404(Category, slug=cat_slug)
    obj = get_object_or_404(Video, slug=slug)
    page_view.send(request.user,
                   page_path=request.get_full_path(),
                   notify_primary=obj,
                   notify_secondary=cat)
    if request.user.is_authenticated() or obj.has_preview:
        is_member = None
        try:
            is_member = request.user.is_member
        except:
            is_member = None
        if is_member:
            comments = obj.comment_set.all()
            form = CommentForm(request.POST or None)

            context = {
                "obj": obj,
                "comments": comments,
                "form": form,
            }

            # if form.is_valid():
            # 	parent_id = request.POST.get('parent_id')
            # 	parent_comment = None
            # 	if parent_id is not None:
            # 		try:
            # 			parent_comment = Comment.objects.get(id=parent_id)
            # 		except:
            # 			parent_comment = None

            # 	comment_text = form.cleaned_data["comment"]
            # 	new_comment = Comment.objects.create_comment(
            # 		user = request.user,
            # 		path = request.get_full_path(),
            # 		text = comment_text,
            # 		video = obj,
            # 		parent = parent_comment,
            # 		)
            # 	return HttpResponseRedirect(obj.get_absolute_url())

            # obj_instance = form.save(commit=False)
            # obj_instance.path = request.get_full_path()
            # obj_instance.user = request.user
            # obj_instance.video = obj
            # obj_instance.save()

            return render(request, "video_detail.html", context)
        else:
            # UPGRADE ACCOUNT
            next_url = obj.get_absolute_url()
            return HttpResponseRedirect("{}?next={}".format(
                reverse("account_upgrade"), next_url))
    else:
        next_url = obj.get_absolute_url()
        return HttpResponseRedirect("{}?next={}".format(
            reverse("login"), next_url))
예제 #33
0
def home(request):
	#向signal函数page_view发送本次事件的参数
	page_view.send(
		request.user,
		page_path=request.get_full_path()
		)
	#访问者是否是注册用户
	if request.user.is_authenticated():
		#用户最近浏览过的6个视频
		page_view_objs = request.user.pageview_set.get_videos()[:6]
		recent_videos = []
		#将最近浏览过的视频添加到列表recent_videos里
		for obj in page_view_objs:
			if not obj.primary_object in recent_videos:
				recent_videos.append(obj.primary_object)
		#最近的6个评论
		recent_comments = Comment.objects.recent()

		video_type = ContentType.objects.get_for_model(Video)
		#点击次数最多的4个视频
		popular_videos_list = PageView.objects.filter(primary_content_type=video_type)\
		 .values("primary_object_id")\
		 .annotate(the_count=Count("primary_object_id"))\
		 .order_by("-the_count")[:4]
		popular_videos = []
		for item in popular_videos_list:
			try:
				new_video = Video.objects.get(id=item['primary_object_id'])
				popular_videos.append(new_video)
			except:
				pass
		#随机的6个视频
		random_videos = Video.objects.all().order_by('?')[:6]

		context = {
			"random_videos": random_videos,
			"recent_videos": recent_videos,
			"recent_comments": recent_comments,
			"popular_videos": popular_videos,
			}
		template = "accounts/home_logged_in.html"
	else:
		#有代表性的视频类别
		featured_categories = Category.objects.get_featured()
		#有代表性的视频
		featured_videos = Video.objects.get_featured()
		login_form = LoginForm()
		#注册表
		register_form = RegisterForm()
		template = "accounts/home_visitor.html"
		queryset = Category.objects.all()

		context = {
				"register_form": register_form, 
				"login_form": login_form, 
				"featured_videos": featured_videos,
				"featured_categories": featured_categories,	
				"queryset": queryset,			
				}
	
	return render(request,template,context)
예제 #34
0
def video_detail(request, cat_slug, vid_slug):
    #如果能接受到POST消息
    if request.method == "POST":
        #并且是注册用户
        if request.user.is_authenticated():
            #某子评论的父评论的id
            parent_id = request.POST.get('parent_id')
            #评论视频id
            video_id = request.POST.get("video_id")
            #被评论视频的地址
            origin_path = request.POST.get("origin_path")

            reponse_id = request.POST.get("reponse_id")

            reponse = None
            if reponse_id is not None:
                try:
                    reponse = Comment.objects.get(id=reponse_id).user
                except:
                    reponse = None

            try:
                video = Video.objects.get(id=video_id)
            except:
                video = None
            #如果该评论有父评论,则获得评论的实例
            parent_comment = None
            if parent_id is not None:
                try:
                    parent_comment = Comment.objects.get(id=parent_id)
                except:
                    parent_comment = None

            form = CommentForm(request.POST)
            #如果评论表格有效则获得填写的内容
            if form.is_valid():
                comment_text = form.cleaned_data['comment']
                #如果该评论是子评论
                if parent_comment is not None:
                    #生成新的评论实例
                    new_comment = Comment.objects.create_comment(
                        user=request.user,
                        path=parent_comment.get_origin,
                        text=comment_text,
                        video=video,
                        parent=parent_comment,
                        reponse=reponse)

                    #获得所有同一父评论的所有子评论用户以及该评论父评论的用户
                    affected_users = parent_comment.get_affected_users()
                    if parent_comment.user in affected_users:
                        pass
                    else:
                        affected_users = affected_users.append(
                            parent_comment.user)
                    notify.send(request.user,
                                action=new_comment,
                                target=parent_comment,
                                recipient=parent_comment.user,
                                affected_users=affected_users,
                                verb=u'回复了')
                    messages.success(request, "感谢您的评论!")
                    return HttpResponseRedirect(origin_path)

                #如果该评论是父评论
                else:
                    #生成新的评论实例
                    new_comment = Comment.objects.create_comment(
                        user=request.user,
                        path=origin_path,
                        text=comment_text,
                        video=video)
                    messages.success(request, "感谢您的评论!")
                    return HttpResponseRedirect(origin_path)

            else:
                messages.error(request, "您填写的内容有问题!")
                return HttpResponseRedirect(origin_path)

        #如果不是注册用户则提议登录
        else:
            messages.error(request, "登录就能与同学们一起讨论课程了!")
            origin_path = request.POST.get("origin_path")
            return HttpResponseRedirect(origin_path)

    #从视频地址中的cat_slug解析视频所属的类
    cat = get_object_or_404(Category, slug=cat_slug)
    #从视频地址中的vid_slug解析视频具体地址
    obj = get_object_or_404(Video, slug=vid_slug, category=cat)
    #类别中的所有视频
    queryset = cat.video_set.all()
    #当进入视频页就会发送消息到analytics.signals.page_view,通知最近浏览视频
    page_view.send(request.user,
                   page_path=request.get_full_path(),
                   primary_obj=obj,
                   secondary_obj=cat)
    #如果浏览用户是注册用户或者视频是免费的
    if request.user.is_authenticated() or obj.has_preview:
        #视频所有的父评论
        comments = obj.comment_set.all()
        #评论的子评论
        for c in comments:
            c.get_children()
        comment_form = CommentForm()
        context = {
            "obj": obj,
            "queryset": queryset,
            "comments": comments,
            "comment_form": comment_form
        }
        return render(request, "videos/video_detail.html", context)
    else:
        #如果登录后则重定向到之前需要登录浏览的视频
        next_url = obj.get_absolute_url()
        return HttpResponseRedirect("%s?next=%s" %
                                    (reverse('login'), next_url))
예제 #35
0
def home(request):
	# register_form = RegisterForm(request.POST or None)

	# if form.is_valid():
	# 	username = form.cleaned_data["username"]
	# 	email = form.cleaned_data["email"]
	# 	password = form.cleaned_data["password2"]

	# 	# MyUser.objects.create_user(username=username, email=email, password=password)
	# 	new_user = MyUser()
	# 	new_user.username = username
	# 	new_user.email = email
	# 	new_user.set_password(password)
	# 	new_user.save()
	# 	return redirect("login")
		# return HttpResponseRedirect(reverve('login'))


	# print(request.get_full_path() == "/")	
	# videos = Video.objects.all()
	# embeds = []

	# for video in videos:
	# 	safe_embed_code = format_html(mark_safe(video.embed_code))
	# 	embeds.append("{}".format(safe_embed_code))

	page_view.send(
		request.user,
		page_path = request.get_full_path(),
		
		)
	if request.user.is_authenticated():
		page_view_objs = request.user.pageview_set.get_videos()[:2]
		recent_videos = []
		for obj in page_view_objs:
			if not obj.primary_content_object in recent_videos:
				recent_videos.append(obj.primary_content_object)

		recent_comments = Comment.objects.recent()

		# top items
		video_type = ContentType.objects.get_for_model(Video)
		popular_videos_list = PageView.objects.filter(primary_content_type=video_type)\
		.values("primary_object_id")\
		.annotate(the_count=Count("primary_object_id"))\
		.order_by("-the_count")[:2]

		popular_videos = []
		for item in popular_videos_list:
			try:
				new_video = Video.objects.get(id=item["primary_object_id"])
				popular_videos.append(new_video)
			except:
				pass
		

		# one item
		# PageView.objects.filter(primary_content_type=video_type, primary_object_id=2).count()

		template = "home_logged_in.html"

		context = {
			"recent_videos": recent_videos,
			"recent_comments": recent_comments,
			"popular_videos": popular_videos,
		}
	else:
		login_form = LoginForm()
		register_form = RegisterForm()
		template = "home_visitor.html"
		context = {
			"login_form": login_form,
			"register_form": register_form,
			"action_value": "/",
			"submit_btn_value": "Register"
			# "videos": videos,
			# "number": videos.count(),
			# "embeds": embeds,
		}
	return render(request, template, context)
예제 #36
0
def video_detail(request, cat_slug, vid_slug):
	#如果能接受到POST消息
	if request.method == "POST" :
		#并且是注册用户
		if request.user.is_authenticated():
			#某子评论的父评论的id
			parent_id = request.POST.get('parent_id')
			#评论视频id
			video_id = request.POST.get("video_id")
			#被评论视频的地址
			origin_path = request.POST.get("origin_path")

			reponse_id = request.POST.get("reponse_id")

			reponse = None
			if reponse_id is not None:
				try:
					reponse = Comment.objects.get(id=reponse_id).user
				except:
					reponse = None

			try:
				video = Video.objects.get(id=video_id)
			except:
				video = None
			#如果该评论有父评论,则获得评论的实例
			parent_comment = None
			if parent_id is not None:
				try:
					parent_comment = Comment.objects.get(id=parent_id)
				except:
					parent_comment = None

			form = CommentForm(request.POST)
			#如果评论表格有效则获得填写的内容
			if form.is_valid():
				comment_text = form.cleaned_data['comment']
				#如果该评论是子评论
				if parent_comment is not None:
					#生成新的评论实例
					new_comment = Comment.objects.create_comment(
						user=request.user, 
						path=parent_comment.get_origin, 
						text=comment_text,
						video = video,
						parent=parent_comment,
						reponse=reponse
						)

					#获得所有同一父评论的所有子评论用户以及该评论父评论的用户
					affected_users = parent_comment.get_affected_users()
					if parent_comment.user in affected_users:
						pass
					else:
						affected_users=affected_users.append(parent_comment.user)
					notify.send(
							request.user, 
							action=new_comment, 
							target=parent_comment, 
							recipient=parent_comment.user, 
							affected_users = affected_users,
							verb=u'回复了')
					messages.success(request, "感谢您的评论!")
					return HttpResponseRedirect(origin_path)

				#如果该评论是父评论
				else:
					#生成新的评论实例
					new_comment = Comment.objects.create_comment(
						user=request.user, 
						path=origin_path, 
						text=comment_text,
						video = video
						)
					messages.success(request, "感谢您的评论!")
					return HttpResponseRedirect(origin_path)

			else:
				messages.error(request, "您填写的内容有问题!")
				return HttpResponseRedirect(origin_path)

		#如果不是注册用户则提议登录
		else:
			messages.error(request, "登录就能与同学们一起讨论课程了!")
			origin_path = request.POST.get("origin_path")
			return HttpResponseRedirect(origin_path)



	#从视频地址中的cat_slug解析视频所属的类
	cat = get_object_or_404(Category, slug=cat_slug)
	#从视频地址中的vid_slug解析视频具体地址
	obj = get_object_or_404(Video, slug=vid_slug, category=cat)
	#类别中的所有视频
	queryset = cat.video_set.all()
	#当进入视频页就会发送消息到analytics.signals.page_view,通知最近浏览视频
	page_view.send(request.user, 
			page_path=request.get_full_path(), 
			primary_obj=obj,
			secondary_obj=cat)
	#如果浏览用户是注册用户或者视频是免费的
	if request.user.is_authenticated() or obj.has_preview:
		#视频所有的父评论
		comments = obj.comment_set.all()
		#评论的子评论
		for c in comments:
			c.get_children()
		comment_form = CommentForm()
		context = {"obj": obj, 
			"queryset": queryset,
			"comments":comments, 
			"comment_form": comment_form}
		return render(request, "videos/video_detail.html", context)
	else:
		#如果登录后则重定向到之前需要登录浏览的视频
		next_url = obj.get_absolute_url()
		return HttpResponseRedirect("%s?next=%s"%(reverse('login'), next_url))
예제 #37
0
def video_detail(request, cat_slug, vid_slug):
    cat = get_object_or_404(Category, slug=cat_slug)
    obj = get_object_or_404(Video, slug=vid_slug, category=cat)
    quiz_count = range(1, 12)
    multiple_choice_questions = MultipleChoiceQuestion.objects.filter(
        video=obj)
    open_questions = OpenQuestion.objects.filter(video=obj)
    mc_question_list = list(multiple_choice_questions)
    myList = mc_question_list
    # try:
    # 	question5 = mc_question_list.pop()
    # except:
    # 	question5 = ""
    try:
        question1 = mc_question_list.pop()
    except:
        question1 = ""
    try:
        question2 = mc_question_list.pop()
    except:
        question2 = ""
    try:
        question3 = mc_question_list.pop()
    except:
        question3 = ""
    try:
        question4 = mc_question_list.pop()
    except:
        question4 = ""

    page_view.send(request.user,
                   page_path=request.get_full_path(),
                   primary_obj=obj,
                   secondary_obj=cat)
    if request.user.is_authenticated() or obj.has_preview:
        try:
            is_member = request.user.is_member
        except:
            is_member = None
        if is_member or obj.has_preview:
            comments = obj.comment_set.all()
            for c in comments:
                c.get_children()
            comment_form = CommentForm()
            context = {
                "obj": obj,
                'question1': question1,
                'question2': question2,
                'question3': question3,
                'question4': question4,
                # 'question5':question5,
                "myList": myList,
                "comments": comments,
                "quiz_count": quiz_count,
                "comment_form": comment_form,
                "multiple_choice_questions": multiple_choice_questions,
                "open_questions": open_questions
            }
            return render(request, "videos/video_detail.html", context)
        else:
            # upgrade account
            next_url = obj.get_absolute_url()
            return HttpResponseRedirect("%s?next=%s" %
                                        (reverse('account_upgrade'), next_url))
    else:
        next_url = obj.get_absolute_url()
        return HttpResponseRedirect("%s?next=%s" %
                                    (reverse('login'), next_url))