thread.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  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_thread_new_url(self, category):
  31. return reverse(
  32. 'misago:thread-new',
  33. kwargs={
  34. 'slug': category.last_thread_slug,
  35. 'pk': category.last_thread_id,
  36. }
  37. )
  38. def get_category_last_post_url(self, category):
  39. return reverse(
  40. 'misago:thread-last',
  41. kwargs={
  42. 'slug': category.last_thread_slug,
  43. 'pk': category.last_thread_id,
  44. }
  45. )
  46. def get_category_read_api_url(self, category):
  47. return '{}?category={}'.format(reverse('misago:api:thread-read'), category.pk)
  48. def get_thread_absolute_url(self, thread, page=1):
  49. if page > 1:
  50. return reverse(
  51. 'misago:thread', kwargs={
  52. 'slug': thread.slug,
  53. 'pk': thread.pk,
  54. 'page': page,
  55. }
  56. )
  57. else:
  58. return reverse(
  59. 'misago:thread', kwargs={
  60. 'slug': thread.slug,
  61. 'pk': thread.pk,
  62. }
  63. )
  64. def get_thread_last_post_url(self, thread):
  65. return reverse(
  66. 'misago:thread-last', kwargs={
  67. 'slug': thread.slug,
  68. 'pk': thread.pk,
  69. }
  70. )
  71. def get_thread_new_post_url(self, thread):
  72. return reverse(
  73. 'misago:thread-new', kwargs={
  74. 'slug': thread.slug,
  75. 'pk': thread.pk,
  76. }
  77. )
  78. def get_thread_unapproved_post_url(self, thread):
  79. return reverse(
  80. 'misago:thread-unapproved', kwargs={
  81. 'slug': thread.slug,
  82. 'pk': thread.pk,
  83. }
  84. )
  85. def get_thread_api_url(self, thread):
  86. return reverse(
  87. 'misago:api:thread-detail', kwargs={
  88. 'pk': thread.pk,
  89. }
  90. )
  91. def get_thread_editor_api_url(self, thread):
  92. return reverse(
  93. 'misago:api:thread-post-editor', kwargs={
  94. 'thread_pk': thread.pk,
  95. }
  96. )
  97. def get_thread_merge_api_url(self, thread):
  98. return reverse(
  99. 'misago:api:thread-merge', kwargs={
  100. 'pk': thread.pk,
  101. }
  102. )
  103. def get_thread_poll_api_url(self, thread):
  104. return reverse(
  105. 'misago:api:thread-poll-list', kwargs={
  106. 'thread_pk': thread.pk,
  107. }
  108. )
  109. def get_thread_posts_api_url(self, thread):
  110. return reverse(
  111. 'misago:api:thread-post-list', kwargs={
  112. 'thread_pk': thread.pk,
  113. }
  114. )
  115. def get_poll_api_url(self, poll):
  116. return reverse(
  117. 'misago:api:thread-poll-detail', kwargs={
  118. 'thread_pk': poll.thread_id,
  119. 'pk': poll.pk,
  120. }
  121. )
  122. def get_poll_votes_api_url(self, poll):
  123. return reverse(
  124. 'misago:api:thread-poll-votes', kwargs={
  125. 'thread_pk': poll.thread_id,
  126. 'pk': poll.pk,
  127. }
  128. )
  129. def get_post_merge_api_url(self, thread):
  130. return reverse(
  131. 'misago:api:thread-post-merge', kwargs={
  132. 'thread_pk': thread.pk,
  133. }
  134. )
  135. def get_post_move_api_url(self, thread):
  136. return reverse(
  137. 'misago:api:thread-post-move', kwargs={
  138. 'thread_pk': thread.pk,
  139. }
  140. )
  141. def get_post_split_api_url(self, thread):
  142. return reverse(
  143. 'misago:api:thread-post-split', kwargs={
  144. 'thread_pk': thread.pk,
  145. }
  146. )
  147. def get_post_absolute_url(self, post):
  148. return reverse(
  149. 'misago:thread-post',
  150. kwargs={
  151. 'slug': post.thread.slug,
  152. 'pk': post.thread.pk,
  153. 'post': post.pk,
  154. }
  155. )
  156. def get_post_api_url(self, post):
  157. return reverse(
  158. 'misago:api:thread-post-detail', kwargs={
  159. 'thread_pk': post.thread_id,
  160. 'pk': post.pk,
  161. }
  162. )
  163. def get_post_likes_api_url(self, post):
  164. return reverse(
  165. 'misago:api:thread-post-likes', kwargs={
  166. 'thread_pk': post.thread_id,
  167. 'pk': post.pk,
  168. }
  169. )
  170. def get_post_editor_api_url(self, post):
  171. return reverse(
  172. 'misago:api:thread-post-editor', kwargs={
  173. 'thread_pk': post.thread_id,
  174. 'pk': post.pk,
  175. }
  176. )
  177. def get_post_edits_api_url(self, post):
  178. return reverse(
  179. 'misago:api:thread-post-edits', kwargs={
  180. 'thread_pk': post.thread_id,
  181. 'pk': post.pk,
  182. }
  183. )
  184. def get_post_read_api_url(self, post):
  185. return reverse(
  186. 'misago:api:thread-post-read', kwargs={
  187. 'thread_pk': post.thread_id,
  188. 'pk': post.pk,
  189. }
  190. )