thread.py 6.0 KB

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