__init__.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. from django.conf import settings
  2. from django.conf.urls import url
  3. from ..views.goto import ThreadGotoPostView, ThreadGotoLastView, ThreadGotoNewView, ThreadGotoUnapprovedView
  4. from ..views.list import ForumThreads, CategoryThreads, PrivateThreads
  5. from ..views.thread import Thread, PrivateThread
  6. LISTS_TYPES = (
  7. 'all',
  8. 'my',
  9. 'new',
  10. 'unread',
  11. 'subscribed',
  12. 'unapproved',
  13. )
  14. def threads_list_patterns(prefix, view, patterns):
  15. urls = []
  16. for i, pattern in enumerate(patterns):
  17. if i > 0:
  18. url_name = '%s-%s' % (prefix, LISTS_TYPES[i])
  19. else:
  20. url_name = prefix
  21. urls.append(url(
  22. pattern,
  23. view.as_view(),
  24. name=url_name,
  25. kwargs={'list_type': LISTS_TYPES[i]},
  26. ))
  27. return urls
  28. if settings.MISAGO_THREADS_ON_INDEX:
  29. urlpatterns = threads_list_patterns('threads', ForumThreads, (
  30. r'^$',
  31. r'^my/$',
  32. r'^new/$',
  33. r'^unread/$',
  34. r'^subscribed/$',
  35. r'^unapproved/$',
  36. ))
  37. else:
  38. urlpatterns = threads_list_patterns('threads', ForumThreads, (
  39. r'^threads/$',
  40. r'^threads/my/$',
  41. r'^threads/new/$',
  42. r'^threads/unread/$',
  43. r'^threads/subscribed/$',
  44. r'^threads/unapproved/$',
  45. ))
  46. urlpatterns += threads_list_patterns('category', CategoryThreads, (
  47. r'^category/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/$',
  48. r'^category/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/my/$',
  49. r'^category/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/new/$',
  50. r'^category/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/unread/$',
  51. r'^category/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/subscribed/$',
  52. r'^category/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/unapproved/$',
  53. ))
  54. urlpatterns += threads_list_patterns('private-threads', CategoryThreads, (
  55. r'^private-threads/$',
  56. r'^private-threads/my/$',
  57. r'^private-threads/new/$',
  58. r'^private-threads/unread/$',
  59. r'^private-threads/subscribed/$',
  60. r'^private-threads/unapproved/$',
  61. ))
  62. def thread_view_patterns(prefix, view):
  63. urls = [
  64. url(r'^%s/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/$' % prefix, view.as_view(), name=prefix),
  65. url(r'^%s/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/(?P<page>\d+)/$' % prefix, view.as_view(), name=prefix),
  66. ]
  67. return urls
  68. urlpatterns += thread_view_patterns('thread', Thread)
  69. urlpatterns += thread_view_patterns('private-thread', PrivateThread)
  70. def goto_patterns(prefix, **views):
  71. urls = []
  72. post_view = views.pop('post', None)
  73. if post_view:
  74. url_pattern = r'^%s/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/post/(?P<post>\d+)/$' % prefix
  75. url_name = '%s-post' % prefix
  76. urls.append(url(url_pattern, post_view.as_view(), name=url_name))
  77. for name, view in views.items():
  78. url_pattern = r'^%s/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/%s/$' % (prefix, name)
  79. url_name = '%s-%s' % (prefix, name)
  80. urls.append(url(url_pattern, view.as_view(), name=url_name))
  81. return urls
  82. urlpatterns += goto_patterns(
  83. 'thread',
  84. post=ThreadGotoPostView,
  85. last=ThreadGotoLastView,
  86. new=ThreadGotoNewView,
  87. unapproved=ThreadGotoUnapprovedView
  88. )