__init__.py 3.7 KB

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