__init__.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. from django.conf import settings
  2. from django.conf.urls import url
  3. from misago.threads.views.lists import ThreadsList, CategoryThreadsList, PrivateThreadsList
  4. from misago.threads.views.thread import Thread, PrivateThread
  5. LISTS_TYPES = (
  6. 'all',
  7. 'my',
  8. 'new',
  9. 'unread',
  10. 'subscribed',
  11. 'unapproved',
  12. )
  13. def threads_list_patterns(prefix, view, patterns):
  14. urls = []
  15. for i, pattern in enumerate(patterns):
  16. if i > 0:
  17. url_name = '%s-%s' % (prefix, LISTS_TYPES[i])
  18. else:
  19. url_name = prefix
  20. urls.append(url(
  21. pattern,
  22. view.as_view(),
  23. name=url_name,
  24. kwargs={'list_type': LISTS_TYPES[i]},
  25. ))
  26. return urls
  27. if settings.MISAGO_CATEGORIES_ON_INDEX:
  28. urlpatterns = threads_list_patterns('threads', ThreadsList, (
  29. r'^threads/$',
  30. r'^threads/my/$',
  31. r'^threads/new/$',
  32. r'^threads/unread/$',
  33. r'^threads/subscribed/$',
  34. r'^threads/unapproved/$',
  35. ))
  36. else:
  37. urlpatterns = threads_list_patterns('threads', ThreadsList, (
  38. r'^$',
  39. r'^my/$',
  40. r'^new/$',
  41. r'^unread/$',
  42. r'^subscribed/$',
  43. r'^unapproved/$',
  44. ))
  45. urlpatterns += threads_list_patterns('category', CategoryThreadsList, (
  46. r'^category/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/$',
  47. r'^category/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/my/$',
  48. r'^category/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/new/$',
  49. r'^category/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/unread/$',
  50. r'^category/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/subscribed/$',
  51. r'^category/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/unapproved/$',
  52. ))
  53. urlpatterns += threads_list_patterns('private-threads', CategoryThreadsList, (
  54. r'^private-threads/$',
  55. r'^private-threads/my/$',
  56. r'^private-threads/new/$',
  57. r'^private-threads/unread/$',
  58. r'^private-threads/subscribed/$',
  59. r'^private-threads/unapproved/$',
  60. ))
  61. def thread_type_patterns(prefix, **views):
  62. urls = [
  63. url(r'^%s/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/$' % prefix, views['thread'].as_view(), name=prefix),
  64. url(r'^%s/(?P<slug>[-a-zA-Z0-9]+)-(?P<pk>\d+)/(?P<page>\d+)/$' % prefix, views['thread'].as_view(), name=prefix),
  65. ]
  66. return urls
  67. urlpatterns += thread_type_patterns(
  68. 'thread',
  69. thread=Thread,
  70. )
  71. urlpatterns += thread_type_patterns(
  72. 'private-thread',
  73. thread=PrivateThread,
  74. )