from django.conf import settings from django.conf.urls import url from ..views.attachment import attachment_server from ..views.goto import ( ThreadGotoPostView, ThreadGotoLastView, ThreadGotoNewView, ThreadGotoUnapprovedView, PrivateThreadGotoPostView, PrivateThreadGotoLastView, PrivateThreadGotoNewView) from ..views.list import ForumThreads, CategoryThreads, PrivateThreads from ..views.thread import Thread, PrivateThread LISTS_TYPES = ( 'all', 'my', 'new', 'unread', 'subscribed', 'unapproved', ) def threads_list_patterns(prefix, view, patterns): urls = [] for i, pattern in enumerate(patterns): if i > 0: url_name = '%s-%s' % (prefix, LISTS_TYPES[i]) else: url_name = prefix urls.append(url( pattern, view.as_view(), name=url_name, kwargs={'list_type': LISTS_TYPES[i]}, )) return urls if settings.MISAGO_THREADS_ON_INDEX: urlpatterns = threads_list_patterns('threads', ForumThreads, ( r'^$', r'^my/$', r'^new/$', r'^unread/$', r'^subscribed/$', r'^unapproved/$', )) else: urlpatterns = threads_list_patterns('threads', ForumThreads, ( r'^threads/$', r'^threads/my/$', r'^threads/new/$', r'^threads/unread/$', r'^threads/subscribed/$', r'^threads/unapproved/$', )) urlpatterns += threads_list_patterns('category', CategoryThreads, ( r'^c/(?P[-a-zA-Z0-9]+)-(?P\d+)/$', r'^c/(?P[-a-zA-Z0-9]+)-(?P\d+)/my/$', r'^c/(?P[-a-zA-Z0-9]+)-(?P\d+)/new/$', r'^c/(?P[-a-zA-Z0-9]+)-(?P\d+)/unread/$', r'^c/(?P[-a-zA-Z0-9]+)-(?P\d+)/subscribed/$', r'^c/(?P[-a-zA-Z0-9]+)-(?P\d+)/unapproved/$', )) urlpatterns += threads_list_patterns('private-threads', PrivateThreads, ( r'^private-threads/$', r'^private-threads/my/$', r'^private-threads/new/$', r'^private-threads/unread/$', r'^private-threads/subscribed/$', )) def thread_view_patterns(prefix, view): urls = [ url(r'^%s/(?P[-a-zA-Z0-9]+)-(?P\d+)/$' % prefix[0], view.as_view(), name=prefix), url(r'^%s/(?P[-a-zA-Z0-9]+)-(?P\d+)/(?P\d+)/$' % prefix[0], view.as_view(), name=prefix), ] return urls urlpatterns += thread_view_patterns('thread', Thread) urlpatterns += thread_view_patterns('private-thread', PrivateThread) def goto_patterns(prefix, **views): urls = [] post_view = views.pop('post', None) if post_view: url_pattern = r'^%s/(?P[-a-zA-Z0-9]+)-(?P\d+)/post/(?P\d+)/$' % prefix[0] url_name = '%s-post' % prefix urls.append(url(url_pattern, post_view.as_view(), name=url_name)) for name, view in views.items(): url_pattern = r'^%s/(?P[-a-zA-Z0-9]+)-(?P\d+)/%s/$' % (prefix[0], name) url_name = '%s-%s' % (prefix, name) urls.append(url(url_pattern, view.as_view(), name=url_name)) return urls urlpatterns += goto_patterns( 'thread', post=ThreadGotoPostView, last=ThreadGotoLastView, new=ThreadGotoNewView, unapproved=ThreadGotoUnapprovedView ) urlpatterns += goto_patterns( 'private-thread', post=PrivateThreadGotoPostView, last=PrivateThreadGotoLastView, new=PrivateThreadGotoNewView, ) urlpatterns += [ url(r'^a/(?P[-a-zA-Z0-9]+)-(?P\d+)/', attachment_server, name='attachment'), url(r'^a/thumb/(?P[-a-zA-Z0-9]+)-(?P\d+)/', attachment_server, name='attachment-thumbnail', kwargs={'thumbnail': True}), ]