Add ability to sticky/delete topics
This commit is contained in:
@@ -67,10 +67,20 @@ class Topic(models.Model):
|
||||
|
||||
class Meta:
|
||||
ordering = ['-sticky', '-updated']
|
||||
permissions = (
|
||||
('delete_topic', "Can delete topics"),
|
||||
('move_topic', "Can move topics"),
|
||||
('sticky_topic', "Can sticky topics"),
|
||||
)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
unique_slug(self, slug_source='title', slug_field='slug')
|
||||
super(Topic, self).save(*args, **kwargs)
|
||||
|
||||
def delete(self, *args, **kwargs):
|
||||
for p in self.rootPost.get_descendants(True):
|
||||
p.delete()
|
||||
super(Topic, self).delete(*args, **kwargs)
|
||||
|
||||
def lastPost(self):
|
||||
try:
|
||||
|
@@ -5,7 +5,9 @@ urlpatterns = patterns('forums',
|
||||
url(r'^(?P<forum>.*)/$', 'views.forum'),
|
||||
url(r'^(?P<forumID>.*)/new$', 'views.newTopic'),
|
||||
url(r'^(?P<forumSlug>.*)/(?P<topicID>.*)/(?P<topicSlug>.*)$', 'views.topic'),
|
||||
url(r'^delete/(?P<topicID>.*)', 'views.deleteTopic'),
|
||||
url(r'^topic/(?P<topicID>.*)$', 'views.topic'),
|
||||
url(r'^sticky/(?P<topicID>.*)', 'views.stickyTopic'),
|
||||
url(r'^reply/(?P<topicID>.*)', 'views.reply'),
|
||||
url(r'^reply$', 'views.reply'),
|
||||
url(r'^post/(?P<id>.*)$', 'views.post'),
|
||||
|
@@ -1,6 +1,6 @@
|
||||
import models
|
||||
import forms
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.auth.decorators import login_required, permission_required
|
||||
from django.shortcuts import render_to_response
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.template import RequestContext
|
||||
@@ -63,3 +63,17 @@ def newTopic(request, forumID=None):
|
||||
topic.save()
|
||||
return HttpResponseRedirect(reverse('forums.views.post', kwargs={'id': reply.id}))
|
||||
return render_to_response('forums/newTopic.html', {"forum":parentForum, "replyForm":replyForm, "topicForm": topicForm}, context_instance = RequestContext(request))
|
||||
|
||||
@permission_required('forums.delete_topic')
|
||||
def deleteTopic(request, topicID):
|
||||
topic = models.Topic.objects.get(id__exact=topicID)
|
||||
forumID = topic.forum.slug
|
||||
topic.delete()
|
||||
return HttpResponseRedirect(reverse('forums.views.forum', kwargs={'forum': forumID}))
|
||||
|
||||
@permission_required('forums.sticky_topic')
|
||||
def stickyTopic(request, topicID):
|
||||
topic = models.Topic.objects.get(id__exact=topicID)
|
||||
topic.sticky = (not topic.sticky)
|
||||
topic.save()
|
||||
return HttpResponseRedirect(reverse('forums.views.topic', kwargs={'topicID': topic.id}))
|
||||
|
@@ -17,6 +17,22 @@
|
||||
<div class="avatar">{% avatar topic.rootPost.user 32 %}</div>
|
||||
<h2>{{topic.title}}</h2>
|
||||
<div class="byline">Started by <span itemprop="author">{{topic.rootPost.user}}</span> {{ topic.created|timesince }} ago</div>
|
||||
{% if perms.forums %}
|
||||
<ul>
|
||||
{% if perms.forums.delete_topic %}
|
||||
<li><a href="{% url forums.views.deleteTopic topicID=topic.id %}">Delete Topic</a></li>
|
||||
{% endif %}
|
||||
{% if perms.forums.sticky_topic %}
|
||||
<li><a href="{% url forums.views.stickyTopic topicID=topic.id %}">
|
||||
{% if topic.sticky %}
|
||||
UnSticky
|
||||
{% else %}
|
||||
Make Sticky
|
||||
{% endif %}
|
||||
</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
<br style="clear:both;"/>
|
||||
{% include "forums/_post.html" with post=topic.rootPost %}
|
||||
</div>
|
||||
|
Reference in New Issue
Block a user