punkweb-bb 0.2.1__py3-none-any.whl → 0.2.2__py3-none-any.whl

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 (28) hide show
  1. punkweb_bb/__pycache__/admin.cpython-311.pyc +0 -0
  2. punkweb_bb/__pycache__/admin_forms.cpython-311.pyc +0 -0
  3. punkweb_bb/__pycache__/models.cpython-311.pyc +0 -0
  4. punkweb_bb/__pycache__/utils.cpython-311.pyc +0 -0
  5. punkweb_bb/admin.py +23 -1
  6. punkweb_bb/admin_forms.py +17 -1
  7. punkweb_bb/migrations/0004_groupstyle.py +58 -0
  8. punkweb_bb/migrations/__pycache__/0004_groupstyle.cpython-311.pyc +0 -0
  9. punkweb_bb/models.py +21 -0
  10. punkweb_bb/static/punkweb_bb/css/subcategory.css +1 -0
  11. punkweb_bb/static/punkweb_bb/css/thread.css +2 -2
  12. punkweb_bb/templates/punkweb_bb/index.html +5 -5
  13. punkweb_bb/templates/punkweb_bb/members.html +2 -2
  14. punkweb_bb/templates/punkweb_bb/profile.html +2 -2
  15. punkweb_bb/templates/punkweb_bb/shoutbox/shout_list.html +2 -2
  16. punkweb_bb/templates/punkweb_bb/subcategory.html +7 -7
  17. punkweb_bb/templates/punkweb_bb/thread.html +9 -5
  18. punkweb_bb/templatetags/__pycache__/styled_group_name.cpython-311.pyc +0 -0
  19. punkweb_bb/templatetags/__pycache__/styled_username.cpython-311.pyc +0 -0
  20. punkweb_bb/templatetags/__pycache__/username.cpython-311.pyc +0 -0
  21. punkweb_bb/templatetags/styled_group_name.py +11 -0
  22. punkweb_bb/templatetags/styled_username.py +9 -0
  23. punkweb_bb/utils.py +30 -0
  24. {punkweb_bb-0.2.1.dist-info → punkweb_bb-0.2.2.dist-info}/METADATA +3 -2
  25. {punkweb_bb-0.2.1.dist-info → punkweb_bb-0.2.2.dist-info}/RECORD +28 -21
  26. {punkweb_bb-0.2.1.dist-info → punkweb_bb-0.2.2.dist-info}/LICENSE +0 -0
  27. {punkweb_bb-0.2.1.dist-info → punkweb_bb-0.2.2.dist-info}/WHEEL +0 -0
  28. {punkweb_bb-0.2.1.dist-info → punkweb_bb-0.2.2.dist-info}/top_level.txt +0 -0
punkweb_bb/admin.py CHANGED
@@ -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
+ )
punkweb_bb/admin_forms.py CHANGED
@@ -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
+ ]
punkweb_bb/models.py CHANGED
@@ -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)
punkweb_bb/utils.py CHANGED
@@ -1,3 +1,4 @@
1
+ from django.contrib.auth.models import Group
1
2
  from django.utils.text import slugify
2
3
 
3
4
 
@@ -15,3 +16,32 @@ def get_unique_slug(model, field):
15
16
  unique_slug_exists = False
