Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {% extends "base.html" %}
- {% block content %}
- <!-- Forums -->
- <div id="list">
- <table border="0" cellpadding="4" width="100%">
- <tr>
- <td></td>
- <td>Posts</td>
- <td>Last post</td>
- <td></td>
- </tr>
- {% for forum in forums %}
- <tr>
- <td {% if forloop.last %} class="last" {% endif %}>
- {{ forum.title }}
- </td>
- <td {% if forloop.last %} class="last" {% endif %}>
- {{ forum.num_posts }}
- </td>
- <td {% if forloop.last %} class="last" {% endif %}>
- {{ forum.last_post.short|linebreaksbr }}
- </td>
- <td {% if forloop.last %}class="last" {% endif %}>
- <a class="button" href="{% url forum.views.forum forum_pk %}">
- VIEW</a>
- </td> -->
- </tr>
- </table>
- {% endfor %}
- </div>
- {% endblock %}
- from django.shortcuts import render, render_to_response
- from django.core.urlresolvers import reverse
- from dogslikeme.settings import MEDIA_ROOT, MEDIA_URL
- from django.core.paginator import Paginator, InvalidPage, EmptyPage
- from django.core.context_processors import csrf
- from .models import *
- # Create your views here.
- def main(request):
- """Main listing"""
- forums = Forum.objects.all()
- return render_to_response('forum/list.html', {'forums':forums,
- 'user':request.user})
- def add_csrf(request, ** kwargs):
- d = dict(user=request.user, **kwargs)
- d.update(csrf(request))
- return d
- def mk_paginator(request, items, num_items):
- """Create and return a paginator."""
- paginator = Paginator(items, num_items)
- try: page = int(request.GET.get("page"))
- except ValueError: page = 1
- try:
- items = paginator.page(page)
- except(InvalidPage, EmptyPage):
- items = paginator.page(paginator.num_pages)
- return items
- def forum(request, pk):
- """Listing of threads in a forum"""
- threads = Threads.objects.filter(forum=pk).order_by("-created")
- threads = mk_paginator(request, threads, 20)
- return render_to_response('forum/forum.html', add_csrf(request,
- threads=threads, pk=pk))
- def thread(request, pk):
- """Listing of posts in a thread."""
- posts = Post.objects.filter(thread=pk).order_by("created")
- posts = mk_paginator(request, posts, 15)
- title = Thread.objects.get(pk=pk).title
- t = Thread.objects.get(pk=pk)
- return render_to_response('forum/thread.html', add_csrf(request,
- posts=posts, pk=pk, title=title, media_url=MEDIA_URL,
- forum_pk=t.forum.pk))
- def post(request, ptype, pk):
- """Display a post form."""
- action = reverse("forum.views.%s" % ptype, args=[pk])
- if ptype == "new_thread":
- title = "Start New Topic"
- subject = ''
- elif ptype == "reply":
- title = "Reply"
- subject = "Re: " + Thread.objects.get(pk=pk).title
- return render_to_response('forum/post.html', add_csrf(request,
- subject=subject, action=action, title=title, forum_pk=forum_pk))
- def new_thread(request, pk):
- """Start a new thread."""
- p = request.POST
- if p["subject"] and p["body"]:
- forum = Forum.objects.get(pk=pk)
- thread = Thread.objects.create(forum=forum, title=p["subject"],
- creator=request.user)
- Post.objects.create(thread=thread, title=p["subject"],
- body=p["body"], creator=request.user)
- return HttpResponseRedirect(reverse("forum.views.forum",
- args=[pk]))
- def reply(request, pk):
- """Reply to a thread."""
- p = request.POST
- if p["body"]:
- thread = Thread.objects.get(pk=pk)
- post = Post.objects.create(thread=thread, title=p["subject"],
- body=p["body"], creator=request.user)
- return HttpResponseRedirect(reverse("forum.views.thread",
- arg=[pk]) + "?page=last")
- from django.conf.urls import include, url
- from django.contrib import admin
- from . import views
- urlpatterns = [
- url(r'^admin/', include(admin.site.urls)),
- url(r'^$', 'forum.views.main'),
- url(r'^forum(d+)/$', 'forum.views.forum'),
- url(r'^thread/(d+)/$', 'forum.views.thread'),
- url(r'^post/(new_thread|reply)/(d+)/$', 'forum.views.post'),
- url(r'^reply/(d+)/$', 'forum.views.reply'),
- url(r'^new_thread/(d+)/$', 'forum.views.new_thread'),
- ]
- <a class="button" href="{% url 'forum.views.forum' forum.pk %}">
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement