def new_thread(request): """ create a new thead """ if request.method == 'POST': thread = Thread( creator = request.user, site = Site.objects.get_current(), ) post = Post( thread = thread, creator = request.user, posted_from = get_client_ip(request) ) thread_form = forms.ThreadForm(request.POST, instance = thread) post_form = forms.PostForm(request.POST, instance = post) if thread_form.is_valid() and post_form.is_valid(): thread = thread_form.save() post.thread = thread post_form = forms.PostForm(request.POST, instance = post) post_form.save() request.posting_users.add_to_set(request.user.id) return HttpResponseRedirect(reverse('list-threads')) else: thread_form = forms.ThreadForm() post_form = forms.PostForm() return render_to_response("board/new_thread.html",{ 'thread_form' : thread_form, 'post_form' : post_form, }, context_instance = RequestContext(request))
def new_thread(request): """ create a new thead """ if request.method == 'POST': thread = Thread( creator=request.user, site=Site.objects.get_current(), ) post = Post(thread=thread, creator=request.user, posted_from=get_client_ip(request)) thread_form = forms.ThreadForm(request.POST, instance=thread) post_form = forms.PostForm(request.POST, instance=post) if thread_form.is_valid() and post_form.is_valid(): thread = thread_form.save() post.thread = thread post_form = forms.PostForm(request.POST, instance=post) post_form.save() request.posting_users.add_to_set(request.user.id) return HttpResponseRedirect(reverse('list-threads')) else: thread_form = forms.ThreadForm() post_form = forms.PostForm() return render_to_response("board/new_thread.html", { 'thread_form': thread_form, 'post_form': post_form, }, context_instance=RequestContext(request))
def view_thread(request,id,start=False,expand=False,hide=None): """ display thread id for a user args: id: the thread id start: the first post to show otherwise prefs and collapsing are used expand: show all posts in the thread hide: hide images in the thread """ thread = get_object_or_404(Thread,pk=id) try: event = Event.objects.get(thread=thread) except Event.DoesNotExist: event = None #try to make a new post in the thread if request.method == 'POST': if thread.locked: return HttpResponseRedirect(reverse('list-threads')) post = Post( thread = thread, creator = request.user, posted_from = get_client_ip(request) ) form = forms.PostForm(request.POST, instance = post) if form.is_valid(): form.save() request.posting_users.add_to_set(request.user.id) return HttpResponseRedirect(reverse('list-threads')) else: form = forms.PostForm() queryset=thread.post_set.order_by( "id").select_related('creator') #try to collapse the thread appriately try: lastread = LastRead.objects.get( user = request.user, thread = thread ) if not expand: coll_size = request.user.get_profile().collapse_size if start: tset = queryset.filter(pk__lte=start).reverse() else: tset = queryset.filter( created_at__lte=lastread.timestamp).reverse() if tset.count() >coll_size: tstart = tset[coll_size].id queryset = queryset.filter(pk__gte=tstart) else: expand = True except LastRead.DoesNotExist: lastread = LastRead(user = request.user, thread = thread, read_count = 0, ) if event: cache.delete('event-count:%d'%(request.user.id)) if not expand and not start and queryset.count() < 10: queryset = thread.default_post_list queryset = queryset=thread.post_set.order_by( "created_at").select_related('creator') queryset = queryset[max(0,queryset.count()-10):] post_list = list(queryset) #hide images in the thread if appropriate try: if (not hide is False) and (hide or not request.user.get_profile().show_images): hide = True except ObjectDoesNotExist: pass lastread.timestamp = datetime.datetime.now() lastread.read_count += 1 lastread.post = post_list[-1] lastread.save() del thread.total_views fav = False if thread.favorite.filter(id=request.user.id): fav = True if len(post_list)< 10: expand = True if not start and post_list: start = post_list[0].id #if this is an event display it as such if event: event = Event.objects.get(thread=thread) return render_to_response("events/view_event.html", { 'object_list' : post_list, 'thread' : thread, 'form' : form, 'expand': expand, 'hide': hide, 'start': start, 'fav' : fav, 'event' : event, 'rsvp_form' : RSVPForm(), 'rsvp_list' : event.rsvp_list(), }, context_instance = RequestContext(request)) return render_to_response("board/post_list.html", { 'object_list' : post_list, 'thread' : thread, 'form' : form, 'expand': expand, 'hide': hide, 'start': start, 'fav' : fav, }, context_instance = RequestContext(request))
def view_thread(request, id, start=False, expand=False, hide=None): """ display thread id for a user args: id: the thread id start: the first post to show otherwise prefs and collapsing are used expand: show all posts in the thread hide: hide images in the thread """ thread = get_object_or_404(Thread, pk=id) try: event = Event.objects.get(thread=thread) except Event.DoesNotExist: event = None #try to make a new post in the thread if request.method == 'POST': if thread.locked: return HttpResponseRedirect(reverse('list-threads')) post = Post(thread=thread, creator=request.user, posted_from=get_client_ip(request)) form = forms.PostForm(request.POST, instance=post) if form.is_valid(): form.save() request.posting_users.add_to_set(request.user.id) return HttpResponseRedirect(reverse('list-threads')) else: form = forms.PostForm() queryset = thread.post_set.order_by("id").select_related('creator') #try to collapse the thread appriately try: lastread = LastRead.objects.get(user=request.user, thread=thread) if not expand: coll_size = request.user.get_profile().collapse_size if start: tset = queryset.filter(pk__lte=start).reverse() else: tset = queryset.filter( created_at__lte=lastread.timestamp).reverse() if tset.count() > coll_size: tstart = tset[coll_size].id queryset = queryset.filter(pk__gte=tstart) else: expand = True except LastRead.DoesNotExist: lastread = LastRead( user=request.user, thread=thread, read_count=0, ) if event: cache.delete('event-count:%d' % (request.user.id)) if not expand and not start and queryset.count() < 10: queryset = thread.default_post_list queryset = queryset = thread.post_set.order_by( "created_at").select_related('creator') queryset = queryset[max(0, queryset.count() - 10):] post_list = list(queryset) #hide images in the thread if appropriate try: if (not hide is False) and ( hide or not request.user.get_profile().show_images): hide = True except ObjectDoesNotExist: pass lastread.timestamp = datetime.datetime.now() lastread.read_count += 1 lastread.post = post_list[-1] lastread.save() del thread.total_views fav = False if thread.favorite.filter(id=request.user.id): fav = True if len(post_list) < 10: expand = True if not start and post_list: start = post_list[0].id #if this is an event display it as such if event: event = Event.objects.get(thread=thread) return render_to_response("events/view_event.html", { 'object_list': post_list, 'thread': thread, 'form': form, 'expand': expand, 'hide': hide, 'start': start, 'fav': fav, 'event': event, 'rsvp_form': RSVPForm(), 'rsvp_list': event.rsvp_list(), }, context_instance=RequestContext(request)) return render_to_response("board/post_list.html", { 'object_list': post_list, 'thread': thread, 'form': form, 'expand': expand, 'hide': hide, 'start': start, 'fav': fav, }, context_instance=RequestContext(request))