punkweb-bb 0.2.1__tar.gz → 0.2.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 (260) hide show
  1. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/PKG-INFO +3 -2
  2. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/README.md +2 -1
  3. punkweb_bb-0.2.2/punkweb_bb/__pycache__/admin.cpython-311.pyc +0 -0
  4. punkweb_bb-0.2.2/punkweb_bb/__pycache__/admin_forms.cpython-311.pyc +0 -0
  5. punkweb_bb-0.2.2/punkweb_bb/__pycache__/models.cpython-311.pyc +0 -0
  6. punkweb_bb-0.2.2/punkweb_bb/__pycache__/utils.cpython-311.pyc +0 -0
  7. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/admin.py +23 -1
  8. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/admin_forms.py +17 -1
  9. punkweb_bb-0.2.2/punkweb_bb/migrations/0004_groupstyle.py +58 -0
  10. punkweb_bb-0.2.2/punkweb_bb/migrations/__pycache__/0004_groupstyle.cpython-311.pyc +0 -0
  11. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/models.py +21 -0
  12. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/css/subcategory.css +1 -0
  13. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/css/thread.css +2 -2
  14. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/index.html +5 -5
  15. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/members.html +2 -2
  16. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/profile.html +2 -2
  17. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/shoutbox/shout_list.html +2 -2
  18. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/subcategory.html +7 -7
  19. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/thread.html +9 -5
  20. punkweb_bb-0.2.2/punkweb_bb/templatetags/__pycache__/styled_group_name.cpython-311.pyc +0 -0
  21. punkweb_bb-0.2.2/punkweb_bb/templatetags/__pycache__/styled_username.cpython-311.pyc +0 -0
  22. punkweb_bb-0.2.2/punkweb_bb/templatetags/__pycache__/username.cpython-311.pyc +0 -0
  23. punkweb_bb-0.2.2/punkweb_bb/templatetags/styled_group_name.py +11 -0
  24. punkweb_bb-0.2.2/punkweb_bb/templatetags/styled_username.py +9 -0
  25. punkweb_bb-0.2.2/punkweb_bb/utils.py +47 -0
  26. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb.egg-info/PKG-INFO +3 -2
  27. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb.egg-info/SOURCES.txt +8 -1
  28. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/setup.py +1 -1
  29. punkweb_bb-0.2.1/punkweb_bb/__pycache__/admin.cpython-311.pyc +0 -0
  30. punkweb_bb-0.2.1/punkweb_bb/__pycache__/admin_forms.cpython-311.pyc +0 -0
  31. punkweb_bb-0.2.1/punkweb_bb/__pycache__/models.cpython-311.pyc +0 -0
  32. punkweb_bb-0.2.1/punkweb_bb/__pycache__/utils.cpython-311.pyc +0 -0
  33. punkweb_bb-0.2.1/punkweb_bb/utils.py +0 -17
  34. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/LICENSE +0 -0
  35. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/MANIFEST.in +0 -0
  36. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/__init__.py +0 -0
  37. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/__pycache__/__init__.cpython-311.pyc +0 -0
  38. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/__pycache__/apps.cpython-311.pyc +0 -0
  39. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/__pycache__/bbcode_tags.cpython-311.pyc +0 -0
  40. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/__pycache__/context_processors.cpython-311.pyc +0 -0
  41. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/__pycache__/forms.cpython-311.pyc +0 -0
  42. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/__pycache__/guests.cpython-311.pyc +0 -0
  43. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/__pycache__/middleware.cpython-311.pyc +0 -0
  44. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/__pycache__/mixins.cpython-311.pyc +0 -0
  45. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/__pycache__/pagination.cpython-311.pyc +0 -0
  46. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/__pycache__/parsers.cpython-311.pyc +0 -0
  47. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/__pycache__/response.cpython-311.pyc +0 -0
  48. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/__pycache__/settings.cpython-311.pyc +0 -0
  49. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/__pycache__/signals.cpython-311.pyc +0 -0
  50. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/__pycache__/tests.cpython-311.pyc +0 -0
  51. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/__pycache__/urls.cpython-311.pyc +0 -0
  52. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/__pycache__/views.cpython-311.pyc +0 -0
  53. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/__pycache__/widgets.cpython-311.pyc +0 -0
  54. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/apps.py +0 -0
  55. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/bbcode_tags.py +0 -0
  56. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/context_processors.py +0 -0
  57. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/forms.py +0 -0
  58. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/guests.py +0 -0
  59. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/middleware.py +0 -0
  60. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/migrations/0001_initial.py +0 -0
  61. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/migrations/0002_thread_view_count.py +0 -0
  62. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/migrations/0003_alter_thread_options.py +0 -0
  63. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/migrations/__init__.py +0 -0
  64. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/migrations/__pycache__/0001_initial.cpython-311.pyc +0 -0
  65. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/migrations/__pycache__/0002_thread_view_count.cpython-311.pyc +0 -0
  66. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/migrations/__pycache__/0003_alter_thread_options.cpython-311.pyc +0 -0
  67. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/migrations/__pycache__/__init__.cpython-311.pyc +0 -0
  68. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/mixins.py +0 -0
  69. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/pagination.py +0 -0
  70. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/parsers.py +0 -0
  71. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/response.py +0 -0
  72. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/settings.py +0 -0
  73. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/signals.py +0 -0
  74. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/css/category-form.css +0 -0
  75. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/css/defaults.css +0 -0
  76. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/css/index.css +0 -0
  77. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/css/login.css +0 -0
  78. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/css/members.css +0 -0
  79. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/css/post-form.css +0 -0
  80. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/css/profile.css +0 -0
  81. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/css/punkweb-modal.css +0 -0
  82. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/css/punkweb.css +0 -0
  83. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/css/settings.css +0 -0
  84. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/css/shoutbox.css +0 -0
  85. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/css/subcategory-form.css +0 -0
  86. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/css/thread-form.css +0 -0
  87. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/css/typography.css +0 -0
  88. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/css/variables.css +0 -0
  89. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/editor/bbcode-editor-content.css +0 -0
  90. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/editor/bbcode-editor-tags.js +0 -0
  91. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/editor/bbcode-editor.css +0 -0
  92. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/editor/bbcode-editor.js +0 -0
  93. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/favicon.ico +0 -0
  94. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/img/default-profile-image.png +0 -0
  95. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/js/punkweb-modal.js +0 -0
  96. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/js/shoutbox.js +0 -0
  97. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/htmx-1.9.4.min.js +0 -0
  98. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/jquery-3.7.0.min.js +0 -0
  99. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/open-color.css +0 -0
  100. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/prism.css +0 -0
  101. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/prism.js +0 -0
  102. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/README.md +0 -0
  103. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/formats/bbcode.js +0 -0
  104. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/formats/xhtml.js +0 -0
  105. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/icons/material.js +0 -0
  106. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/icons/monocons.js +0 -0
  107. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/jquery.sceditor.bbcode.js +0 -0
  108. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/jquery.sceditor.js +0 -0
  109. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/jquery.sceditor.xhtml.js +0 -0
  110. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/plugins/alternative-lists.js +0 -0
  111. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/plugins/autosave.js +0 -0
  112. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/plugins/autoyoutube.js +0 -0
  113. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/plugins/dragdrop.js +0 -0
  114. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/plugins/format.js +0 -0
  115. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/plugins/plaintext.js +0 -0
  116. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/plugins/undo.js +0 -0
  117. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/plugins/v1compat.js +0 -0
  118. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/sceditor.js +0 -0
  119. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/themes/content/default.css +0 -0
  120. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/themes/default.css +0 -0
  121. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/themes/defaultdark.css +0 -0
  122. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/themes/famfamfam.png +0 -0
  123. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/themes/modern.css +0 -0
  124. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/themes/office-toolbar.css +0 -0
  125. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/themes/office.css +0 -0
  126. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/development/themes/square.css +0 -0
  127. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/alien.png +0 -0
  128. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/angel.png +0 -0
  129. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/angry.png +0 -0
  130. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/blink.png +0 -0
  131. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/blush.png +0 -0
  132. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/cheerful.png +0 -0
  133. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/cool.png +0 -0
  134. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/credits.txt +0 -0
  135. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/cwy.png +0 -0
  136. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/devil.png +0 -0
  137. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/dizzy.png +0 -0
  138. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/ermm.png +0 -0
  139. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/face.png +0 -0
  140. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/getlost.png +0 -0
  141. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/grin.png +0 -0
  142. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/happy.png +0 -0
  143. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/heart.png +0 -0
  144. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/kissing.png +0 -0
  145. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/laughing.png +0 -0
  146. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/ninja.png +0 -0
  147. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/pinch.png +0 -0
  148. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/pouty.png +0 -0
  149. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/sad.png +0 -0
  150. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/shocked.png +0 -0
  151. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/sick.png +0 -0
  152. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/sideways.png +0 -0
  153. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/silly.png +0 -0
  154. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/sleeping.png +0 -0
  155. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/smile.png +0 -0
  156. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/tongue.png +0 -0
  157. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/unsure.png +0 -0
  158. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/w00t.png +0 -0
  159. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/wassat.png +0 -0
  160. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/whistling.png +0 -0
  161. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/wink.png +0 -0
  162. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/emoticons/wub.png +0 -0
  163. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/example.html +0 -0
  164. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/ar.js +0 -0
  165. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/ca.js +0 -0
  166. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/cn.js +0 -0
  167. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/cs.js +0 -0
  168. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/de.js +0 -0
  169. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/el.js +0 -0
  170. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/en-US.js +0 -0
  171. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/en.js +0 -0
  172. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/es.js +0 -0
  173. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/et.js +0 -0
  174. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/fa.js +0 -0
  175. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/fi.js +0 -0
  176. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/fr.js +0 -0
  177. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/gl.js +0 -0
  178. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/hu.js +0 -0
  179. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/id.js +0 -0
  180. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/it.js +0 -0
  181. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/ja.js +0 -0
  182. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/lt.js +0 -0
  183. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/nb.js +0 -0
  184. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/nl.js +0 -0
  185. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/pl.js +0 -0
  186. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/pt-BR.js +0 -0
  187. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/pt.js +0 -0
  188. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/ru.js +0 -0
  189. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/sk.js +0 -0
  190. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/sv.js +0 -0
  191. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/template.js +0 -0
  192. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/tr.js +0 -0
  193. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/tw.js +0 -0
  194. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/uk.js +0 -0
  195. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/languages/vi.js +0 -0
  196. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/formats/bbcode.js +0 -0
  197. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/formats/xhtml.js +0 -0
  198. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/icons/material.js +0 -0
  199. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/icons/monocons.js +0 -0
  200. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/jquery.sceditor.bbcode.min.js +0 -0
  201. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/jquery.sceditor.min.js +0 -0
  202. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/jquery.sceditor.xhtml.min.js +0 -0
  203. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/plugins/alternative-lists.js +0 -0
  204. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/plugins/autosave.js +0 -0
  205. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/plugins/autoyoutube.js +0 -0
  206. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/plugins/dragdrop.js +0 -0
  207. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/plugins/format.js +0 -0
  208. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/plugins/plaintext.js +0 -0
  209. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/plugins/undo.js +0 -0
  210. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/plugins/v1compat.js +0 -0
  211. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/sceditor.min.js +0 -0
  212. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/content/default.min.css +0 -0
  213. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/default.min.css +0 -0
  214. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/defaultdark.min.css +0 -0
  215. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/famfamfam.png +0 -0
  216. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/modern.min.css +0 -0
  217. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/office-toolbar.min.css +0 -0
  218. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/office.min.css +0 -0
  219. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/square.min.css +0 -0
  220. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/base.html +0 -0
  221. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/base_modal.html +0 -0
  222. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/bbcode.html +0 -0
  223. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/category_create.html +0 -0
  224. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/category_update.html +0 -0
  225. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/login.html +0 -0
  226. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/partials/category_delete.html +0 -0
  227. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/partials/post_delete.html +0 -0
  228. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/partials/post_update.html +0 -0
  229. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/partials/shout_delete.html +0 -0
  230. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/partials/subcategory_delete.html +0 -0
  231. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/partials/thread_delete.html +0 -0
  232. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/settings.html +0 -0
  233. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/shoutbox/shoutbox.html +0 -0
  234. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/signup.html +0 -0
  235. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/subcategory_create.html +0 -0
  236. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/subcategory_update.html +0 -0
  237. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/thread_create.html +0 -0
  238. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templates/punkweb_bb/thread_update.html +0 -0
  239. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templatetags/__init__.py +0 -0
  240. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templatetags/__pycache__/__init__.cpython-311.pyc +0 -0
  241. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templatetags/__pycache__/can_delete.cpython-311.pyc +0 -0
  242. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templatetags/__pycache__/can_edit.cpython-311.pyc +0 -0
  243. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templatetags/__pycache__/can_post.cpython-311.pyc +0 -0
  244. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templatetags/__pycache__/humanize_count.cpython-311.pyc +0 -0
  245. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templatetags/__pycache__/humanize_int.cpython-311.pyc +0 -0
  246. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templatetags/__pycache__/shoutbox_bbcode.cpython-311.pyc +0 -0
  247. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templatetags/can_delete.py +0 -0
  248. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templatetags/can_edit.py +0 -0
  249. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templatetags/can_post.py +0 -0
  250. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templatetags/humanize_int.py +0 -0
  251. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/templatetags/shoutbox_bbcode.py +0 -0
  252. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/tests.py +0 -0
  253. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/urls.py +0 -0
  254. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/views.py +0 -0
  255. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb/widgets.py +0 -0
  256. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb.egg-info/dependency_links.txt +0 -0
  257. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb.egg-info/not-zip-safe +0 -0
  258. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb.egg-info/requires.txt +0 -0
  259. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/punkweb_bb.egg-info/top_level.txt +0 -0
  260. {punkweb_bb-0.2.1 → punkweb_bb-0.2.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: punkweb_bb
3
- Version: 0.2.1
3
+ Version: 0.2.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
@@ -35,7 +35,7 @@ Check out [punkweb.net](https://punkweb.net/board/) for documentation, support a
35
35
 
36
36
  ## Requirements
37
37
 
38
- - Python 3.11+
38
+ - Python 3.9+
39
39
  - Django 4.2+
40
40
  - django-precise-bbcode 1.2+
41
41
  - Pillow
@@ -111,6 +111,7 @@ PUNKWEB_BB = {
111
111
  "SITE_NAME": "PUNKWEB",
112
112
  "SITE_TITLE": "PunkwebBB",
113
113
  "FAVICON": "punkweb_bb/favicon.ico",
114
+ "OG_IMAGE": None, # Used for Open Graph meta tags, must be a full URL!
114
115
  "SHOUTBOX_ENABLED": True,
115
116
  "DISCORD_WIDGET_ENABLED": False,
116
117
  "DISCORD_WIDGET_THEME": "dark",
@@ -17,7 +17,7 @@ Check out [punkweb.net](https://punkweb.net/board/) for documentation, support a
17
17
 
18
18
  ## Requirements
19
19
 
20
- - Python 3.11+
20
+ - Python 3.9+
21
21
  - Django 4.2+
22
22
  - django-precise-bbcode 1.2+
23
23
  - Pillow
@@ -93,6 +93,7 @@ PUNKWEB_BB = {
93
93
  "SITE_NAME": "PUNKWEB",
94
94
  "SITE_TITLE": "PunkwebBB",
95
95
  "FAVICON": "punkweb_bb/favicon.ico",
96
+ "OG_IMAGE": None, # Used for Open Graph meta tags, must be a full URL!
96
97
  "SHOUTBOX_ENABLED": True,
97
98
  "DISCORD_WIDGET_ENABLED": False,
98
99
  "DISCORD_WIDGET_THEME": "dark",
@@ -4,11 +4,20 @@ from django.utils.safestring import mark_safe
4
4
  from punkweb_bb.admin_forms import (
5
5
  BoardProfileAdminModelForm,
6
6
  CategoryAdminModelForm,
7
+ GroupStyleAdminModelForm,
7
8
  PostAdminModelForm,
8
9
  SubcategoryAdminModelForm,
9
10
  ThreadAdminModelForm,
10
11
  )
11
- from punkweb_bb.models import BoardProfile, Category, Post, Shout, Subcategory, Thread
12
+ from punkweb_bb.models import (
13
+ BoardProfile,
14
+ Category,
15
+ GroupStyle,
16
+ Post,
17
+ Shout,
18
+ Subcategory,
19
+ Thread,
20
+ )
12
21
 
13
22
 
14
23
  @admin.register(BoardProfile)
@@ -114,3 +123,16 @@ class ShoutModelAdmin(admin.ModelAdmin):
114
123
  "user__email",
115
124
  "content",
116
125
  )
126
+
127
+
128
+ @admin.register(GroupStyle)
129
+ class GroupStyleModelAdmin(admin.ModelAdmin):
130
+ form = GroupStyleAdminModelForm
131
+ list_display = (
132
+ "group",
133
+ "priority",
134
+ )
135
+ search_fields = (
136
+ "group__name",
137
+ "username_style",
138
+ )
@@ -1,6 +1,13 @@
1
1
  from django import forms
2
2
 
3
- from punkweb_bb.models import BoardProfile, Category, Post, Subcategory, Thread
3
+ from punkweb_bb.models import (
4
+ BoardProfile,
5
+ Category,
6
+ GroupStyle,
7
+ Post,
8
+ Subcategory,
9
+ Thread,
10
+ )
4
11
  from punkweb_bb.widgets import BBCodeEditorWidget
5
12
 
6
13
 
@@ -47,3 +54,12 @@ class PostAdminModelForm(forms.ModelForm):
47
54
  widgets = {
48
55
  "content": BBCodeEditorWidget(),
49
56
  }
57
+
58
+
59
+ class GroupStyleAdminModelForm(forms.ModelForm):
60
+ class Meta:
61
+ model = GroupStyle
62
+ fields = "__all__"
63
+ widgets = {
64
+ "username_style": BBCodeEditorWidget(),
65
+ }
@@ -0,0 +1,58 @@
1
+ # Generated by Django 4.2.11 on 2024-05-29 19:48
2
+
3
+ from django.db import migrations, models
4
+ import django.db.models.deletion
5
+ import precise_bbcode.fields
6
+ import uuid
7
+
8
+
9
+ class Migration(migrations.Migration):
10
+
11
+ dependencies = [
12
+ ("auth", "0012_alter_user_first_name_max_length"),
13
+ ("punkweb_bb", "0003_alter_thread_options"),
14
+ ]
15
+
16
+ operations = [
17
+ migrations.CreateModel(
18
+ name="GroupStyle",
19
+ fields=[
20
+ (
21
+ "id",
22
+ models.UUIDField(
23
+ default=uuid.uuid4,
24
+ editable=False,
25
+ primary_key=True,
26
+ serialize=False,
27
+ ),
28
+ ),
29
+ ("created_at", models.DateTimeField(auto_now_add=True)),
30
+ ("updated_at", models.DateTimeField(auto_now=True)),
31
+ (
32
+ "priority",
33
+ models.PositiveIntegerField(
34
+ default=0, help_text="Highest priority is displayed"
35
+ ),
36
+ ),
37
+ (
38
+ "_username_style_rendered",
39
+ models.TextField(blank=True, editable=False, null=True),
40
+ ),
41
+ (
42
+ "username_style",
43
+ precise_bbcode.fields.BBCodeTextField(no_rendered_field=True),
44
+ ),
45
+ (
46
+ "group",
47
+ models.OneToOneField(
48
+ on_delete=django.db.models.deletion.CASCADE,
49
+ related_name="style",
50
+ to="auth.group",
51
+ ),
52
+ ),
53
+ ],
54
+ options={
55
+ "ordering": ("-priority",),
56
+ },
57
+ ),
58
+ ]
@@ -3,6 +3,7 @@ import math
3
3
  import os
4
4
 
5
5
  from django.contrib.auth import get_user_model
6
+ from django.contrib.auth.models import Group
6
7
  from django.core.cache import cache
7
8
  from django.db import models
8
9
  from django.forms import ValidationError
@@ -11,6 +12,7 @@ from django.utils import timezone
11
12
  from precise_bbcode.fields import BBCodeTextField
12
13
 
13
14
  from punkweb_bb.mixins import TimestampMixin, UUIDPrimaryKeyMixin
15
+ from punkweb_bb.utils import get_styled_username
14
16
 
15
17
  User = get_user_model()
16
18
 
@@ -28,6 +30,10 @@ class BoardProfile(UUIDPrimaryKeyMixin, TimestampMixin):
28
30
  class Meta:
29
31
  ordering = ("user__username",)
30
32
 
33
+ @property
34
+ def styled_username(self):
35
+ return get_styled_username(self.user)
36
+
31
37
  @property
32
38
  def is_online(self):
33
39
  last_seen = cache.get(f"profile_online_{self.id}")
@@ -205,3 +211,18 @@ class Shout(UUIDPrimaryKeyMixin, TimestampMixin):
205
211
 
206
212
  def can_delete(self, user):
207
213
  return user == self.user or user.has_perm("punkweb_bb.delete_shout")
214
+
215
+
216
+ class GroupStyle(UUIDPrimaryKeyMixin, TimestampMixin):
217
+ group = models.OneToOneField(Group, related_name="style", on_delete=models.CASCADE)
218
+ priority = models.PositiveIntegerField(
219
+ default=0,
220
+ help_text="Highest priority is displayed",
221
+ )
222
+ username_style = BBCodeTextField()
223
+
224
+ class Meta:
225
+ ordering = ("-priority",)
226
+
227
+ def __str__(self):
228
+ return f"{self.group} > {self.priority}"
@@ -30,6 +30,7 @@
30
30
  .thread__latestPost {
31
31
  align-items: center;
32
32
  display: flex;
33
+ justify-content: end;
33
34
  gap: 0.75rem;
34
35
  }
35
36
 
@@ -63,8 +63,8 @@
63
63
  }
64
64
 
65
65
  .thread__user__group {
66
- background-color: var(--primary-8);
67
- border: 1px solid var(--primary-9);
66
+ background-color: var(--oc-gray-0);
67
+ border: 1px solid var(--border);
68
68
  border-radius: 0.25rem;
69
69
  color: var(--text-on-primary);
70
70
  display: flex;
@@ -1,6 +1,6 @@
1
1
  {% extends 'punkweb_bb/base.html' %}
2
2
 
3
- {% load static %}
3
+ {% load static bbcode_tags styled_username %}
4
4
 
5
5
  {% block extra_head %}
6
6
  <link rel="stylesheet" href="{% static 'punkweb_bb/css/index.css' %}" />
@@ -101,7 +101,7 @@
101
101
  </time>
102
102
 
103
103
  <a href="{% url 'punkweb_bb:profile' subcategory.latest_thread.latest_post.user.id %}">
104
- {{subcategory.latest_thread.latest_post.user.username}}
104
+ {{subcategory.latest_thread.latest_post.user|styled_username}}
105
105
  </a>
106
106
  </div>
107
107
  </div>
@@ -125,7 +125,7 @@
125
125
  </time>
126
126
 
127
127
  <a href="{% url 'punkweb_bb:profile' subcategory.latest_thread.user.id %}">
128
- {{subcategory.latest_thread.user.username}}
128
+ {{subcategory.latest_thread.user|styled_username}}
129
129
  </a>
130
130
  </div>
131
131
  </div>
@@ -175,7 +175,7 @@
175
175
  </time>
176
176
 
177
177
  <a href="{% url 'punkweb_bb:profile' thread.user.id %}">
178
- {{thread.user.username}}
178
+ {{thread.user|styled_username}}
179
179
  </a>
180
180
  </div>
181
181
  </div>
@@ -206,7 +206,7 @@
206
206
  <div class="index__statistics__label">Newest member:</div>
207
207
  <div class="index__statistics__value">
208
208
  <a href="{% url 'punkweb_bb:profile' newest_user.id %}">
209
- {{newest_user.username}}
209
+ {{newest_user|styled_username}}
210
210
  </a>
211
211
  </div>
212
212
  </div>
@@ -1,5 +1,5 @@
1
1
  {% extends "punkweb_bb/base.html" %}
2
- {% load static %}
2
+ {% load static styled_username %}
3
3
 
4
4
  {% block title_prefix %}Members | {% endblock%}
5
5
  {% block og_title_prefix %}Members | {% endblock %}
@@ -33,7 +33,7 @@
33
33
  {% endif %}
34
34
  </div>
35
35
  <div class="members__user__info">
36
- <div class="members__user__username"><a href="{% url 'punkweb_bb:profile' user.id %}">{{ user.username }}</a></div>
36
+ <div class="members__user__username"><a href="{% url 'punkweb_bb:profile' user.id %}">{{ user|styled_username }}</a></div>
37
37
  <div class="members__user__stats">
38
38
  <div class="members__user__stat">
39
39
  Posts:
@@ -1,5 +1,5 @@
1
1
  {% extends 'punkweb_bb/base.html' %}
2
- {% load static %}
2
+ {% load static styled_username %}
3
3
 
4
4
  {% block title_prefix %}{{ user.username }} | {% endblock%}
5
5
  {% block og_title_prefix %}{{ user.username }} | {% endblock %}
@@ -35,7 +35,7 @@
35
35
  {% endif %}
36
36
  </div>
37
37
  <div class="profile__info__details">
38
- <div class="profile__info__username">{{user.username}}</div>
38
+ <div class="profile__info__username">{{user|styled_username}}</div>
39
39
  <div class="profile__info__stats">
40
40
  <div class="profile__info__stat">
41
41
  Date Joined:
@@ -1,10 +1,10 @@
1
- {% load shoutbox_bbcode can_delete %}
1
+ {% load shoutbox_bbcode can_delete styled_username %}
2
2
 
3
3
  {% for shout in shouts %}
4
4
  <div class="shoutbox__shout">
5
5
  <div class="shoutbox__shout__content">
6
6
  <span>{{shout.created_at|date:'g:i A'}}</span>
7
- <span><a href="{% url 'punkweb_bb:profile' shout.user.id %}">{{shout.user.username}}</a>: </span>
7
+ <span><a href="{% url 'punkweb_bb:profile' shout.user.id %}">{{shout.user|styled_username}}</a>: </span>
8
8
  <span>{{ shout.content | safe | shoutbox_bbcode }}</span>
9
9
  </div>
10
10
  {% if shout|can_delete:request.user %}
@@ -1,5 +1,5 @@
1
1
  {% extends 'punkweb_bb/base.html' %}
2
- {% load static humanize_int can_post %}
2
+ {% load static humanize_int can_post styled_username %}
3
3
 
4
4
  {% block title_prefix %}{{subcategory.name}} | {% endblock%}
5
5
  {% block og_title_prefix %}{{subcategory.name}} | {% endblock %}
@@ -70,10 +70,10 @@
70
70
  <div class="pw-table-container">
71
71
  <table class="pw-table">
72
72
  <colgroup>
73
- <col span="1">
74
- <col span="1" width="96px">
75
- <col span="1" width="96px">
76
- <col span="1" width="160px">
73
+ <col>
74
+ <col width="96px">
75
+ <col width="96px">
76
+ <col width="192px">
77
77
  </colgroup>
78
78
  <thead>
79
79
  <tr>
@@ -98,7 +98,7 @@
98
98
  </div>
99
99
  <div>
100
100
  <a href="{% url 'punkweb_bb:profile' thread.user.id %}">
101
- {{thread.user.username}}
101
+ {{thread.user|styled_username}}
102
102
  </a>
103
103
 
104
104
  {{thread.created_at|date:'M j, Y'}}</div>
@@ -117,7 +117,7 @@
117
117
  </a>
118
118
  <div>
119
119
  <a href="{% url 'punkweb_bb:profile' thread.latest_post.user.id %}">
120
- {{thread.latest_post.user.username}}
120
+ {{thread.latest_post.user|styled_username}}
121
121
  </a>
122
122
  </div>
123
123
  </div>
@@ -1,5 +1,5 @@
1
1
  {% extends 'punkweb_bb/base.html' %}
2
- {% load static can_delete can_edit can_post %}
2
+ {% load static can_delete can_edit can_post styled_username styled_group_name %}
3
3
 
4
4
  {% block title_prefix %}{{thread.title}} | {% endblock %}
5
5
  {% block og_title_prefix %}{{thread.title}} | {% endblock %}
@@ -55,7 +55,7 @@
55
55
  <div class="onlineIndicator"></div>
56
56
  {% endif %}
57
57
  <a href="{% url 'punkweb_bb:profile' thread.user.id %}">
58
- {{thread.user.username}}
58
+ {{thread.user|styled_username}}
59
59
  </a>
60
60
  </div>
61
61
  <div class="thread__user__info">
@@ -73,7 +73,9 @@
73
73
  {% if thread.user.groups.all|length > 0 %}
74
74
  <div class="thread__user__groups">
75
75
  {% for group in thread.user.groups.all %}
76
- <div class="thread__user__group">{{group.name}}</div>
76
+ <div class="thread__user__group">
77
+ {{group|styled_group_name}}
78
+ </div>
77
79
  {% endfor %}
78
80
  </div>
79
81
  {% endif %}
@@ -165,7 +167,7 @@
165
167
  <div class="onlineIndicator"></div>
166
168
  {% endif %}
167
169
  <a href="{% url 'punkweb_bb:profile' post.user.id %}">
168
- {{post.user.username}}
170
+ {{post.user|styled_username}}
169
171
  </a>
170
172
  </div>
171
173
  <div class="thread__user__info">
@@ -183,7 +185,9 @@
183
185
  {% if post.user.groups.all|length > 0 %}
184
186
  <div class="thread__user__groups">
185
187
  {% for group in post.user.groups.all %}
186
- <div class="thread__user__group">{{group.name}}</div>
188
+ <div class="thread__user__group">
189
+ {{group|styled_group_name}}
190
+ </div>
187
191
  {% endfor %}
188
192
  </div>
189
193
  {% endif %}
@@ -0,0 +1,11 @@
1
+ from django import template
2
+ from django.utils.safestring import mark_safe
3
+
4
+ from punkweb_bb.utils import get_group_name_styled
5
+
6
+ register = template.Library()
7
+
8
+
9
+ @register.filter
10
+ def styled_group_name(group):
11
+ return mark_safe(get_group_name_styled(group))
@@ -0,0 +1,9 @@
1
+ from django import template
2
+ from django.utils.safestring import mark_safe
3
+
4
+ register = template.Library()
5
+
6
+
7
+ @register.filter
8
+ def styled_username(user):
9
+ return mark_safe(user.profile.styled_username)
@@ -0,0 +1,47 @@
1
+ from django.contrib.auth.models import Group
2
+ from django.utils.text import slugify
3
+
4
+
5
+ def get_unique_slug(model, field):
6
+ base_slug = slugify(field)
7
+ slug = base_slug
8
+ unique_slug_exists = True
9
+
10
+ counter = 1
11
+ while unique_slug_exists:
12
+ if model.objects.filter(slug=slug).exists():
13
+ slug = f"{base_slug}-{counter}"
14
+ counter += 1
15
+ else:
16
+ unique_slug_exists = False
17
+
18
+ return slug
19
+
20
+
21
+ def get_user_highest_priority_group(user):
22
+ groups = Group.objects.filter(user=user, style__isnull=False)
23
+
24
+ if groups.exists():
25
+ return groups.order_by("-style__priority").first()
26
+
27
+ return None
28
+
29
+
30
+ def get_styled_username(user):
31
+ group = get_user_highest_priority_group(user)
32
+
33
+ if group:
34
+ username_style = group.style.username_style
35
+ styled_username = username_style.rendered.replace("{USER}", user.username)
36
+ return styled_username
37
+ else:
38
+ return user.username
39
+
40
+
41
+ def get_group_name_styled(group):
42
+ if group.style is None:
43
+ return group.name
44
+ else:
45
+ username_style = group.style.username_style
46
+ styled_group_name = username_style.rendered.replace("{USER}", group.name)
47
+ return styled_group_name
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: punkweb-bb
3
- Version: 0.2.1
3
+ Version: 0.2.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
@@ -35,7 +35,7 @@ Check out [punkweb.net](https://punkweb.net/board/) for documentation, support a
35
35
 
36
36
  ## Requirements
37
37
 
38
- - Python 3.11+
38
+ - Python 3.9+
39
39
  - Django 4.2+
40
40
  - django-precise-bbcode 1.2+
41
41
  - Pillow
@@ -111,6 +111,7 @@ PUNKWEB_BB = {
111
111
  "SITE_NAME": "PUNKWEB",
112
112
  "SITE_TITLE": "PunkwebBB",
113
113
  "FAVICON": "punkweb_bb/favicon.ico",
114
+ "OG_IMAGE": None, # Used for Open Graph meta tags, must be a full URL!
114
115
  "SHOUTBOX_ENABLED": True,
115
116
  "DISCORD_WIDGET_ENABLED": False,
116
117
  "DISCORD_WIDGET_THEME": "dark",
@@ -53,10 +53,12 @@ punkweb_bb/__pycache__/widgets.cpython-311.pyc
53
53
  punkweb_bb/migrations/0001_initial.py
54
54
  punkweb_bb/migrations/0002_thread_view_count.py
55
55
  punkweb_bb/migrations/0003_alter_thread_options.py
56
+ punkweb_bb/migrations/0004_groupstyle.py
56
57
  punkweb_bb/migrations/__init__.py
57
58
  punkweb_bb/migrations/__pycache__/0001_initial.cpython-311.pyc
58
59
  punkweb_bb/migrations/__pycache__/0002_thread_view_count.cpython-311.pyc
59
60
  punkweb_bb/migrations/__pycache__/0003_alter_thread_options.cpython-311.pyc
61
+ punkweb_bb/migrations/__pycache__/0004_groupstyle.cpython-311.pyc
60
62
  punkweb_bb/migrations/__pycache__/__init__.cpython-311.pyc
61
63
  punkweb_bb/static/punkweb_bb/favicon.ico
62
64
  punkweb_bb/static/punkweb_bb/css/category-form.css
@@ -237,10 +239,15 @@ punkweb_bb/templatetags/can_edit.py
237
239
  punkweb_bb/templatetags/can_post.py
238
240
  punkweb_bb/templatetags/humanize_int.py
239
241
  punkweb_bb/templatetags/shoutbox_bbcode.py
242
+ punkweb_bb/templatetags/styled_group_name.py
243
+ punkweb_bb/templatetags/styled_username.py
240
244
  punkweb_bb/templatetags/__pycache__/__init__.cpython-311.pyc
241
245
  punkweb_bb/templatetags/__pycache__/can_delete.cpython-311.pyc
242
246
  punkweb_bb/templatetags/__pycache__/can_edit.cpython-311.pyc
243
247
  punkweb_bb/templatetags/__pycache__/can_post.cpython-311.pyc
244
248
  punkweb_bb/templatetags/__pycache__/humanize_count.cpython-311.pyc
245
249
  punkweb_bb/templatetags/__pycache__/humanize_int.cpython-311.pyc
246
- punkweb_bb/templatetags/__pycache__/shoutbox_bbcode.cpython-311.pyc
250
+ punkweb_bb/templatetags/__pycache__/shoutbox_bbcode.cpython-311.pyc
251
+ punkweb_bb/templatetags/__pycache__/styled_group_name.cpython-311.pyc
252
+ punkweb_bb/templatetags/__pycache__/styled_username.cpython-311.pyc
253
+ punkweb_bb/templatetags/__pycache__/username.cpython-311.pyc
@@ -2,7 +2,7 @@ from setuptools import setup
2
2
 
3
3
  setup(
4
4
  name="punkweb_bb",
5
- version="0.2.1",
5
+ version="0.2.2",
6
6
  author="Punkweb",
7
7
  author_email="punkwebnet@gmail.com",
8
8
  packages=["punkweb_bb"],
@@ -1,17 +0,0 @@
1
- from django.utils.text import slugify
2
-
3
-
4
- def get_unique_slug(model, field):
5
- base_slug = slugify(field)
6
- slug = base_slug
7
- unique_slug_exists = True
8
-
9
- counter = 1
10
- while unique_slug_exists:
11
- if model.objects.filter(slug=slug).exists():
12
- slug = f"{base_slug}-{counter}"
13
- counter += 1
14
- else:
15
- unique_slug_exists = False
16
-
17
- return slug
File without changes
File without changes