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