16
17
 
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
@@ -39,7 +39,7 @@ Check out [punkweb.net](https://punkweb.net/board/) for documentation, support a
39
39
 
40
40
  ## Requirements
41
41
 
42
- - Python 3.11+
42
+ - Python 3.9+
43
43
  - Django 4.2+
44
44
  - django-precise-bbcode 1.2+
45
45
  - Pillow
@@ -115,6 +115,7 @@ PUNKWEB_BB = {
115
115
  "SITE_NAME": "PUNKWEB",
116
116
  "SITE_TITLE": "PunkwebBB",
117
117
  "FAVICON": "punkweb_bb/favicon.ico",
118
+ "OG_IMAGE": None, # Used for Open Graph meta tags, must be a full URL!
118
119
  "SHOUTBOX_ENABLED": True,
119
120
  "DISCORD_WIDGET_ENABLED": False,
120
121
  "DISCORD_WIDGET_THEME": "dark",
@@ -1,6 +1,6 @@
1
1
  punkweb_bb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- punkweb_bb/admin.py,sha256=v52l5E6QUnVxTm2s9qH-d9fHzaxwoOtver8W8Evor7Q,2493
3
- punkweb_bb/admin_forms.py,sha256=Ppgl960Alwwz_tsrCDct56SEab0ntxBMyb7LJHODuWc,1128
2
+ punkweb_bb/admin.py,sha256=ezgF1MrfhFb2mXjC0PNOVmoGXvZMnI0eND7noncetEU,2821
3
+ punkweb_bb/admin_forms.py,sha256=VgSjnJ4GsZ9qRv2J8n2UUMMTeCQMFUF-Ji1lfcEib1o,1372
4
4
  punkweb_bb/apps.py,sha256=GCDLy9B9vumeCsaauQ7LN4FOqE02mXWXECIz8G6KZCQ,207
5
5
  punkweb_bb/bbcode_tags.py,sha256=yNayXcZoRcRVZsdVrKIdKOV7bwlApFfq_CVfh1im7SY,4419
6
6
  punkweb_bb/context_processors.py,sha256=BEOGvWVukvxJUxWZBIc32ioB-mGqImSEBuhhZjqI2G0,146
@@ -8,7 +8,7 @@ punkweb_bb/forms.py,sha256=YeBrjOmBIytfQ5dfnLb1xKAnYR-zUSIr2cerFhCODaE,2907
8
8
  punkweb_bb/guests.py,sha256=Nvn4ZVJvQSQs_f-GeSwNn79Qp8ap_CAoXpYfRTqSbxg,467
9
9
  punkweb_bb/middleware.py,sha256=NrYv6nyAYKGcu-qKRnZmCyLghtJ4MUHvt3m5NS8HJbo,628
10
10
  punkweb_bb/mixins.py,sha256=XfiThPL7rB71IfukS1ikvYQhfg8RwgSVgsm10Ul1ezM,395
11
- punkweb_bb/models.py,sha256=OnZ1c0Awg-MFIdyChBH0_xvpyqMyY37-iiFp7ZlFJzw,6348
11
+ punkweb_bb/models.py,sha256=apNq5u1q-thyUryW_uD11unD3zM8x4rsYnBeGBis7AI,6962
12
12
  punkweb_bb/pagination.py,sha256=OgoZuJsq9MKMvBKYylJVPaNtM9ni3K8OAvOdi-eGr3M,409
13
13
  punkweb_bb/parsers.py,sha256=VjWSPqpVfypHLHP0NrfLqXB-1b0W6oFuGIzoAiPi71I,2732
14
14
  punkweb_bb/response.py,sha256=dETGVC9Xrsq02pQzmIIWbSUt472lJ4fgLwBKrXnP3t4,130
@@ -16,12 +16,12 @@ punkweb_bb/settings.py,sha256=poqIMn9EnPZ7CYvDB08NPlPHMpjSXJ-gCte2awmjgNc,561
16
16
  punkweb_bb/signals.py,sha256=bVdfg942Mwq-fYDZ1Z52Q0V2BCk1lgzGz8JVZFPnzJ8,365
17
17
  punkweb_bb/tests.py,sha256=NcTt9RPt4MegOzjryUok9FTWZda6VHB3O3FJN99Pz8s,26338
18
18
  punkweb_bb/urls.py,sha256=LPCKgiPEvM87JYU_sTYTdU-tKO8xDyKkiO2nT7sv2v0,2587
19
- punkweb_bb/utils.py,sha256=4XUoXB1hqCYShhPAbdFf2qSB5wTKt7IJtFizuRfkP2U,396
19
+ punkweb_bb/utils.py,sha256=SgIyMCk7yfPXI18J-ybAf_JXmT1RMQO5fe4T0DBVOek,1223
20
20
  punkweb_bb/views.py,sha256=BIpI58MIH50UppDOnkTEBwll1iozuVs2m6N7S9xqW9I,17400
21
21
  punkweb_bb/widgets.py,sha256=eF6CB5nnh_6XJadpDzDKgd9incd0VIR63Rnzdr8T2n0,840
22
22
  punkweb_bb/__pycache__/__init__.cpython-311.pyc,sha256=3PyxCxoznfadaGt0a7re4j0Ky9z9hblufpcwPB85kK8,161
23
- punkweb_bb/__pycache__/admin.cpython-311.pyc,sha256=rAPYqRy7hAVZn3qST3ypYdulvH9IBhzWEgvbbAMIMIY,3679
24
- punkweb_bb/__pycache__/admin_forms.cpython-311.pyc,sha256=fQgpcTP-_bouxhHrDVxFzA-1MHyyvieyw92NAWD5JnI,2980
23
+ punkweb_bb/__pycache__/admin.cpython-311.pyc,sha256=XBNHbe2xud1aR9hFcWpOzsVRBGJcXSN8g_UB4dnPhfo,4182
24
+ punkweb_bb/__pycache__/admin_forms.cpython-311.pyc,sha256=ojzXud6UZNA6rtELWYP84a6ZhrUzv5ZjPLdY--MCpOg,3531
25
25
  punkweb_bb/__pycache__/apps.cpython-311.pyc,sha256=lw328DOwOp1F8FWTFYb3qV1EoBNgRr_Tc4J8DXfIl-I,730
26
26
  punkweb_bb/__pycache__/bbcode_tags.cpython-311.pyc,sha256=QI4BJt5plqLMiAvlVAxibuNONi69PJFQpotpS50olro,8534
27
27
  punkweb_bb/__pycache__/context_processors.cpython-311.pyc,sha256=P7rEsodXonYexbS5vUaUKVJ9tIx1pOVk6NQWVvWNvS8,392
@@ -29,7 +29,7 @@ punkweb_bb/__pycache__/forms.cpython-311.pyc,sha256=wZAWlEguoeOOmcDKJJgXX_oLvYwA
29
29
  punkweb_bb/__pycache__/guests.cpython-311.pyc,sha256=vgZJcZGyHZkllCAhXHGgajHh7YM1ntXinSed3ojIK6I,1581
30
30
  punkweb_bb/__pycache__/middleware.cpython-311.pyc,sha256=KbZ6z2Q7eCRX3dB7mnRUpn58mb_O8sXpOw_sqVfQsgM,1560
31
31
  punkweb_bb/__pycache__/mixins.cpython-311.pyc,sha256=eP1NjqDNYMYXrC45DNkrTqVAUv1vsGBrqPy5U5CB_aw,1478
32
- punkweb_bb/__pycache__/models.cpython-311.pyc,sha256=u52jc-tCggzLH9td-qzyxzbKRaWK6SDzGFE_7D7Mosc,13931
32
+ punkweb_bb/__pycache__/models.cpython-311.pyc,sha256=J8lKNNv3reG2BhOe34fpFqF3cjA_iU91DoxDAC-RNk4,15235
33
33
  punkweb_bb/__pycache__/pagination.cpython-311.pyc,sha256=r54xmtiRp5dm1n2Xa7oElMFFaYFY0RzmMuF3Er4UqEA,990
34
34
  punkweb_bb/__pycache__/parsers.cpython-311.pyc,sha256=pp8JZt9V3HhquQMGrhglwLc53GxgNFWjjSnK3Bpxf8o,5335
35
35
  punkweb_bb/__pycache__/response.cpython-311.pyc,sha256=CEPckYWZkOrdU2Vow-ni0ZrWEUBww0uJzyr_wv---mM,448
@@ -37,16 +37,18 @@ punkweb_bb/__pycache__/settings.cpython-311.pyc,sha256=4nTGJeWkptvoS-DcaEEpXGEeh
37
37
  punkweb_bb/__pycache__/signals.cpython-311.pyc,sha256=AHChn7hDdrOmCAwKIKKuFOY-4hyBP9uwTkyb5bnFV-Q,864
38
38
  punkweb_bb/__pycache__/tests.cpython-311.pyc,sha256=z7wbXzc3xY4lyg8II-k8fVe-UxQ2fk8XwV-wnb684wo,51768
39
39
  punkweb_bb/__pycache__/urls.cpython-311.pyc,sha256=IYIX39oVwDb2TtVcyX7dlzztW7hJwl0vzO1UZpb-nuo,3565
40
- punkweb_bb/__pycache__/utils.cpython-311.pyc,sha256=iNDU4dwAwpAzqlKl5kuHH989Ic_1lGA4JQq0wpR7ATo,748
40
+ punkweb_bb/__pycache__/utils.cpython-311.pyc,sha256=9nGHbKLnUGM5bOSiEMbC5X_rxphHAaivuQruZu0-iQU,2086
41
41
  punkweb_bb/__pycache__/views.cpython-311.pyc,sha256=gpMcF9LcMOkJhd_6g3Pk8uLbw2iAHw9aj4fWtU1Jnj0,25276
42
42
  punkweb_bb/__pycache__/widgets.cpython-311.pyc,sha256=-RcQ3JapLHw8Bbi4FP05kQJJIa7bnliKPaFpkDCOWvQ,1552
43
43
  punkweb_bb/migrations/0001_initial.py,sha256=3RGsylygBcWx1kIPhSzOb9v_2yvowsxKfxuSinKKuS0,8950
44
44
  punkweb_bb/migrations/0002_thread_view_count.py,sha256=JJZT53Mp8Ofht3oIi67s-0wzCdpYyu8wOeCi_B8q8Yo,388
45
45
  punkweb_bb/migrations/0003_alter_thread_options.py,sha256=0xwVfSMWs28akDMhMwOdyyuC7JZ47JekkphT8fUCpcA,589
46
+ punkweb_bb/migrations/0004_groupstyle.py,sha256=DKcTMFkAj903MvrSheMKquCVIOzanZoFakZLIE63nLo,1821
46
47
  punkweb_bb/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
48
  punkweb_bb/migrations/__pycache__/0001_initial.cpython-311.pyc,sha256=koi_VflndmTKzSXWstWBXuVEZgEeueId5NE4kOAlA4Q,6456
48
49
  punkweb_bb/migrations/__pycache__/0002_thread_view_count.cpython-311.pyc,sha256=9HRllkD8LHPXadyurYvp2UcmRFEywalUVQjiOGWizgc,815
49
50
  punkweb_bb/migrations/__pycache__/0003_alter_thread_options.cpython-311.pyc,sha256=zK9keYR8PU92_sP5M78xmFJeLGwSnM5tIo09bU-IpOU,860
51
+ punkweb_bb/migrations/__pycache__/0004_groupstyle.cpython-311.pyc,sha256=5wYwjAe30bSea8PswtRkIw8vrxIVk9tUZmUWXanJ2dk,2000
50
52
  punkweb_bb/migrations/__pycache__/__init__.cpython-311.pyc,sha256=sTbC1AXnh0V4BJwjcjs1ckdeYjG01I348hZwLE2HI4Y,172
51
53
  punkweb_bb/static/punkweb_bb/favicon.ico,sha256=lEfX--R9wEGPkkXgLYCsGmHuAGajigiqBXAoonxq8ZM,318
52
54
  punkweb_bb/static/punkweb_bb/css/category-form.css,sha256=lvG7Lh2GGBVplKk46JAIHF1cmFLve2JT32BswmudIF8,359
@@ -61,9 +63,9 @@ punkweb_bb/static/punkweb_bb/css/punkweb.css,sha256=GhVOOVTy76IOh4WLfUQeAtG8LWhE
61
63
  punkweb_bb/static/punkweb_bb/css/settings.css,sha256=ulQQFTu8slk2rYOmhvci5v-AVnguUuDhKQDhyQOsQNU,308
62
64
  punkweb_bb/static/punkweb_bb/css/shoutbox.css,sha256=DapBIe21b6w7ugA_U1EJ-1LFb3IfnJZMw7Kc4DLxF1g,536
63
65
  punkweb_bb/static/punkweb_bb/css/subcategory-form.css,sha256=KU-fI8-DiurYiiBVeNk-9vERekbJrOTxllPPFYXu5Fk,371
64
- punkweb_bb/static/punkweb_bb/css/subcategory.css,sha256=7j9_-S4kspgojfebYBu8AQQS3uJtqCoE32T-BuAgHxw,711
66
+ punkweb_bb/static/punkweb_bb/css/subcategory.css,sha256=h3TaMhswiD1ePgp80VN7sR91Wzr6tZwU_kCrulvAuPc,735
65
67
  punkweb_bb/static/punkweb_bb/css/thread-form.css,sha256=9MfqocnamNMjeNJ-w6YTwYbm4oepeK09phFzVsg1XO8,329
66
- punkweb_bb/static/punkweb_bb/css/thread.css,sha256=wJMQaFu-CEzHUYbp8WRCI6wWxi2CMccIT0xfuRNcFAg,1873
68
+ punkweb_bb/static/punkweb_bb/css/thread.css,sha256=unMpE6TM03tT8j388UghopGfQa-yvs-6dl8cOki7b6Y,1870
67
69
  punkweb_bb/static/punkweb_bb/css/typography.css,sha256=qbFGBcU-OOe7r41xeW0Gc_9x6yHxhh81XtswmFxgavc,448
68
70
  punkweb_bb/static/punkweb_bb/css/variables.css,sha256=WphZPeJgeqMYy4JYaSTX0gX-JiZh8EJlhieGOGk75DA,1193
69
71
  punkweb_bb/static/punkweb_bb/editor/bbcode-editor-content.css,sha256=c1VCTVYqvzjy-51dMZ27zp-zdZrL-2TwIEheeYQXDDw,1466
@@ -201,16 +203,16 @@ punkweb_bb/templates/punkweb_bb/base_modal.html,sha256=OCbtsMWeNCO0Tl1PmHCcGkwoi
201
203
  punkweb_bb/templates/punkweb_bb/bbcode.html,sha256=1EGBejsOMZOPi6P39oR6E35VdqnfR6wYWeKDl4Xr_js,396
202
204
  punkweb_bb/templates/punkweb_bb/category_create.html,sha256=773uJzxVvuPmWVrW87EoQTBNoo6cyi3UBp_PZn6JY5A,1369
203
205
  punkweb_bb/templates/punkweb_bb/category_update.html,sha256=GUFo19BXY8JVvxP7cWAyWiTD5Z9LohR4f6vf1jlRqfo,1467
204
- punkweb_bb/templates/punkweb_bb/index.html,sha256=7GtrTisMrFWRVF-RGOPo20PWFDXqCIIpgUSXg7TPmHM,10470
206
+ punkweb_bb/templates/punkweb_bb/index.html,sha256=pe0TAI98yGrPR0dosQYJgsfesFArfsoE-kSNfElSs0Q,10526
205
207
  punkweb_bb/templates/punkweb_bb/login.html,sha256=Hsmt_Y50nTOEv7hBjACXMSEmIVCl-IqDv15iE-wo2cY,1137
206
- punkweb_bb/templates/punkweb_bb/members.html,sha256=r4wsRW8BmPi_FdUfvfgjXdFs37IOYo_mjS3gmDGhZek,2781
207
- punkweb_bb/templates/punkweb_bb/profile.html,sha256=rK2AW91XyRi5Cag2QaN8vTqZgAXtqIQOM1Koarx2oZI,3012
208
+ punkweb_bb/templates/punkweb_bb/members.html,sha256=a8G4kuZrDb1zZHYYvCscCJ3oZYMVcfRgN7R7DyUlvto,2804
209
+ punkweb_bb/templates/punkweb_bb/profile.html,sha256=xCvh8X9oUO1nTmLSvI1KX2yD6x61IWrVMLr8zQMLOo4,3035
208
210
  punkweb_bb/templates/punkweb_bb/settings.html,sha256=pxEgQQxK1lk2UKL1W3YL-liAERo2mFgUNAJtshe13xk,2047
209
211
  punkweb_bb/templates/punkweb_bb/signup.html,sha256=LMs_EwdEbBmFt4zXPt_LmtUujmBJVt0zE0LldgfhrY0,1219
210
- punkweb_bb/templates/punkweb_bb/subcategory.html,sha256=X61wOey23LRByhNw2Od7n6pCXzT1BNRUxNQQP80187s,5848
212
+ punkweb_bb/templates/punkweb_bb/subcategory.html,sha256=MqEhncDfPRdxgRCoqCMck_dHBRFM7sTBBxnhtV7keiE,5842
211
213
  punkweb_bb/templates/punkweb_bb/subcategory_create.html,sha256=8FhcWKiaYGIulrOaBzQ6qFMpDvsAnX_q-XJ5mKwBLW8,1521
212
214
  punkweb_bb/templates/punkweb_bb/subcategory_update.html,sha256=kOq6tuhNBSMVQkBSpHpU06JuQ3h008fOKqLcxe9PgCg,1638
213
- punkweb_bb/templates/punkweb_bb/thread.html,sha256=Ndp7653-BjDW7MHmkIRCr5pUsWxM5oULZe-k-mBjFm0,10276
215
+ punkweb_bb/templates/punkweb_bb/thread.html,sha256=YGC8dPeBAN7XYwwjUl3FjxA1NGka-_7BFkkaLnaAxjw,10390
214
216
  punkweb_bb/templates/punkweb_bb/thread_create.html,sha256=vCwU8GNBwy7pJ2X-jSTgqvAuqgQ_NeSvRDyieBWhP_g,1697
215
217
  punkweb_bb/templates/punkweb_bb/thread_update.html,sha256=SLL_5tceZ8ZiPbWCO9eOe_aeMgV5lQ-p6eun1_XvKwE,1730
216
218
  punkweb_bb/templates/punkweb_bb/partials/category_delete.html,sha256=Re9ESmC6AHeY9aICE0zE1i7vZEDHsF577Vmsz9L7jyA,435
@@ -219,7 +221,7 @@ punkweb_bb/templates/punkweb_bb/partials/post_update.html,sha256=mFidDqgTuv4Lffu
219
221
  punkweb_bb/templates/punkweb_bb/partials/shout_delete.html,sha256=zo-Ff-meucwC03p656VI5SI79RmS5nF-NbrFb3znPBM,421
220
222
  punkweb_bb/templates/punkweb_bb/partials/subcategory_delete.html,sha256=GImRDtfuMTg6_docXHTqVqe_1NzXblnrSyivxeatlIE,447
221
223
  punkweb_bb/templates/punkweb_bb/partials/thread_delete.html,sha256=m91u_r8qTvMqR2s4VxxFHQvZt-WGgHnHzJL_1KZkX9M,425
222
- punkweb_bb/templates/punkweb_bb/shoutbox/shout_list.html,sha256=CDUDhuxZ0LgvP5hQzsdcC1xRJTq7cEkOjdBDMRfuMW4,736
224
+ punkweb_bb/templates/punkweb_bb/shoutbox/shout_list.html,sha256=STyh2Q2CMJ94XuH_4IDxtTYa6LZO6uTlWQ6uqFnMh4s,759
223
225
  punkweb_bb/templates/punkweb_bb/shoutbox/shoutbox.html,sha256=J_Lp6KKcqSJr-IayyLN-p0JgMfuwbFP77g-UtcM53WI,672
224
226
  punkweb_bb/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
225
227
  punkweb_bb/templatetags/can_delete.py,sha256=NiFi_VH3KKaAYxdu9cZXR9gT9SNEeLAxnbxb4R7O_Nw,137
@@ -227,6 +229,8 @@ punkweb_bb/templatetags/can_edit.py,sha256=CbnbCcmJkeHZbWbsMn5OmCXMBEa6N1KW6W1dH
227
229
  punkweb_bb/templatetags/can_post.py,sha256=6J1ojqqyNX99DBZM30jQiirQxAyY5rMi05QXXQjJB7I,133
228
230
  punkweb_bb/templatetags/humanize_int.py,sha256=C4KmDG0Jv6o8rwT1RXLdWoGLddJxMxgOoRV9I2598AM,248
229
231
  punkweb_bb/templatetags/shoutbox_bbcode.py,sha256=OH-FsRTyPWZldaFypSVzPLlTrSm4XEOqQW9hBI0ROBk,310
232
+ punkweb_bb/templatetags/styled_group_name.py,sha256=gR7oYh4uW-EHUaEZVjym0SHUX76VlXC3BLpoNG6hQAc,257
233
+ punkweb_bb/templatetags/styled_username.py,sha256=1bv6_ss8elDtuJosAYBlKagUciUXb_WlA5X8O4mKtLI,202
230
234
  punkweb_bb/templatetags/__pycache__/__init__.cpython-311.pyc,sha256=VEPKwaIhqpKpSSJiotDYngAUdidDzR9PpPiHtKEl1jA,174
231
235
  punkweb_bb/templatetags/__pycache__/can_delete.cpython-311.pyc,sha256=GfdHIumIAFyra6Nox6Y7AILBUW_DL7OZ0MtWWaj94mw,528
232
236
  punkweb_bb/templatetags/__pycache__/can_edit.cpython-311.pyc,sha256=PJDUtJWrZWb8qgldPrC2si0QNokEhRaYnXaRk4dhuJU,524
@@ -234,8 +238,11 @@ punkweb_bb/templatetags/__pycache__/can_post.cpython-311.pyc,sha256=1IU4-Ar-kwjn
234
238
  punkweb_bb/templatetags/__pycache__/humanize_count.cpython-311.pyc,sha256=UKD6_5RX8YpYpg-LPrgGxBkW56THsbYY51cKTYdKwRY,621
235
239
  punkweb_bb/templatetags/__pycache__/humanize_int.cpython-311.pyc,sha256=csY5ek-bevYVeM91hYFKozuKWXCTXb7M-7Bokwdxhrk,619
236
240
  punkweb_bb/templatetags/__pycache__/shoutbox_bbcode.cpython-311.pyc,sha256=Jhg9qW-nQe6IDr45rE0ZgeDYF4E61S7kYAYpbMo5ZQ8,833
237
- punkweb_bb-0.2.1.dist-info/LICENSE,sha256=YYysF07B-kyXSO7IWFB9f49ZXa6LIFUTVsR1Ogmhp8s,1507
238
- punkweb_bb-0.2.1.dist-info/METADATA,sha256=4cwq4pqrFlbTu_DgHhl1UxFT-dqSv9FH0sUSvu6ba8M,5138
239
- punkweb_bb-0.2.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
240
- punkweb_bb-0.2.1.dist-info/top_level.txt,sha256=sWuGdGnk0ejOXiFDzlBqrNs2VbPEx0_i8UwWXn4SuHU,11
241
- punkweb_bb-0.2.1.dist-info/RECORD,,
241
+ punkweb_bb/templatetags/__pycache__/styled_group_name.cpython-311.pyc,sha256=nVcz4BXJbzlkN8EorsaceOl86BxBecl__mmYnpRwA6U,712
242
+ punkweb_bb/templatetags/__pycache__/styled_username.cpython-311.pyc,sha256=a91ogyUeLdHS9rEU28FWEYeVqcJopjbvPPdnGkmlHKI,628
243
+ punkweb_bb/templatetags/__pycache__/username.cpython-311.pyc,sha256=GvZkwtrFvkRr1RbxoejyKMmJXr01ABz3lVEwPNq4wxk,626
244
+ punkweb_bb-0.2.2.dist-info/LICENSE,sha256=YYysF07B-kyXSO7IWFB9f49ZXa6LIFUTVsR1Ogmhp8s,1507
245
+ punkweb_bb-0.2.2.dist-info/METADATA,sha256=fzf4OdsfvuYSkAEELrpX9J0_WNEanLtLx4Ycnobicks,5210
246
+ punkweb_bb-0.2.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
247
+ punkweb_bb-0.2.2.dist-info/top_level.txt,sha256=sWuGdGnk0ejOXiFDzlBqrNs2VbPEx0_i8UwWXn4SuHU,11
248
+ punkweb_bb-0.2.2.dist-info/RECORD,,