punkweb-bb 0.5.0__tar.gz → 0.5.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/PKG-INFO +96 -35
  2. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/README.md +79 -33
  3. punkweb_bb-0.5.2/punkweb_bb/__pycache__/__init__.cpython-313.pyc +0 -0
  4. punkweb_bb-0.5.2/punkweb_bb/__pycache__/admin.cpython-313.pyc +0 -0
  5. punkweb_bb-0.5.2/punkweb_bb/__pycache__/admin_forms.cpython-313.pyc +0 -0
  6. punkweb_bb-0.5.2/punkweb_bb/__pycache__/apps.cpython-313.pyc +0 -0
  7. punkweb_bb-0.5.2/punkweb_bb/__pycache__/bbcode.cpython-313.pyc +0 -0
  8. punkweb_bb-0.5.2/punkweb_bb/__pycache__/decorators.cpython-313.pyc +0 -0
  9. punkweb_bb-0.5.2/punkweb_bb/__pycache__/forms.cpython-313.pyc +0 -0
  10. punkweb_bb-0.5.2/punkweb_bb/__pycache__/guests.cpython-313.pyc +0 -0
  11. punkweb_bb-0.5.2/punkweb_bb/__pycache__/middleware.cpython-313.pyc +0 -0
  12. punkweb_bb-0.5.2/punkweb_bb/__pycache__/mixins.cpython-313.pyc +0 -0
  13. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/models.cpython-311.pyc +0 -0
  14. punkweb_bb-0.5.2/punkweb_bb/__pycache__/models.cpython-313.pyc +0 -0
  15. punkweb_bb-0.5.2/punkweb_bb/__pycache__/pagination.cpython-313.pyc +0 -0
  16. punkweb_bb-0.5.2/punkweb_bb/__pycache__/response.cpython-313.pyc +0 -0
  17. punkweb_bb-0.5.2/punkweb_bb/__pycache__/searching.cpython-313.pyc +0 -0
  18. punkweb_bb-0.5.2/punkweb_bb/__pycache__/settings.cpython-313.pyc +0 -0
  19. punkweb_bb-0.5.2/punkweb_bb/__pycache__/signals.cpython-313.pyc +0 -0
  20. punkweb_bb-0.5.2/punkweb_bb/__pycache__/tests.cpython-313.pyc +0 -0
  21. punkweb_bb-0.5.2/punkweb_bb/__pycache__/urls.cpython-313.pyc +0 -0
  22. punkweb_bb-0.5.2/punkweb_bb/__pycache__/utils.cpython-313.pyc +0 -0
  23. punkweb_bb-0.5.2/punkweb_bb/__pycache__/views.cpython-311.pyc +0 -0
  24. punkweb_bb-0.5.2/punkweb_bb/__pycache__/views.cpython-313.pyc +0 -0
  25. punkweb_bb-0.5.2/punkweb_bb/__pycache__/widgets.cpython-313.pyc +0 -0
  26. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/bbcode.py +16 -4
  27. punkweb_bb-0.5.2/punkweb_bb/migrations/0008_alter_groupstyle_username_style.py +18 -0
  28. punkweb_bb-0.5.2/punkweb_bb/migrations/__pycache__/0001_initial.cpython-313.pyc +0 -0
  29. punkweb_bb-0.5.2/punkweb_bb/migrations/__pycache__/0002_thread_view_count.cpython-313.pyc +0 -0
  30. punkweb_bb-0.5.2/punkweb_bb/migrations/__pycache__/0003_alter_thread_options.cpython-313.pyc +0 -0
  31. punkweb_bb-0.5.2/punkweb_bb/migrations/__pycache__/0004_groupstyle.cpython-313.pyc +0 -0
  32. punkweb_bb-0.5.2/punkweb_bb/migrations/__pycache__/0005_alter_thread_options.cpython-313.pyc +0 -0
  33. punkweb_bb-0.5.2/punkweb_bb/migrations/__pycache__/0006_remove_boardprofile__signature_rendered_and_more.cpython-313.pyc +0 -0
  34. punkweb_bb-0.5.2/punkweb_bb/migrations/__pycache__/0007_boardprofile_bio.cpython-313.pyc +0 -0
  35. punkweb_bb-0.5.2/punkweb_bb/migrations/__pycache__/0008_alter_groupstyle_username_style.cpython-311.pyc +0 -0
  36. punkweb_bb-0.5.2/punkweb_bb/migrations/__pycache__/0008_alter_groupstyle_username_style.cpython-313.pyc +0 -0
  37. punkweb_bb-0.5.2/punkweb_bb/migrations/__pycache__/0009_report.cpython-313.pyc +0 -0
  38. punkweb_bb-0.5.2/punkweb_bb/migrations/__pycache__/__init__.cpython-313.pyc +0 -0
  39. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/models.py +6 -3
  40. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/settings.py +2 -0
  41. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/css/bbcode-editor-content.css +4 -0
  42. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/css/members.css +6 -0
  43. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/css/punkweb.css +4 -0
  44. punkweb_bb-0.5.2/punkweb_bb/static/punkweb_bb/vendor/prism-duotone-sea.css +170 -0
  45. punkweb_bb-0.5.2/punkweb_bb/static/punkweb_bb/vendor/punkweb-ui.min.css +1 -0
  46. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/base.html +96 -0
  47. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/base_delete_dialog.html +16 -0
  48. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templates/punkweb_bb/base_dialog.html +6 -6
  49. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/bbcode.html +20 -0
  50. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/category_create.html +32 -0
  51. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/category_update.html +33 -0
  52. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/components/pagination_controls.html +37 -0
  53. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/components/profile_image.html +11 -0
  54. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/forms/inline_form.html +6 -0
  55. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/forms/stacked_form.html +38 -0
  56. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/index.html +231 -0
  57. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/login.html +31 -0
  58. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/members.html +68 -0
  59. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templates/punkweb_bb/partials/category_delete.html +3 -3
  60. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templates/punkweb_bb/partials/post_delete.html +3 -3
  61. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/partials/post_update.html +16 -0
  62. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templates/punkweb_bb/partials/shout_delete.html +3 -3
  63. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templates/punkweb_bb/partials/subcategory_delete.html +3 -3
  64. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templates/punkweb_bb/partials/thread_delete.html +3 -3
  65. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/partials/thread_move.html +17 -0
  66. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/profile.html +90 -0
  67. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templates/punkweb_bb/search.html +12 -16
  68. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/settings.html +35 -0
  69. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/shoutbox/shout_list.html +21 -0
  70. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/shoutbox/shoutbox.html +25 -0
  71. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/signup.html +31 -0
  72. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/subcategory.html +128 -0
  73. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/subcategory_create.html +37 -0
  74. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/subcategory_update.html +38 -0
  75. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/thread.html +232 -0
  76. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/thread_create.html +41 -0
  77. punkweb_bb-0.5.2/punkweb_bb/templates/punkweb_bb/thread_update.html +41 -0
  78. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templates/punkweb_bb/widgets/markdown-editor.html +3 -1
  79. punkweb_bb-0.5.2/punkweb_bb/templatetags/__pycache__/__init__.cpython-313.pyc +0 -0
  80. punkweb_bb-0.5.2/punkweb_bb/templatetags/__pycache__/can_delete.cpython-313.pyc +0 -0
  81. punkweb_bb-0.5.2/punkweb_bb/templatetags/__pycache__/can_edit.cpython-313.pyc +0 -0
  82. punkweb_bb-0.5.2/punkweb_bb/templatetags/__pycache__/can_post.cpython-313.pyc +0 -0
  83. punkweb_bb-0.5.2/punkweb_bb/templatetags/__pycache__/humanize_int.cpython-313.pyc +0 -0
  84. punkweb_bb-0.5.2/punkweb_bb/templatetags/__pycache__/punkweb_bb.cpython-313.pyc +0 -0
  85. punkweb_bb-0.5.2/punkweb_bb/templatetags/__pycache__/render.cpython-313.pyc +0 -0
  86. punkweb_bb-0.5.2/punkweb_bb/templatetags/__pycache__/styled_group_name.cpython-313.pyc +0 -0
  87. punkweb_bb-0.5.2/punkweb_bb/templatetags/__pycache__/styled_username.cpython-313.pyc +0 -0
  88. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/tests.py +21 -0
  89. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/views.py +27 -27
  90. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb.egg-info/PKG-INFO +97 -36
  91. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb.egg-info/SOURCES.txt +43 -0
  92. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/setup.py +1 -1
  93. punkweb_bb-0.5.0/punkweb_bb/__pycache__/views.cpython-311.pyc +0 -0
  94. punkweb_bb-0.5.0/punkweb_bb/static/punkweb_bb/vendor/punkweb-ui.min.css +0 -1
  95. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/base.html +0 -108
  96. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/base_delete_dialog.html +0 -13
  97. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/bbcode.html +0 -22
  98. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/category_create.html +0 -33
  99. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/category_update.html +0 -36
  100. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/components/pagination_controls.html +0 -45
  101. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/components/profile_image.html +0 -11
  102. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/forms/inline_form.html +0 -6
  103. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/forms/stacked_form.html +0 -35
  104. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/index.html +0 -237
  105. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/login.html +0 -37
  106. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/members.html +0 -72
  107. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/partials/post_update.html +0 -15
  108. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/partials/thread_move.html +0 -16
  109. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/profile.html +0 -101
  110. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/settings.html +0 -42
  111. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/shoutbox/shout_list.html +0 -23
  112. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/shoutbox/shoutbox.html +0 -36
  113. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/signup.html +0 -37
  114. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/subcategory.html +0 -146
  115. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/subcategory_create.html +0 -44
  116. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/subcategory_update.html +0 -47
  117. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/thread.html +0 -263
  118. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/thread_create.html +0 -48
  119. punkweb_bb-0.5.0/punkweb_bb/templates/punkweb_bb/thread_update.html +0 -50
  120. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/LICENSE +0 -0
  121. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/MANIFEST.in +0 -0
  122. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__init__.py +0 -0
  123. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/__init__.cpython-311.pyc +0 -0
  124. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/admin.cpython-311.pyc +0 -0
  125. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/admin_forms.cpython-311.pyc +0 -0
  126. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/apps.cpython-311.pyc +0 -0
  127. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/bbcode.cpython-311.pyc +0 -0
  128. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/bbcode_tags.cpython-311.pyc +0 -0
  129. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/context_processors.cpython-311.pyc +0 -0
  130. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/decorators.cpython-311.pyc +0 -0
  131. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/forms.cpython-311.pyc +0 -0
  132. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/guests.cpython-311.pyc +0 -0
  133. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/middleware.cpython-311.pyc +0 -0
  134. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/mixins.cpython-311.pyc +0 -0
  135. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/pagination.cpython-311.pyc +0 -0
  136. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/parsers.cpython-311.pyc +0 -0
  137. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/response.cpython-311.pyc +0 -0
  138. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/searching.cpython-311.pyc +0 -0
  139. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/settings.cpython-311.pyc +0 -0
  140. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/signals.cpython-311.pyc +0 -0
  141. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/sitemap.cpython-311.pyc +0 -0
  142. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/tags.cpython-311.pyc +0 -0
  143. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/tests.cpython-311.pyc +0 -0
  144. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/urls.cpython-311.pyc +0 -0
  145. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/utils.cpython-311.pyc +0 -0
  146. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/__pycache__/widgets.cpython-311.pyc +0 -0
  147. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/admin.py +0 -0
  148. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/admin_forms.py +0 -0
  149. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/apps.py +0 -0
  150. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/decorators.py +0 -0
  151. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/forms.py +0 -0
  152. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/guests.py +0 -0
  153. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/middleware.py +0 -0
  154. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/migrations/0001_initial.py +0 -0
  155. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/migrations/0002_thread_view_count.py +0 -0
  156. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/migrations/0003_alter_thread_options.py +0 -0
  157. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/migrations/0004_groupstyle.py +0 -0
  158. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/migrations/0005_alter_thread_options.py +0 -0
  159. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/migrations/0006_remove_boardprofile__signature_rendered_and_more.py +0 -0
  160. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/migrations/0007_boardprofile_bio.py +0 -0
  161. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/migrations/__init__.py +0 -0
  162. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/migrations/__pycache__/0001_initial.cpython-311.pyc +0 -0
  163. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/migrations/__pycache__/0001_squashed_0006_remove_boardprofile__signature_rendered_and_more.cpython-311.pyc +0 -0
  164. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/migrations/__pycache__/0002_thread_view_count.cpython-311.pyc +0 -0
  165. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/migrations/__pycache__/0003_alter_thread_options.cpython-311.pyc +0 -0
  166. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/migrations/__pycache__/0004_groupstyle.cpython-311.pyc +0 -0
  167. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/migrations/__pycache__/0005_alter_thread_options.cpython-311.pyc +0 -0
  168. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/migrations/__pycache__/0006_remove_boardprofile__signature_rendered_and_more.cpython-311.pyc +0 -0
  169. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/migrations/__pycache__/0007_boardprofile_bio.cpython-311.pyc +0 -0
  170. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/migrations/__pycache__/__init__.cpython-311.pyc +0 -0
  171. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/mixins.py +0 -0
  172. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/pagination.py +0 -0
  173. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/response.py +0 -0
  174. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/searching.py +0 -0
  175. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/signals.py +0 -0
  176. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/css/index.css +0 -0
  177. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/css/profile.css +0 -0
  178. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/css/shoutbox.css +0 -0
  179. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/css/subcategory.css +0 -0
  180. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/css/thread.css +0 -0
  181. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/favicon.ico +0 -0
  182. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/js/bbcode-editor-tags.js +0 -0
  183. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/js/bbcode-editor.js +0 -0
  184. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/js/markdown-editor.js +0 -0
  185. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/js/punkweb-dialog.js +0 -0
  186. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/js/shoutbox.js +0 -0
  187. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/htmx-2.0.0.min.js +0 -0
  188. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/jquery-3.7.0.min.js +0 -0
  189. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/prism.css +0 -0
  190. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/prism.js +0 -0
  191. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/README.md +0 -0
  192. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/formats/bbcode.js +0 -0
  193. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/formats/xhtml.js +0 -0
  194. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/icons/material.js +0 -0
  195. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/icons/monocons.js +0 -0
  196. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/jquery.sceditor.bbcode.js +0 -0
  197. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/jquery.sceditor.js +0 -0
  198. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/jquery.sceditor.xhtml.js +0 -0
  199. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/plugins/alternative-lists.js +0 -0
  200. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/plugins/autosave.js +0 -0
  201. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/plugins/autoyoutube.js +0 -0
  202. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/plugins/dragdrop.js +0 -0
  203. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/plugins/format.js +0 -0
  204. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/plugins/plaintext.js +0 -0
  205. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/plugins/undo.js +0 -0
  206. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/plugins/v1compat.js +0 -0
  207. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/sceditor.js +0 -0
  208. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/themes/content/default.css +0 -0
  209. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/themes/default.css +0 -0
  210. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/themes/defaultdark.css +0 -0
  211. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/themes/famfamfam.png +0 -0
  212. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/themes/modern.css +0 -0
  213. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/themes/office-toolbar.css +0 -0
  214. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/themes/office.css +0 -0
  215. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/themes/square.css +0 -0
  216. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/alien.png +0 -0
  217. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/angel.png +0 -0
  218. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/angry.png +0 -0
  219. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/blink.png +0 -0
  220. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/blush.png +0 -0
  221. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/cheerful.png +0 -0
  222. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/cool.png +0 -0
  223. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/credits.txt +0 -0
  224. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/cwy.png +0 -0
  225. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/devil.png +0 -0
  226. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/dizzy.png +0 -0
  227. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/ermm.png +0 -0
  228. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/face.png +0 -0
  229. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/getlost.png +0 -0
  230. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/grin.png +0 -0
  231. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/happy.png +0 -0
  232. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/heart.png +0 -0
  233. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/kissing.png +0 -0
  234. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/laughing.png +0 -0
  235. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/ninja.png +0 -0
  236. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/pinch.png +0 -0
  237. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/pouty.png +0 -0
  238. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/sad.png +0 -0
  239. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/shocked.png +0 -0
  240. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/sick.png +0 -0
  241. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/sideways.png +0 -0
  242. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/silly.png +0 -0
  243. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/sleeping.png +0 -0
  244. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/smile.png +0 -0
  245. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/tongue.png +0 -0
  246. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/unsure.png +0 -0
  247. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/w00t.png +0 -0
  248. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/wassat.png +0 -0
  249. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/whistling.png +0 -0
  250. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/wink.png +0 -0
  251. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/wub.png +0 -0
  252. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/example.html +0 -0
  253. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/ar.js +0 -0
  254. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/ca.js +0 -0
  255. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/cn.js +0 -0
  256. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/cs.js +0 -0
  257. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/de.js +0 -0
  258. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/el.js +0 -0
  259. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/en-US.js +0 -0
  260. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/en.js +0 -0
  261. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/es.js +0 -0
  262. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/et.js +0 -0
  263. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/fa.js +0 -0
  264. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/fi.js +0 -0
  265. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/fr.js +0 -0
  266. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/gl.js +0 -0
  267. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/hu.js +0 -0
  268. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/id.js +0 -0
  269. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/it.js +0 -0
  270. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/ja.js +0 -0
  271. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/lt.js +0 -0
  272. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/nb.js +0 -0
  273. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/nl.js +0 -0
  274. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/pl.js +0 -0
  275. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/pt-BR.js +0 -0
  276. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/pt.js +0 -0
  277. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/ru.js +0 -0
  278. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/sk.js +0 -0
  279. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/sv.js +0 -0
  280. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/template.js +0 -0
  281. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/tr.js +0 -0
  282. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/tw.js +0 -0
  283. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/uk.js +0 -0
  284. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/vi.js +0 -0
  285. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/formats/bbcode.js +0 -0
  286. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/formats/xhtml.js +0 -0
  287. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/icons/material.js +0 -0
  288. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/icons/monocons.js +0 -0
  289. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/jquery.sceditor.bbcode.min.js +0 -0
  290. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/jquery.sceditor.min.js +0 -0
  291. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/jquery.sceditor.xhtml.min.js +0 -0
  292. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/plugins/alternative-lists.js +0 -0
  293. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/plugins/autosave.js +0 -0
  294. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/plugins/autoyoutube.js +0 -0
  295. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/plugins/dragdrop.js +0 -0
  296. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/plugins/format.js +0 -0
  297. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/plugins/plaintext.js +0 -0
  298. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/plugins/undo.js +0 -0
  299. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/plugins/v1compat.js +0 -0
  300. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/sceditor.min.js +0 -0
  301. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/content/default.min.css +0 -0
  302. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/default.min.css +0 -0
  303. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/defaultdark.min.css +0 -0
  304. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/famfamfam.png +0 -0
  305. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/modern.min.css +0 -0
  306. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/office-toolbar.min.css +0 -0
  307. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/office.min.css +0 -0
  308. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/square.min.css +0 -0
  309. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/.eslintrc.json +0 -0
  310. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/.gitignore +0 -0
  311. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/.prettierrc.json +0 -0
  312. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/LICENSE +0 -0
  313. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/README.md +0 -0
  314. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/babel.config.json +0 -0
  315. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/dist/blank.html +0 -0
  316. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/dist/demo.html +0 -0
  317. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/dist/tiny-mde.css +0 -0
  318. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/dist/tiny-mde.js +0 -0
  319. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/dist/tiny-mde.min.css +0 -0
  320. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/dist/tiny-mde.min.js +0 -0
  321. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/dist/tiny-mde.tiny.js +0 -0
  322. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/docs/_config.yml +0 -0
  323. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/docs/_layouts/default.html +0 -0
  324. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/docs/index.md +0 -0
  325. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/globals.d.ts +0 -0
  326. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/gulpfile.mjs +0 -0
  327. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/jest/block.test.js +0 -0
  328. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/jest/commandbar.test.js +0 -0
  329. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/jest/inline.test.js +0 -0
  330. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/jest/interaction.test.js +0 -0
  331. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/jest/setup.test.js +0 -0
  332. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/jest/util/config.js +0 -0
  333. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/jest/util/server.js +0 -0
  334. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/jest/util/setup.js +0 -0
  335. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/jest/util/test-helpers.js +0 -0
  336. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/jest-puppeteer.config.js +0 -0
  337. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/jest.config.js +0 -0
  338. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/package-lock.json +0 -0
  339. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/package.json +0 -0
  340. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/TinyMDE.js +0 -0
  341. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/TinyMDECommandBar.js +0 -0
  342. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/css/commandbar.css +0 -0
  343. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/css/editor.css +0 -0
  344. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/css/index.css +0 -0
  345. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/grammar.js +0 -0
  346. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/html/blank.html +0 -0
  347. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/html/demo.html +0 -0
  348. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/index.js +0 -0
  349. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/svg/blockquote.svg +0 -0
  350. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/svg/bold.svg +0 -0
  351. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/svg/clear_formatting.svg +0 -0
  352. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/svg/code.svg +0 -0
  353. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/svg/h1.svg +0 -0
  354. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/svg/h2.svg +0 -0
  355. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/svg/hr.svg +0 -0
  356. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/svg/image.svg +0 -0
  357. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/svg/italic.svg +0 -0
  358. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/svg/link.svg +0 -0
  359. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/svg/ol.svg +0 -0
  360. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/svg/strikethrough.svg +0 -0
  361. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/svg/svg.js +0 -0
  362. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/svg/ul.svg +0 -0
  363. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/static/punkweb_bb/vendor/tiny-markdown-editor/src/tiny.js +0 -0
  364. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/__init__.py +0 -0
  365. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/__pycache__/__init__.cpython-311.pyc +0 -0
  366. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/__pycache__/can_delete.cpython-311.pyc +0 -0
  367. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/__pycache__/can_edit.cpython-311.pyc +0 -0
  368. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/__pycache__/can_post.cpython-311.pyc +0 -0
  369. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/__pycache__/humanize_count.cpython-311.pyc +0 -0
  370. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/__pycache__/humanize_int.cpython-311.pyc +0 -0
  371. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/__pycache__/markdown.cpython-311.pyc +0 -0
  372. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/__pycache__/punkweb_bb.cpython-311.pyc +0 -0
  373. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/__pycache__/render.cpython-311.pyc +0 -0
  374. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/__pycache__/settings.cpython-311.pyc +0 -0
  375. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/__pycache__/shoutbox_bbcode.cpython-311.pyc +0 -0
  376. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/__pycache__/shoutbox_render.cpython-311.pyc +0 -0
  377. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/__pycache__/styled_group_name.cpython-311.pyc +0 -0
  378. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/__pycache__/styled_username.cpython-311.pyc +0 -0
  379. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/__pycache__/username.cpython-311.pyc +0 -0
  380. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/can_delete.py +0 -0
  381. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/can_edit.py +0 -0
  382. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/can_post.py +0 -0
  383. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/humanize_int.py +0 -0
  384. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/punkweb_bb.py +0 -0
  385. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/render.py +0 -0
  386. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/styled_group_name.py +0 -0
  387. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/templatetags/styled_username.py +0 -0
  388. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/urls.py +0 -0
  389. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/utils.py +0 -0
  390. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb/widgets.py +0 -0
  391. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb.egg-info/dependency_links.txt +0 -0
  392. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb.egg-info/not-zip-safe +0 -0
  393. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb.egg-info/requires.txt +0 -0
  394. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/punkweb_bb.egg-info/top_level.txt +0 -0
  395. {punkweb_bb-0.5.0 → punkweb_bb-0.5.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: punkweb_bb
3
- Version: 0.5.0
3
+ Version: 0.5.2
4
4
  Summary: Django application that provides a simple and modern forum board software for your Django website.
5
5
  Home-page: https://github.com/Punkweb/PunkwebBB
6
6
  Author: Punkweb
@@ -15,38 +15,70 @@ Classifier: Programming Language :: Python
15
15
  Classifier: Programming Language :: Python :: 3
16
16
  Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
+ Requires-Dist: django>=4.0
19
+ Requires-Dist: bbcode
20
+ Requires-Dist: markdown
21
+ Requires-Dist: pillow
22
+ Requires-Dist: expiringdict
23
+ Dynamic: author
24
+ Dynamic: author-email
25
+ Dynamic: classifier
26
+ Dynamic: description
27
+ Dynamic: description-content-type
28
+ Dynamic: home-page
29
+ Dynamic: license
30
+ Dynamic: license-file
31
+ Dynamic: requires-dist
32
+ Dynamic: summary
18
33
 
19
34
  # PunkwebBB
20
35
 
21
- PunkwebBB is a Django application that provides a simple and modern forum board software for your Django website.
36
+ ## What is PunkwebBB?
37
+
38
+ PunkwebBB is a Django application that provides a complete forum board solution for Django websites. What sets it apart is its focus on simplicity and independence - it doesn't rely on other Django apps, making it incredibly straightforward to install and configure. The goal? To have a fully functional forum up and running in under a minute.
22
39
 
23
40
  Check out [punkweb.net](https://punkweb.net/board/) for documentation, support and a live demonstration of the software.
24
41
 
25
- ## Built with
42
+ ## Requirements
43
+
44
+ - Python 3.9+
45
+ - Django 3.2+
46
+
47
+ It may work with older versions of Python and Django, but it has not been tested.
48
+
49
+ ## Key Features
50
+
51
+ ### 1. Modern Technology Stack
26
52
 
27
53
  - [Django](https://www.djangoproject.com/)
28
54
  - [HTMX](https://htmx.org/)
29
- - [jQuery](https://jquery.com/)
30
55
  - [bbcode](https://pypi.org/project/bbcode/)
31
56
  - [Markdown](https://pypi.org/project/Markdown/)
32
57
  - [SCEditor](https://www.sceditor.com/)
33
58
  - [TinyMDE](https://github.com/jefago/tiny-markdown-editor)
34
59
  - [PrismJS](https://prismjs.com/)
35
60
 
36
- ## Requirements
61
+ ### 2. Core Functionality
37
62
 
38
- - Python 3.9+
39
- - Django 4.0+
63
+ - User registration and authentication
64
+ - Thread and post management
65
+ - Real-time shoutbox
66
+ - Discord integration
67
+ - BBCode and Markdown parsing
68
+ - Responsive design
69
+ - Admin controls and moderation tools
40
70
 
41
- It may work with older versions of Python and Django, but it has not been tested.
71
+ ## Getting Started
42
72
 
43
- ## Installation
73
+ ### Installation
44
74
 
45
75
  ```bash
46
76
  pip install punkweb-bb
47
77
  ```
48
78
 
49
- Add `punkweb_bb` to your `INSTALLED_APPS` in your Django settings module:
79
+ ### Configuration
80
+
81
+ Add to your Django settings:
50
82
 
51
83
  ```python
52
84
  INSTALLED_APPS = [
@@ -64,46 +96,75 @@ MIDDLEWARE = [
64
96
  ]
65
97
  ```
66
98
 
67
- Add the following URL pattern to your `urls.py`:
99
+ ### URL Configuration
68
100
 
69
101
  ```python
70
102
  from django.urls import path, include
71
103
 
72
104
  urlpatterns = [
73
105
  ...
74
- path("forum/", include("punkweb_bb.urls")), # or any other path you want
106
+ path("forum/", include("punkweb_bb.urls")),
75
107
  ]
76
108
  ```
77
109
 
78
- And finally, install the models:
110
+ ## Customization Options
79
111
 
80
- ```bash
81
- python manage.py migrate
112
+ PunkwebBB comes with a range of configurable settings:
113
+
114
+ ```python
115
+ PUNKWEB_BB = {
116
+ "SITE_NAME": "Your Site Name",
117
+ "SITE_TITLE": "Your Forum Title",
118
+ "PARSER": "bbcode", # or "markdown"
119
+ "FAVICON": "path/to/favicon.ico",
120
+ "OG_IMAGE": None, # Full URL for Open Graph meta tags
121
+ "SHOUTBOX_ENABLED": True,
122
+ "SHOUTBOX_POLLING_ENABLED": True,
123
+ "SHOUTBOX_POLLING_INTERVAL": 30, # seconds
124
+ "DISCORD_WIDGET_ENABLED": False,
125
+ "DISCORD_WIDGET_THEME": "dark",
126
+ "DISCORD_SERVER_ID": None,
127
+ }
82
128
  ```
83
129
 
84
- ## Deprecated notice (v0.5.0)
130
+ ## Why Choose PunkwebBB?
85
131
 
86
- If you were using the package before v0.5.0, there was a step in the README to add a context processor. This is no longer necessary, as it's been removed, so you may get an error that it doesn't exist. If you see this error, you can safely remove the context processor from your settings.
132
+ ### 1. Simplicity
87
133
 
88
- ## Configuration
134
+ The installation process is straightforward, and the default configuration works out of the box. You don't need to be a Django expert to get started.
89
135
 
90
- These are the default settings for PunkwebBB, which can be overridden in your Django settings module:
136
+ ### 2. Independence
91
137
 
92
- ```python
93
- PUNKWEB_BB = {
94
- "SITE_NAME": "PUNKWEB",
95
- "SITE_TITLE": "PunkwebBB",
96
- "PARSER": "bbcode", # "bbcode" or "markdown"
97
- "FAVICON": "punkweb_bb/favicon.ico",
98
- "OG_IMAGE": None, # Used for Open Graph meta tags, must be a full URL!
99
- "SHOUTBOX_ENABLED": True,
100
- "SHOUTBOX_POLLING_ENABLED": True,
101
- "SHOUTBOX_POLLING_INTERVAL": 30, # in seconds
102
- "DISCORD_WIDGET_ENABLED": False,
103
- "DISCORD_WIDGET_THEME": "dark",
104
- "DISCORD_SERVER_ID": None, # Found under Server Settings > Widget > Server ID
105
- }
106
- ```
138
+ Unlike many forum solutions that require multiple dependencies, PunkwebBB is self-contained. This means fewer potential points of failure and easier maintenance.
139
+
140
+ ### 3. Modern Features
141
+
142
+ From real-time shoutbox to Discord integration, PunkwebBB includes features that modern communities expect.
143
+
144
+ ### 4. Extensibility
145
+
146
+ While it's simple to set up, PunkwebBB is also highly customizable. You can extend its functionality to match your specific needs.
147
+
148
+ ### 5. Performance
149
+
150
+ Built with efficiency in mind, PunkwebBB handles user interactions smoothly without unnecessary overhead.
151
+
152
+ ## Real-World Applications
153
+
154
+ PunkwebBB is ideal for:
155
+
156
+ - Gaming communities
157
+ - Business support forums
158
+ - Educational platforms
159
+ - Technical discussion boards
160
+ - Fan communities
161
+ - Knowledge-sharing platforms
162
+
163
+ ## Conclusion
164
+
165
+ PunkwebBB represents a perfect balance between simplicity and functionality. Whether you're building a small community forum or a large-scale discussion platform, it provides all the essential features while remaining easy to implement and maintain.
166
+
167
+ The project's focus on independence and straightforward installation makes it an excellent choice for developers who want to add forum functionality to their Django projects without the complexity of larger forum solutions.
107
168
 
108
169
  ## Testing
109
170
 
@@ -1,34 +1,51 @@
1
1
  # PunkwebBB
2
2
 
3
- PunkwebBB is a Django application that provides a simple and modern forum board software for your Django website.
3
+ ## What is PunkwebBB?
4
+
5
+ PunkwebBB is a Django application that provides a complete forum board solution for Django websites. What sets it apart is its focus on simplicity and independence - it doesn't rely on other Django apps, making it incredibly straightforward to install and configure. The goal? To have a fully functional forum up and running in under a minute.
4
6
 
5
7
  Check out [punkweb.net](https://punkweb.net/board/) for documentation, support and a live demonstration of the software.
6
8
 
7
- ## Built with
9
+ ## Requirements
10
+
11
+ - Python 3.9+
12
+ - Django 3.2+
13
+
14
+ It may work with older versions of Python and Django, but it has not been tested.
15
+
16
+ ## Key Features
17
+
18
+ ### 1. Modern Technology Stack
8
19
 
9
20
  - [Django](https://www.djangoproject.com/)
10
21
  - [HTMX](https://htmx.org/)
11
- - [jQuery](https://jquery.com/)
12
22
  - [bbcode](https://pypi.org/project/bbcode/)
13
23
  - [Markdown](https://pypi.org/project/Markdown/)
14
24
  - [SCEditor](https://www.sceditor.com/)
15
25
  - [TinyMDE](https://github.com/jefago/tiny-markdown-editor)
16
26
  - [PrismJS](https://prismjs.com/)
17
27
 
18
- ## Requirements
28
+ ### 2. Core Functionality
19
29
 
20
- - Python 3.9+
21
- - Django 4.0+
30
+ - User registration and authentication
31
+ - Thread and post management
32
+ - Real-time shoutbox
33
+ - Discord integration
34
+ - BBCode and Markdown parsing
35
+ - Responsive design
36
+ - Admin controls and moderation tools
22
37
 
23
- It may work with older versions of Python and Django, but it has not been tested.
38
+ ## Getting Started
24
39
 
25
- ## Installation
40
+ ### Installation
26
41
 
27
42
  ```bash
28
43
  pip install punkweb-bb
29
44
  ```
30
45
 
31
- Add `punkweb_bb` to your `INSTALLED_APPS` in your Django settings module:
46
+ ### Configuration
47
+
48
+ Add to your Django settings:
32
49
 
33
50
  ```python
34
51
  INSTALLED_APPS = [
@@ -46,46 +63,75 @@ MIDDLEWARE = [
46
63
  ]
47
64
  ```
48
65
 
49
- Add the following URL pattern to your `urls.py`:
66
+ ### URL Configuration
50
67
 
51
68
  ```python
52
69
  from django.urls import path, include
53
70
 
54
71
  urlpatterns = [
55
72
  ...
56
- path("forum/", include("punkweb_bb.urls")), # or any other path you want
73
+ path("forum/", include("punkweb_bb.urls")),
57
74
  ]
58
75
  ```
59
76
 
60
- And finally, install the models:
77
+ ## Customization Options
61
78
 
62
- ```bash
63
- python manage.py migrate
79
+ PunkwebBB comes with a range of configurable settings:
80
+
81
+ ```python
82
+ PUNKWEB_BB = {
83
+ "SITE_NAME": "Your Site Name",
84
+ "SITE_TITLE": "Your Forum Title",
85
+ "PARSER": "bbcode", # or "markdown"
86
+ "FAVICON": "path/to/favicon.ico",
87
+ "OG_IMAGE": None, # Full URL for Open Graph meta tags
88
+ "SHOUTBOX_ENABLED": True,
89
+ "SHOUTBOX_POLLING_ENABLED": True,
90
+ "SHOUTBOX_POLLING_INTERVAL": 30, # seconds
91
+ "DISCORD_WIDGET_ENABLED": False,
92
+ "DISCORD_WIDGET_THEME": "dark",
93
+ "DISCORD_SERVER_ID": None,
94
+ }
64
95
  ```
65
96
 
66
- ## Deprecated notice (v0.5.0)
97
+ ## Why Choose PunkwebBB?
67
98
 
68
- If you were using the package before v0.5.0, there was a step in the README to add a context processor. This is no longer necessary, as it's been removed, so you may get an error that it doesn't exist. If you see this error, you can safely remove the context processor from your settings.
99
+ ### 1. Simplicity
69
100
 
70
- ## Configuration
101
+ The installation process is straightforward, and the default configuration works out of the box. You don't need to be a Django expert to get started.
71
102
 
72
- These are the default settings for PunkwebBB, which can be overridden in your Django settings module:
103
+ ### 2. Independence
73
104
 
74
- ```python
75
- PUNKWEB_BB = {
76
- "SITE_NAME": "PUNKWEB",
77
- "SITE_TITLE": "PunkwebBB",
78
- "PARSER": "bbcode", # "bbcode" or "markdown"
79
- "FAVICON": "punkweb_bb/favicon.ico",
80
- "OG_IMAGE": None, # Used for Open Graph meta tags, must be a full URL!
81
- "SHOUTBOX_ENABLED": True,
82
- "SHOUTBOX_POLLING_ENABLED": True,
83
- "SHOUTBOX_POLLING_INTERVAL": 30, # in seconds
84
- "DISCORD_WIDGET_ENABLED": False,
85
- "DISCORD_WIDGET_THEME": "dark",
86
- "DISCORD_SERVER_ID": None, # Found under Server Settings > Widget > Server ID
87
- }
88
- ```
105
+ Unlike many forum solutions that require multiple dependencies, PunkwebBB is self-contained. This means fewer potential points of failure and easier maintenance.
106
+
107
+ ### 3. Modern Features
108
+
109
+ From real-time shoutbox to Discord integration, PunkwebBB includes features that modern communities expect.
110
+
111
+ ### 4. Extensibility
112
+
113
+ While it's simple to set up, PunkwebBB is also highly customizable. You can extend its functionality to match your specific needs.
114
+
115
+ ### 5. Performance
116
+
117
+ Built with efficiency in mind, PunkwebBB handles user interactions smoothly without unnecessary overhead.
118
+
119
+ ## Real-World Applications
120
+
121
+ PunkwebBB is ideal for:
122
+
123
+ - Gaming communities
124
+ - Business support forums
125
+ - Educational platforms
126
+ - Technical discussion boards
127
+ - Fan communities
128
+ - Knowledge-sharing platforms
129
+
130
+ ## Conclusion
131
+
132
+ PunkwebBB represents a perfect balance between simplicity and functionality. Whether you're building a small community forum or a large-scale discussion platform, it provides all the essential features while remaining easy to implement and maintain.
133
+
134
+ The project's focus on independence and straightforward installation makes it an excellent choice for developers who want to add forum functionality to their Django projects without the complexity of larger forum solutions.
89
135
 
90
136
  ## Testing
91
137
 
@@ -1,5 +1,13 @@
1
1
  import bbcode
2
2
 
3
+ from punkweb_bb.settings import ALLOWED_URL_SCHEMES
4
+
5
+ def safe_url(href):
6
+ href = (href or "").strip()
7
+ if not href:
8
+ return None
9
+ lower = href.lower()
10
+ return href if any(lower.startswith(s + ":") for s in ALLOWED_URL_SCHEMES) else None
3
11
 
4
12
  def add_font_tag(parser):
5
13
  def _render_font(name, value, options, parent, context):
@@ -40,19 +48,23 @@ def add_shadow_tag(parser):
40
48
 
41
49
  parser.add_formatter("shadow", _render_shadow)
42
50
 
43
-
44
51
  def add_url_tag(parser):
45
52
  def _render_url(name, value, options, parent, context):
46
53
  if "url" in options:
47
- url = options["url"]
54
+ url = safe_url(options["url"])
55
+ if url is None:
56
+ return value
48
57
  return f'<a href="{url}">{value}</a>'
49
- return f'<a href="{value}">{value}</a>'
58
+
59
+ url = safe_url(value)
60
+ if url is None:
61
+ return value
62
+ return f'<a href="{url}">{value}</a>'
50
63
 
51
64
  parser.add_formatter(
52
65
  "url", _render_url, replace_links=False, replace_cosmetic=False
53
66
  )
54
67
 
55
-
56
68
  def add_quote_tag(parser):
57
69
  def _render_quote(name, value, options, parent, context):
58
70
  if "quote" in options:
@@ -0,0 +1,18 @@
1
+ # Generated by Django 4.2.11 on 2024-10-08 21:21
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('punkweb_bb', '0007_boardprofile_bio'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterField(
14
+ model_name='groupstyle',
15
+ name='username_style',
16
+ field=models.TextField(help_text='BBCode style for the username. Use {USER} as a placeholder for the username. Example: [b]{USER}[/b]'),
17
+ ),
18
+ ]
@@ -195,9 +195,10 @@ class Post(UUIDPrimaryKeyMixin, TimestampMixin):
195
195
  return thread_url
196
196
 
197
197
  def save(self, *args, **kwargs):
198
- if self.thread.is_closed:
199
- raise ValidationError("Cannot add posts to a closed thread.")
200
198
  if self._state.adding:
199
+ if self.thread.is_closed:
200
+ raise ValidationError("Cannot add posts to a closed thread.")
201
+
201
202
  self.thread.last_post_created_at = timezone.now()
202
203
  self.thread.save()
203
204
  super().save(*args, **kwargs)
@@ -223,7 +224,9 @@ class GroupStyle(UUIDPrimaryKeyMixin, TimestampMixin):
223
224
  default=0,
224
225
  help_text="Highest priority is displayed",
225
226
  )
226
- username_style = models.TextField()
227
+ username_style = models.TextField(
228
+ help_text="BBCode style for the username. Use {USER} as a placeholder for the username. Example: [b]{USER}[/b]"
229
+ )
227
230
 
228
231
  class Meta:
229
232
  ordering = ("-priority",)
@@ -13,3 +13,5 @@ SHOUTBOX_POLLING_INTERVAL = PUNKWEB_BB.get("SHOUTBOX_POLLING_INTERVAL", 30)
13
13
  DISCORD_WIDGET_ENABLED = PUNKWEB_BB.get("DISCORD_WIDGET_ENABLED", False)
14
14
  DISCORD_WIDGET_THEME = PUNKWEB_BB.get("DISCORD_WIDGET_THEME", "dark")
15
15
  DISCORD_SERVER_ID = PUNKWEB_BB.get("DISCORD_SERVER_ID", None)
16
+ # allow listing `javascript` will enable the weaponization of shoutbox bbcode.
17
+ ALLOWED_URL_SCHEMES = PUNKWEB_BB.get("ALLOWED_URL_SCHEMES", ["http", "https"])
@@ -72,6 +72,10 @@ code {
72
72
  direction: ltr;
73
73
  }
74
74
 
75
+ pre code {
76
+ font-size: 0.75rem;
77
+ }
78
+
75
79
  blockquote {
76
80
  background: #f1f3f5;
77
81
  margin: 0.25rem 0;
@@ -42,3 +42,9 @@
42
42
  .members__user__stat__value {
43
43
  color: var(--oc-gray-9);
44
44
  }
45
+
46
+ @media screen and (max-width: 768px) {
47
+ .members__header {
48
+ flex-direction: column;
49
+ }
50
+ }
@@ -154,3 +154,7 @@ hr {
154
154
  margin: 0;
155
155
  padding: 0;
156
156
  }
157
+
158
+ pre[class*="language-"] {
159
+ font-size: 0.75rem;
160
+ }