##// END OF EJS Templates
Fixed thread RSS
neko259 -
r580:7081c21d default
parent child Browse files
Show More
@@ -1,79 +1,79 b''
1 from django.contrib.syndication.views import Feed
1 from django.contrib.syndication.views import Feed
2 from django.core.urlresolvers import reverse
2 from django.core.urlresolvers import reverse
3 from django.shortcuts import get_object_or_404
3 from django.shortcuts import get_object_or_404
4 from boards.models import Post, Tag
4 from boards.models import Post, Tag
5 from neboard import settings
5 from neboard import settings
6
6
7 __author__ = 'neko259'
7 __author__ = 'neko259'
8
8
9
9
10 # TODO Make tests for all of these
10 # TODO Make tests for all of these
11 class AllThreadsFeed(Feed):
11 class AllThreadsFeed(Feed):
12
12
13 title = settings.SITE_NAME + ' - All threads'
13 title = settings.SITE_NAME + ' - All threads'
14 link = '/'
14 link = '/'
15 description_template = 'boards/rss/post.html'
15 description_template = 'boards/rss/post.html'
16
16
17 def items(self):
17 def items(self):
18 return Post.objects.get_threads(order_by='-id')
18 return Post.objects.get_threads(order_by='-id')
19
19
20 def item_title(self, item):
20 def item_title(self, item):
21 return item.get_opening_post().title
21 return item.get_opening_post().title
22
22
23 def item_link(self, item):
23 def item_link(self, item):
24 return reverse('thread', args={item.get_opening_post().id})
24 return reverse('thread', args={item.get_opening_post().id})
25
25
26 def item_pubdate(self, item):
26 def item_pubdate(self, item):
27 return item.get_pub_time()
27 return item.get_pub_time()
28
28
29
29
30 class TagThreadsFeed(Feed):
30 class TagThreadsFeed(Feed):
31
31
32 link = '/'
32 link = '/'
33 description_template = 'boards/rss/post.html'
33 description_template = 'boards/rss/post.html'
34
34
35 def items(self, obj):
35 def items(self, obj):
36 return Post.objects.get_threads(tag=obj, order_by='-id')
36 return Post.objects.get_threads(tag=obj, order_by='-id')
37
37
38 def get_object(self, request, tag_name):
38 def get_object(self, request, tag_name):
39 return get_object_or_404(Tag, name=tag_name)
39 return get_object_or_404(Tag, name=tag_name)
40
40
41 def item_title(self, item):
41 def item_title(self, item):
42 return item.get_opening_post().title
42 return item.get_opening_post().title
43
43
44 def item_link(self, item):
44 def item_link(self, item):
45 return reverse('thread', args={item.get_opening_post().id})
45 return reverse('thread', args={item.get_opening_post().id})
46
46
47 def item_pubdate(self, item):
47 def item_pubdate(self, item):
48 return item.get_pub_time()
48 return item.get_pub_time()
49
49
50 def title(self, obj):
50 def title(self, obj):
51 return obj.name
51 return obj.name
52
52
53
53
54 class ThreadPostsFeed(Feed):
54 class ThreadPostsFeed(Feed):
55
55
56 link = '/'
56 link = '/'
57 description_template = 'boards/rss/post.html'
57 description_template = 'boards/rss/post.html'
58
58
59 def items(self, obj):
59 def items(self, obj):
60 return get_object_or_404(Post, id=obj).thread_new.get_replies()
60 return obj.thread_new.get_replies()
61
61
62 def get_object(self, request, post_id):
62 def get_object(self, request, post_id):
63 return post_id
63 return get_object_or_404(Post, id=post_id)
64
64
65 def item_title(self, item):
65 def item_title(self, item):
66 return item.title
66 return item.title
67
67
68 def item_link(self, item):
68 def item_link(self, item):
69 if not item.is_opening():
69 if not item.is_opening():
70 return reverse('thread', args={item.thread_new.get_opening_post()
70 return reverse('thread', args={item.thread_new.get_opening_post()
71 .id}) + "#" + str(item.id)
71 .id}) + "#" + str(item.id)
72 else:
72 else:
73 return reverse('thread', args={item.id})
73 return reverse('thread', args={item.id})
74
74
75 def item_pubdate(self, item):
75 def item_pubdate(self, item):
76 return item.pub_time
76 return item.pub_time
77
77
78 def title(self, obj):
78 def title(self, obj):
79 return get_object_or_404(Post, id=obj).title
79 return obj.title
@@ -1,83 +1,83 b''
1 from django.conf.urls import patterns, url, include
1 from django.conf.urls import patterns, url, include
2 from boards import views
2 from boards import views
3 from boards.rss import AllThreadsFeed, TagThreadsFeed, ThreadPostsFeed
3 from boards.rss import AllThreadsFeed, TagThreadsFeed, ThreadPostsFeed
4 from boards.views import api, tag_threads, all_threads, archived_threads, \
4 from boards.views import api, tag_threads, all_threads, archived_threads, \
5 login, settings, all_tags
5 login, settings, all_tags
6 from boards.views.authors import AuthorsView
6 from boards.views.authors import AuthorsView
7 from boards.views.delete_post import DeletePostView
7 from boards.views.delete_post import DeletePostView
8 from boards.views.ban import BanUserView
8 from boards.views.ban import BanUserView
9 from boards.views.static import StaticPageView
9 from boards.views.static import StaticPageView
10 from boards.views.post_admin import PostAdminView
10 from boards.views.post_admin import PostAdminView
11
11
12 js_info_dict = {
12 js_info_dict = {
13 'packages': ('boards',),
13 'packages': ('boards',),
14 }
14 }
15
15
16 urlpatterns = patterns('',
16 urlpatterns = patterns('',
17
17
18 # /boards/
18 # /boards/
19 url(r'^$', all_threads.AllThreadsView.as_view(), name='index'),
19 url(r'^$', all_threads.AllThreadsView.as_view(), name='index'),
20 # /boards/page/
20 # /boards/page/
21 url(r'^page/(?P<page>\w+)/$', all_threads.AllThreadsView.as_view(),
21 url(r'^page/(?P<page>\w+)/$', all_threads.AllThreadsView.as_view(),
22 name='index'),
22 name='index'),
23
23
24 url(r'^archive/$', archived_threads.ArchiveView.as_view(), name='archive'),
24 url(r'^archive/$', archived_threads.ArchiveView.as_view(), name='archive'),
25 url(r'^archive/page/(?P<page>\w+)/$',
25 url(r'^archive/page/(?P<page>\w+)/$',
26 archived_threads.ArchiveView.as_view(), name='archive'),
26 archived_threads.ArchiveView.as_view(), name='archive'),
27
27
28 # login page
28 # login page
29 url(r'^login/$', login.LoginView.as_view(), name='login'),
29 url(r'^login/$', login.LoginView.as_view(), name='login'),
30
30
31 # /boards/tag/tag_name/
31 # /boards/tag/tag_name/
32 url(r'^tag/(?P<tag_name>\w+)/$', tag_threads.TagView.as_view(),
32 url(r'^tag/(?P<tag_name>\w+)/$', tag_threads.TagView.as_view(),
33 name='tag'),
33 name='tag'),
34 # /boards/tag/tag_id/page/
34 # /boards/tag/tag_id/page/
35 url(r'^tag/(?P<tag_name>\w+)/page/(?P<page>\w+)/$',
35 url(r'^tag/(?P<tag_name>\w+)/page/(?P<page>\w+)/$',
36 tag_threads.TagView.as_view(), name='tag'),
36 tag_threads.TagView.as_view(), name='tag'),
37
37
38 # /boards/thread/
38 # /boards/thread/
39 url(r'^thread/(?P<post_id>\w+)/$', views.thread.ThreadView.as_view(),
39 url(r'^thread/(?P<post_id>\w+)/$', views.thread.ThreadView.as_view(),
40 name='thread'),
40 name='thread'),
41 url(r'^thread/(?P<post_id>\w+)/(?P<mode>\w+)/$', views.thread.ThreadView
41 url(r'^thread/(?P<post_id>\w+)/mode/(?P<mode>\w+)/$', views.thread.ThreadView
42 .as_view(), name='thread_mode'),
42 .as_view(), name='thread_mode'),
43
43
44 # /boards/post_admin/
44 # /boards/post_admin/
45 url(r'^post_admin/(?P<post_id>\w+)/$', PostAdminView.as_view(),
45 url(r'^post_admin/(?P<post_id>\w+)/$', PostAdminView.as_view(),
46 name='post_admin'),
46 name='post_admin'),
47
47
48 url(r'^settings/$', settings.SettingsView.as_view(), name='settings'),
48 url(r'^settings/$', settings.SettingsView.as_view(), name='settings'),
49 url(r'^tags/$', all_tags.AllTagsView.as_view(), name='tags'),
49 url(r'^tags/$', all_tags.AllTagsView.as_view(), name='tags'),
50 url(r'^captcha/', include('captcha.urls')),
50 url(r'^captcha/', include('captcha.urls')),
51 url(r'^authors/$', AuthorsView.as_view(), name='authors'),
51 url(r'^authors/$', AuthorsView.as_view(), name='authors'),
52 url(r'^delete/(?P<post_id>\w+)/$', DeletePostView.as_view(),
52 url(r'^delete/(?P<post_id>\w+)/$', DeletePostView.as_view(),
53 name='delete'),
53 name='delete'),
54 url(r'^ban/(?P<post_id>\w+)/$', BanUserView.as_view(), name='ban'),
54 url(r'^ban/(?P<post_id>\w+)/$', BanUserView.as_view(), name='ban'),
55
55
56 url(r'^banned/$', views.banned.BannedView.as_view(), name='banned'),
56 url(r'^banned/$', views.banned.BannedView.as_view(), name='banned'),
57 url(r'^staticpage/(?P<name>\w+)/$', StaticPageView.as_view(),
57 url(r'^staticpage/(?P<name>\w+)/$', StaticPageView.as_view(),
58 name='staticpage'),
58 name='staticpage'),
59
59
60 # RSS feeds
60 # RSS feeds
61 url(r'^rss/$', AllThreadsFeed()),
61 url(r'^rss/$', AllThreadsFeed()),
62 url(r'^page/(?P<page>\w+)/rss/$', AllThreadsFeed()),
62 url(r'^page/(?P<page>\w+)/rss/$', AllThreadsFeed()),
63 url(r'^tag/(?P<tag_name>\w+)/rss/$', TagThreadsFeed()),
63 url(r'^tag/(?P<tag_name>\w+)/rss/$', TagThreadsFeed()),
64 url(r'^tag/(?P<tag_name>\w+)/page/(?P<page>\w+)/rss/$', TagThreadsFeed()),
64 url(r'^tag/(?P<tag_name>\w+)/page/(?P<page>\w+)/rss/$', TagThreadsFeed()),
65 url(r'^thread/(?P<post_id>\w+)/rss/$', ThreadPostsFeed()),
65 url(r'^thread/(?P<post_id>\w+)/rss/$', ThreadPostsFeed()),
66
66
67 # i18n
67 # i18n
68 url(r'^jsi18n/$', 'boards.views.cached_js_catalog', js_info_dict,
68 url(r'^jsi18n/$', 'boards.views.cached_js_catalog', js_info_dict,
69 name='js_info_dict'),
69 name='js_info_dict'),
70
70
71 # API
71 # API
72 url(r'^api/post/(?P<post_id>\w+)/$', api.get_post, name="get_post"),
72 url(r'^api/post/(?P<post_id>\w+)/$', api.get_post, name="get_post"),
73 url(r'^api/diff_thread/(?P<thread_id>\w+)/(?P<last_update_time>\w+)/$',
73 url(r'^api/diff_thread/(?P<thread_id>\w+)/(?P<last_update_time>\w+)/$',
74 api.api_get_threaddiff, name="get_thread_diff"),
74 api.api_get_threaddiff, name="get_thread_diff"),
75 url(r'^api/threads/(?P<count>\w+)/$', api.api_get_threads,
75 url(r'^api/threads/(?P<count>\w+)/$', api.api_get_threads,
76 name='get_threads'),
76 name='get_threads'),
77 url(r'^api/tags/$', api.api_get_tags, name='get_tags'),
77 url(r'^api/tags/$', api.api_get_tags, name='get_tags'),
78 url(r'^api/thread/(?P<opening_post_id>\w+)/$', api.api_get_thread_posts,
78 url(r'^api/thread/(?P<opening_post_id>\w+)/$', api.api_get_thread_posts,
79 name='get_thread'),
79 name='get_thread'),
80 url(r'^api/add_post/(?P<opening_post_id>\w+)/$', api.api_add_post,
80 url(r'^api/add_post/(?P<opening_post_id>\w+)/$', api.api_add_post,
81 name='add_post'),
81 name='add_post'),
82
82
83 )
83 )
General Comments 0
You need to be logged in to leave comments. Login now