thread.py 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. from django.urls import reverse
  2. from django.utils.translation import ugettext_lazy as _
  3. from misago.categories import THREADS_ROOT_NAME
  4. from . import ThreadType
  5. class Thread(ThreadType):
  6. root_name = THREADS_ROOT_NAME
  7. def get_category_name(self, category):
  8. if category.level:
  9. return category.name
  10. else:
  11. return _('None (will become top level category)')
  12. def get_category_absolute_url(self, category):
  13. if category.level:
  14. return reverse(
  15. 'misago:category', kwargs={
  16. 'pk': category.pk,
  17. 'slug': category.slug,
  18. }
  19. )
  20. else:
  21. return reverse('misago:threads')
  22. def get_category_last_thread_url(self, category):
  23. return reverse(
  24. 'misago:thread',
  25. kwargs={
  26. 'slug': category.last_thread_slug,
  27. 'pk': category.last_thread_id,
  28. }
  29. )
  30. def get_category_last_post_url(self, category):
  31. return reverse(
  32. 'misago:thread-last',
  33. kwargs={
  34. 'slug': category.last_thread_slug,
  35. 'pk': category.last_thread_id,
  36. }
  37. )
  38. def get_category_read_api_url(self, category):
  39. return '{}?category={}'.format(reverse('misago:api:thread-read'), category.pk)
  40. def get_thread_absolute_url(self, thread, page=1):
  41. if page > 1:
  42. return reverse(
  43. 'misago:thread', kwargs={
  44. 'slug': thread.slug,
  45. 'pk': thread.pk,
  46. 'page': page,
  47. }
  48. )
  49. else:
  50. return reverse(
  51. 'misago:thread', kwargs={
  52. 'slug': thread.slug,
  53. 'pk': thread.pk,
  54. }
  55. )
  56. def get_thread_last_post_url(self, thread):
  57. return reverse(
  58. 'misago:thread-last', kwargs={
  59. 'slug': thread.slug,
  60. 'pk': thread.pk,
  61. }
  62. )
  63. def get_thread_new_post_url(self, thread):
  64. return reverse(
  65. 'misago:thread-new', kwargs={
  66. 'slug': thread.slug,
  67. 'pk': thread.pk,
  68. }
  69. )
  70. def get_thread_unapproved_post_url(self, thread):
  71. return reverse(
  72. 'misago:thread-unapproved', kwargs={
  73. 'slug': thread.slug,
  74. 'pk': thread.pk,
  75. }
  76. )
  77. def get_thread_api_url(self, thread):
  78. return reverse(
  79. 'misago:api:thread-detail', kwargs={
  80. 'pk': thread.pk,
  81. }
  82. )
  83. def get_thread_editor_api_url(self, thread):
  84. return reverse(
  85. 'misago:api:thread-post-editor', kwargs={
  86. 'thread_pk': thread.pk,
  87. }
  88. )
  89. def get_thread_merge_api_url(self, thread):
  90. return reverse(
  91. 'misago:api:thread-merge', kwargs={
  92. 'pk': thread.pk,
  93. }
  94. )
  95. def get_thread_poll_api_url(self, thread):
  96. return reverse(
  97. 'misago:api:thread-poll-list', kwargs={
  98. 'thread_pk': thread.pk,
  99. }
  100. )
  101. def get_thread_posts_api_url(self, thread):
  102. return reverse(
  103. 'misago:api:thread-post-list', kwargs={
  104. 'thread_pk': thread.pk,
  105. }
  106. )
  107. def get_poll_api_url(self, poll):
  108. return reverse(
  109. 'misago:api:thread-poll-detail', kwargs={
  110. 'thread_pk': poll.thread_id,
  111. 'pk': poll.pk,
  112. }
  113. )
  114. def get_poll_votes_api_url(self, poll):
  115. return reverse(
  116. 'misago:api:thread-poll-votes', kwargs={
  117. 'thread_pk': poll.thread_id,
  118. 'pk': poll.pk,
  119. }
  120. )
  121. def get_post_merge_api_url(self, thread):
  122. return reverse(
  123. 'misago:api:thread-post-merge', kwargs={
  124. 'thread_pk': thread.pk,
  125. }
  126. )
  127. def get_post_move_api_url(self, thread):
  128. return reverse(
  129. 'misago:api:thread-post-move', kwargs={
  130. 'thread_pk': thread.pk,
  131. }
  132. )
  133. def get_post_split_api_url(self, thread):
  134. return reverse(
  135. 'misago:api:thread-post-split', kwargs={
  136. 'thread_pk': thread.pk,
  137. }
  138. )
  139. def get_post_absolute_url(self, post):
  140. return reverse(
  141. 'misago:thread-post',
  142. kwargs={
  143. 'slug': post.thread.slug,
  144. 'pk': post.thread.pk,
  145. 'post': post.pk,
  146. }
  147. )
  148. def get_post_api_url(self, post):
  149. return reverse(
  150. 'misago:api:thread-post-detail', kwargs={
  151. 'thread_pk': post.thread_id,
  152. 'pk': post.pk,
  153. }
  154. )
  155. def get_post_likes_api_url(self, post):
  156. return reverse(
  157. 'misago:api:thread-post-likes', kwargs={
  158. 'thread_pk': post.thread_id,
  159. 'pk': post.pk,
  160. }
  161. )
  162. def get_post_editor_api_url(self, post):
  163. return reverse(
  164. 'misago:api:thread-post-editor', kwargs={
  165. 'thread_pk': post.thread_id,
  166. 'pk': post.pk,
  167. }
  168. )
  169. def get_post_edits_api_url(self, post):
  170. return reverse(
  171. 'misago:api:thread-post-edits', kwargs={
  172. 'thread_pk': post.thread_id,
  173. 'pk': post.pk,
  174. }
  175. )
  176. def get_post_read_api_url(self, post):
  177. return reverse(
  178. 'misago:api:thread-post-read', kwargs={
  179. 'thread_pk': post.thread_id,
  180. 'pk': post.pk,
  181. }
  182. )