__init__.py 3.4 KB

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