punkweb-bb 0.2.1__py3-none-any.whl → 0.2.3__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 (32) 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__/settings.cpython-311.pyc +0 -0
  5. punkweb_bb/__pycache__/sitemap.cpython-311.pyc +0 -0
  6. punkweb_bb/__pycache__/utils.cpython-311.pyc +0 -0
  7. punkweb_bb/__pycache__/views.cpython-311.pyc +0 -0
  8. punkweb_bb/admin.py +23 -1
  9. punkweb_bb/admin_forms.py +17 -1
  10. punkweb_bb/migrations/0004_groupstyle.py +58 -0
  11. punkweb_bb/migrations/__pycache__/0004_groupstyle.cpython-311.pyc +0 -0
  12. punkweb_bb/models.py +26 -2
  13. punkweb_bb/static/punkweb_bb/css/subcategory.css +1 -0
  14. punkweb_bb/static/punkweb_bb/css/thread.css +21 -28
  15. punkweb_bb/templates/punkweb_bb/index.html +5 -5
  16. punkweb_bb/templates/punkweb_bb/members.html +5 -3
  17. punkweb_bb/templates/punkweb_bb/profile.html +8 -4
  18. punkweb_bb/templates/punkweb_bb/shoutbox/shout_list.html +3 -3
  19. punkweb_bb/templates/punkweb_bb/subcategory.html +8 -8
  20. punkweb_bb/templates/punkweb_bb/thread.html +72 -60
  21. punkweb_bb/templatetags/__pycache__/styled_group_name.cpython-311.pyc +0 -0
  22. punkweb_bb/templatetags/__pycache__/styled_username.cpython-311.pyc +0 -0
  23. punkweb_bb/templatetags/__pycache__/username.cpython-311.pyc +0 -0
  24. punkweb_bb/templatetags/styled_group_name.py +11 -0
  25. punkweb_bb/templatetags/styled_username.py +9 -0
  26. punkweb_bb/utils.py +30 -0
  27. punkweb_bb/views.py +1 -3
  28. {punkweb_bb-0.2.1.dist-info → punkweb_bb-0.2.3.dist-info}/METADATA +3 -2
  29. {punkweb_bb-0.2.1.dist-info → punkweb_bb-0.2.3.dist-info}/RECORD +32 -24
  30. {punkweb_bb-0.2.1.dist-info → punkweb_bb-0.2.3.dist-info}/LICENSE +0 -0
  31. {punkweb_bb-0.2.1.dist-info → punkweb_bb-0.2.3.dist-info}/WHEEL +0 -0
  32. {punkweb_bb-0.2.1.dist-info → punkweb_bb-0.2.3.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
@@ -1,8 +1,8 @@
1
- import datetime
2
1
  import math
3
2
  import os
4
3
 
5
4
  from django.contrib.auth import get_user_model
5
+ from django.contrib.auth.models import Group
6
6
  from django.core.cache import cache
7
7
  from django.db import models
8
8
  from django.forms import ValidationError
@@ -11,6 +11,7 @@ from django.utils import timezone
11
11
  from precise_bbcode.fields import BBCodeTextField
12
12
 
13
13
  from punkweb_bb.mixins import TimestampMixin, UUIDPrimaryKeyMixin
14
+ from punkweb_bb.utils import get_highest_priority_group, get_styled_username
14
15
 
15
16
  User = get_user_model()
16
17
 
@@ -28,11 +29,19 @@ class BoardProfile(UUIDPrimaryKeyMixin, TimestampMixin):
28
29
  class Meta:
29
30
  ordering = ("user__username",)
30
31
 
32
+ @property
33
+ def priority_group(self):
34
+ return get_highest_priority_group(self.user)
35
+
36
+ @property
37
+ def styled_username(self):
38
+ return get_styled_username(self.user)
39
+
31
40
  @property
32
41
  def is_online(self):
33
42
  last_seen = cache.get(f"profile_online_{self.id}")
34
43
  if last_seen:
35
- return timezone.now() < last_seen + datetime.timedelta(minutes=5)
44
+ return timezone.now() < last_seen + timezone.timedelta(minutes=5)
36
45
  return False
37
46
 
38
47
  @property
@@ -205,3 +214,18 @@ class Shout(UUIDPrimaryKeyMixin, TimestampMixin):
205
214
 
206
215
  def can_delete(self, user):
207
216
  return user == self.user or user.has_perm("punkweb_bb.delete_shout")
217
+
218
+
219
+ class GroupStyle(UUIDPrimaryKeyMixin, TimestampMixin):
220
+ group = models.OneToOneField(Group, related_name="style", on_delete=models.CASCADE)
221
+ priority = models.PositiveIntegerField(
222
+ default=0,
223
+ help_text="Highest priority is displayed",
224
+ )
225
+ username_style = BBCodeTextField()
226
+
227
+ class Meta:
228
+ ordering = ("-priority",)
229
+
230
+ def __str__(self):
231
+ 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
 
@@ -28,13 +28,25 @@
28
28
  padding: 1rem;
29
29
  }
30
30
 
31
- .thread__user__usernameContainer {
31
+ .thread__user__info {
32
32
  align-items: center;
33
33
  display: flex;
34
+ flex-direction: column;
34
35
  gap: 0.25rem;
35
36
  }
36
37
 
37
- .thread__user__info {
38
+ .thread__user__username {
39
+ align-items: center;
40
+ display: flex;
41
+ gap: 0.25rem;
42
+ }
43
+
44
+ .thread__user__group {
45
+ font-size: 0.75rem;
46
+ font-weight: 700;
47
+ }
48
+
49
+ .thread__user__details {
38
50
  background-color: var(--oc-gray-0);
39
51
  border: 1px solid var(--border);
40
52
  border-radius: 0.25rem;
@@ -45,35 +57,16 @@
45
57
  width: 100%;
46
58
  }
47
59
 
48
- .thread__user__info__row {
60
+ .thread__user__details__row {
49
61
  align-items: center;
50
62
  display: flex;
51
63
  justify-content: space-between;
52
64
  }
53
65
 
54
- .thread__user__info__label {
66
+ .thread__user__details__label {
55
67
  color: var(--body-fg);
56
68
  }
57
69
 
58
- .thread__user__groups {
59
- display: flex;
60
- flex-direction: column;
61
- gap: 0.5rem;
62
- width: 100%;
63
- }
64
-
65
- .thread__user__group {
66
- background-color: var(--primary-8);
67
- border: 1px solid var(--primary-9);
68
- border-radius: 0.25rem;
69
- color: var(--text-on-primary);
70
- display: flex;
71
- font-size: 0.875rem;
72
- justify-content: center;
73
- padding: 0.5rem;
74
- width: 100%;
75
- }
76
-
77
70
  .thread__main {
78
71
  display: flex;
79
72
  flex-direction: column;
@@ -85,11 +78,6 @@
85
78
  padding: 1rem;
86
79
  }
87
80
 
88
- .thread__signature {
89
- border-top: 1px solid var(--border);
90
- padding: 1rem;
91
- }
92
-
93
81
  .thread__actions {
94
82
  align-items: center;
95
83
  display: flex;
@@ -98,6 +86,11 @@
98
86
  padding: 1rem;
99
87
  }
100
88
 
89
+ .thread__signature {
90
+ border-top: 1px solid var(--border);
91
+ padding: 1rem;
92
+ }
93
+
101
94
  .thread__reply__content {
102
95
  display: flex;
103
96
  flex-direction: column;
@@ -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:
@@ -41,7 +41,9 @@
41
41
  </div>
42
42
  <div class="members__user__stat">
43
43
  Date Joined:
44
- <span class="members__user__stat__value">{{user.date_joined | date:'m/d/Y'}}</span>
44
+ <span class="members__user__stat__value">
45
+ <time datetime="{{user.date_joined|date:'c'}}">{{user.date_joined | date:'m/d/Y'}}</time>
46
+ </span>
45
47
  </div>
46
48
  </div>
47
49
  </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 %}{{ user.username }} | {% endblock%}
5
5
  {% block og_title_prefix %}{{ user.username }} | {% endblock %}
@@ -35,15 +35,19 @@
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:
42
- <span class="profile__info__stat__value">{{user.date_joined | date:'m/d/Y'}}</span>
42
+ <span class="profile__info__stat__value">
43
+ <time datetime="{{user.date_joined|date:'c'}}">{{user.date_joined | date:'m/d/Y'}}</time>
44
+ </span>
43
45
  </div>
44
46
  <div class="profile__info__stat">
45
47
  Last Login:
46
- <span class="profile__info__stat__value">{{user.last_login | date:'m/d/Y'}}</span>
48
+ <span class="profile__info__stat__value">
49
+ <time datetime="{{user.last_login|date:'c'}}">{{user.last_login | date:'m/d/Y'}}</time>
50
+ </span>
47
51
  </div>
48
52
  <div class="profile__info__stat">
49
53
  Posts:
@@ -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
- <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>
6
+ <time datetime="{{shout.created_at|date:'c'}}">{{shout.created_at | date:'g:i A'}}</time>
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,10 +98,10 @@
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
- {{thread.created_at|date:'M j, Y'}}</div>
104
+ <time datetime="{{thread.created_at|date:'c'}}">{{thread.created_at | date:'m j, Y'}}</time>
105
105
  </td>
106
106
  <td>{{thread.post_count}}</td>
107
107
  <td>{{thread.view_count | humanize_int}}</td>
@@ -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 %}
3
3
 
4
4
  {% block title_prefix %}{{thread.title}} | {% endblock %}
5
5
  {% block og_title_prefix %}{{thread.title}} | {% endblock %}
@@ -41,42 +41,48 @@
41
41
 
42
42
  <div class="pw-card fluid margin">
43
43
  <div class="pw-card-header">
44
- <div class="thread__date">{{thread.created_at|date:'M d, Y'}}</div>
44
+ <div class="thread__date">
45
+ <time datetime="{{thread.created_at|date:'c'}}">{{thread.created_at | date:'M d, Y'}}</time>
46
+ </div>
45
47
  </div>
46
48
  <div class="thread">
47
49
  <div class="thread__user">
48
- {% if thread.user.profile.image %}
49
- <img class="pw-avatar" src="{{thread.user.profile.image.url}}" alt="{{thread.user.username}}" />
50
- {% else %}
51
- <img class="pw-avatar" src="{% static 'punkweb_bb/img/default-profile-image.png' %}" alt="{{thread.user.username}}" />
52
- {% endif %}
53
- <div class="thread__user__usernameContainer">
54
- {% if thread.user.profile.is_online %}
55
- <div class="onlineIndicator"></div>
56
- {% endif %}
57
- <a href="{% url 'punkweb_bb:profile' thread.user.id %}">
58
- {{thread.user.username}}
59
- </a>
60
- </div>
61
50
  <div class="thread__user__info">
62
- <div class="thread__user__info__row">
63
- <div class="thread__user__info__label">Joined:</div>
64
- <div class="thread__user__info__value">
65
- {{thread.user.date_joined|date:"M d, Y"}}
66
- </div>
51
+ <div class="thread__user__image">
52
+ {% if thread.user.profile.image %}
53
+ <img class="pw-avatar" src="{{thread.user.profile.image.url}}" alt="{{thread.user.username}}" />
54
+ {% else %}
55
+ <img class="pw-avatar" src="{% static 'punkweb_bb/img/default-profile-image.png' %}" alt="{{thread.user.username}}" />
56
+ {% endif %}
57
+ </div>
58
+ <div class="thread__user__username">
59
+ {% if thread.user.profile.is_online %}
60
+ <div class="onlineIndicator"></div>
61
+ {% endif %}
62
+ <a href="{% url 'punkweb_bb:profile' thread.user.id %}">
63
+ {{thread.user|styled_username}}
64
+ </a>
67
65
  </div>
68
- <div class="thread__user__info__row">
69
- <div class="thread__user__info__label">Posts:</div>
70
- <div class="thread__user__info__value">{{thread.user.profile.post_count}}</div>
66
+ <div class="thread__user__group">
67
+ {% if thread.user.profile.priority_group %}
68
+ {{thread.user.profile.priority_group.name}}
69
+ {% else %}
70
+ Member
71
+ {% endif %}
71
72
  </div>
72
73
  </div>
73
- {% if thread.user.groups.all|length > 0 %}
74
- <div class="thread__user__groups">
75
- {% for group in thread.user.groups.all %}
76
- <div class="thread__user__group">{{group.name}}</div>
77
- {% endfor %}
74
+ <div class="thread__user__details">
75
+ <div class="thread__user__details__row">
76
+ <div class="thread__user__details__label">Joined:</div>
77
+ <div class="thread__user__details__value">
78
+ <time datetime="{{thread.user.date_joined|date:'c'}}">{{thread.user.date_joined | date:'M d, Y'}}</time>
79
+ </div>
80
+ </div>
81
+ <div class="thread__user__details__row">
82
+ <div class="thread__user__details__label">Posts:</div>
83
+ <div class="thread__user__details__value">{{thread.user.profile.post_count}}</div>
84
+ </div>
78
85
  </div>
79
- {% endif %}
80
86
  </div>
81
87
  <div class="thread__main">
82
88
  <div class="thread__content">
@@ -146,47 +152,53 @@
146
152
  {% for post in posts %}
147
153
  <div id="post-{{post.id}}" class="pw-card fluid margin">
148
154
  <div class="pw-card-header thread__header">
149
- <div class="thread__date">{{post.created_at|date:'M d, Y'}}</div>
155
+ <div class="thread__date">
156
+ <time datetime="{{post.created_at|date:'c'}}">{{post.created_at | date:'M d, Y'}}</time>
157
+ </div>
150
158
  <a class="thread__index" href="{{post.get_absolute_url}}">#{{post.index}}</a>
151
159
  </div>
152
160
  <div class="thread">
153
161
  <div class="thread__user">
154
- {% if post.user.profile.image %}
155
- <div class="thread__user__image">
156
- <img class="pw-avatar" src="{{post.user.profile.image.url}}" alt="{{post.user.username}}" />
157
- </div>
158
- {% else %}
159
- <div class="thread__user__image">
160
- <img class="pw-avatar" src="{% static 'punkweb_bb/img/default-profile-image.png' %}" alt="{{post.user.username}}" />
161
- </div>
162
- {% endif %}
163
- <div class="thread__user__usernameContainer">
164
- {% if post.user.profile.is_online %}
165
- <div class="onlineIndicator"></div>
166
- {% endif %}
167
- <a href="{% url 'punkweb_bb:profile' post.user.id %}">
168
- {{post.user.username}}
169
- </a>
170
- </div>
171
162
  <div class="thread__user__info">
172
- <div class="thread__user__info__row">
173
- <div class="thread__user__info__label">Joined:</div>
174
- <div class="thread__user__info__value">
175
- {{post.user.date_joined|date:"M d, Y"}}
163
+ <div class="thread__user__image">
164
+ {% if post.user.profile.image %}
165
+ <div class="thread__user__image">
166
+ <img class="pw-avatar" src="{{post.user.profile.image.url}}" alt="{{post.user.username}}" />
167
+ </div>
168
+ {% else %}
169
+ <div class="thread__user__image">
170
+ <img class="pw-avatar" src="{% static 'punkweb_bb/img/default-profile-image.png' %}" alt="{{post.user.username}}" />
176
171
  </div>
172
+ {% endif %}
177
173
  </div>
178
- <div class="thread__user__info__row">
179
- <div class="thread__user__info__label">Posts:</div>
180
- <div class="thread__user__info__value">{{post.user.profile.post_count}}</div>
174
+ <div class="thread__user__username">
175
+ {% if post.user.profile.is_online %}
176
+ <div class="onlineIndicator"></div>
177
+ {% endif %}
178
+ <a href="{% url 'punkweb_bb:profile' post.user.id %}">
179
+ {{post.user|styled_username}}
180
+ </a>
181
+ </div>
182
+ <div class="thread__user__group">
183
+ {% if post.user.profile.priority_group %}
184
+ {{post.user.profile.priority_group.name}}
185
+ {% else %}
186
+ Member
187
+ {% endif %}
181
188
  </div>
182
189
  </div>
183
- {% if post.user.groups.all|length > 0 %}
184
- <div class="thread__user__groups">
185
- {% for group in post.user.groups.all %}
186
- <div class="thread__user__group">{{group.name}}</div>
187
- {% endfor %}
190
+ <div class="thread__user__details">
191
+ <div class="thread__user__details__row">
192
+ <div class="thread__user__details__label">Joined:</div>
193
+ <div class="thread__user__details__value">
194
+ <time datetime="{{post.user.date_joined|date:'c'}}">{{post.user.date_joined | date:'M d, Y'}}</time>
195
+ </div>
196
+ </div>
197
+ <div class="thread__user__details__row">
198
+ <div class="thread__user__details__label">Posts:</div>
199
+ <div class="thread__user__details__value">{{post.user.profile.post_count}}</div>
200
+ </div>
188
201
  </div>
189
- {% endif %}
190
202
  </div>
191
203
  <div class="thread__main">
192
204
  <div class="thread__content">
@@ -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_styled_group_name
5
+
6
+ register = template.Library()
7
+
8
+
9
+ @register.filter
10
+ def styled_group_name(group):
11
+ return mark_safe(get_styled_group_name(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_highest_priority_group(user):
22
+ groups = user.groups.filter(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_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_styled_group_name(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
punkweb_bb/views.py CHANGED
@@ -1,5 +1,3 @@
1
- import datetime
2
-
3
1
  from django.contrib.auth import authenticate, get_user_model, login, logout
4
2
  from django.contrib.auth.decorators import login_required
5
3
  from django.http import HttpResponseForbidden
@@ -498,7 +496,7 @@ def post_delete_view(request, post_id):
498
496
 
499
497
  def current_shouts():
500
498
  return Shout.objects.filter(
501
- created_at__gt=timezone.now() - datetime.timedelta(hours=12)
499
+ created_at__gt=timezone.now() - timezone.timedelta(hours=12)
502
500
  ).order_by("created_at")
503
501
 
504
502
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: punkweb-bb
3
- Version: 0.2.1
3
+ Version: 0.2.3
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=Zlh6pOHHDqErjOZeFgjIprwizC83SXg9NwzwJcRpBGg,7072
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
20
- punkweb_bb/views.py,sha256=BIpI58MIH50UppDOnkTEBwll1iozuVs2m6N7S9xqW9I,17400
19
+ punkweb_bb/utils.py,sha256=x35qDz8BF68kRQS7wrR79k3JWhrIzjbn0CcF-i4WFTw,1200
20
+ punkweb_bb/views.py,sha256=jo-RAgChOmaLHhQC1SP2ajMMcu8N8pX2JehLQBx_p-c,17383
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,24 +29,27 @@ 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=fTCXvuFdfY3Ee_hUVN8VdvfBpc096W3PDxmglW65HXQ,15478
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
36
- punkweb_bb/__pycache__/settings.cpython-311.pyc,sha256=4nTGJeWkptvoS-DcaEEpXGEeh7fLox5H1pCXkFKN8U4,1025
36
+ punkweb_bb/__pycache__/settings.cpython-311.pyc,sha256=0fK-PC9XKWJnV9dWaj0LH6prsqMP32WQHFWgO9m2uSs,1025
37
37
  punkweb_bb/__pycache__/signals.cpython-311.pyc,sha256=AHChn7hDdrOmCAwKIKKuFOY-4hyBP9uwTkyb5bnFV-Q,864
38
+ punkweb_bb/__pycache__/sitemap.cpython-311.pyc,sha256=GFjuUD20_ikJWj7IFT1Cn7Od-rw2tsQ45tVMolyTWzA,1591
38
39
  punkweb_bb/__pycache__/tests.cpython-311.pyc,sha256=z7wbXzc3xY4lyg8II-k8fVe-UxQ2fk8XwV-wnb684wo,51768
39
40
  punkweb_bb/__pycache__/urls.cpython-311.pyc,sha256=IYIX39oVwDb2TtVcyX7dlzztW7hJwl0vzO1UZpb-nuo,3565
40
- punkweb_bb/__pycache__/utils.cpython-311.pyc,sha256=iNDU4dwAwpAzqlKl5kuHH989Ic_1lGA4JQq0wpR7ATo,748
41
- punkweb_bb/__pycache__/views.cpython-311.pyc,sha256=gpMcF9LcMOkJhd_6g3Pk8uLbw2iAHw9aj4fWtU1Jnj0,25276
41
+ punkweb_bb/__pycache__/utils.cpython-311.pyc,sha256=1_t3bg1dgQfQpSz8X_AAgrqUVPemo2D1AkPQt5x-gs4,2057
42
+ punkweb_bb/__pycache__/views.cpython-311.pyc,sha256=KvW7k59a6ABOE_HHbhNiwoemAUg-BgFXLR2feFhkv9w,25244
42
43
  punkweb_bb/__pycache__/widgets.cpython-311.pyc,sha256=-RcQ3JapLHw8Bbi4FP05kQJJIa7bnliKPaFpkDCOWvQ,1552
43
44
  punkweb_bb/migrations/0001_initial.py,sha256=3RGsylygBcWx1kIPhSzOb9v_2yvowsxKfxuSinKKuS0,8950
44
45
  punkweb_bb/migrations/0002_thread_view_count.py,sha256=JJZT53Mp8Ofht3oIi67s-0wzCdpYyu8wOeCi_B8q8Yo,388
45
46
  punkweb_bb/migrations/0003_alter_thread_options.py,sha256=0xwVfSMWs28akDMhMwOdyyuC7JZ47JekkphT8fUCpcA,589
47
+ punkweb_bb/migrations/0004_groupstyle.py,sha256=DKcTMFkAj903MvrSheMKquCVIOzanZoFakZLIE63nLo,1821
46
48
  punkweb_bb/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
49
  punkweb_bb/migrations/__pycache__/0001_initial.cpython-311.pyc,sha256=koi_VflndmTKzSXWstWBXuVEZgEeueId5NE4kOAlA4Q,6456
48
50
  punkweb_bb/migrations/__pycache__/0002_thread_view_count.cpython-311.pyc,sha256=9HRllkD8LHPXadyurYvp2UcmRFEywalUVQjiOGWizgc,815
49
51
  punkweb_bb/migrations/__pycache__/0003_alter_thread_options.cpython-311.pyc,sha256=zK9keYR8PU92_sP5M78xmFJeLGwSnM5tIo09bU-IpOU,860
52
+ punkweb_bb/migrations/__pycache__/0004_groupstyle.cpython-311.pyc,sha256=5wYwjAe30bSea8PswtRkIw8vrxIVk9tUZmUWXanJ2dk,2000
50
53
  punkweb_bb/migrations/__pycache__/__init__.cpython-311.pyc,sha256=sTbC1AXnh0V4BJwjcjs1ckdeYjG01I348hZwLE2HI4Y,172
51
54
  punkweb_bb/static/punkweb_bb/favicon.ico,sha256=lEfX--R9wEGPkkXgLYCsGmHuAGajigiqBXAoonxq8ZM,318
52
55
  punkweb_bb/static/punkweb_bb/css/category-form.css,sha256=lvG7Lh2GGBVplKk46JAIHF1cmFLve2JT32BswmudIF8,359
@@ -61,9 +64,9 @@ punkweb_bb/static/punkweb_bb/css/punkweb.css,sha256=GhVOOVTy76IOh4WLfUQeAtG8LWhE
61
64
  punkweb_bb/static/punkweb_bb/css/settings.css,sha256=ulQQFTu8slk2rYOmhvci5v-AVnguUuDhKQDhyQOsQNU,308
62
65
  punkweb_bb/static/punkweb_bb/css/shoutbox.css,sha256=DapBIe21b6w7ugA_U1EJ-1LFb3IfnJZMw7Kc4DLxF1g,536
63
66
  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
67
+ punkweb_bb/static/punkweb_bb/css/subcategory.css,sha256=h3TaMhswiD1ePgp80VN7sR91Wzr6tZwU_kCrulvAuPc,735
65
68
  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
69
+ punkweb_bb/static/punkweb_bb/css/thread.css,sha256=lfKQiphxLplXBwdAiT0V3IxhrajEIj9laU7xpGdNZTc,1686
67
70
  punkweb_bb/static/punkweb_bb/css/typography.css,sha256=qbFGBcU-OOe7r41xeW0Gc_9x6yHxhh81XtswmFxgavc,448
68
71
  punkweb_bb/static/punkweb_bb/css/variables.css,sha256=WphZPeJgeqMYy4JYaSTX0gX-JiZh8EJlhieGOGk75DA,1193
69
72
  punkweb_bb/static/punkweb_bb/editor/bbcode-editor-content.css,sha256=c1VCTVYqvzjy-51dMZ27zp-zdZrL-2TwIEheeYQXDDw,1466
@@ -201,16 +204,16 @@ punkweb_bb/templates/punkweb_bb/base_modal.html,sha256=OCbtsMWeNCO0Tl1PmHCcGkwoi
201
204
  punkweb_bb/templates/punkweb_bb/bbcode.html,sha256=1EGBejsOMZOPi6P39oR6E35VdqnfR6wYWeKDl4Xr_js,396
202
205
  punkweb_bb/templates/punkweb_bb/category_create.html,sha256=773uJzxVvuPmWVrW87EoQTBNoo6cyi3UBp_PZn6JY5A,1369
203
206
  punkweb_bb/templates/punkweb_bb/category_update.html,sha256=GUFo19BXY8JVvxP7cWAyWiTD5Z9LohR4f6vf1jlRqfo,1467
204
- punkweb_bb/templates/punkweb_bb/index.html,sha256=7GtrTisMrFWRVF-RGOPo20PWFDXqCIIpgUSXg7TPmHM,10470
207
+ punkweb_bb/templates/punkweb_bb/index.html,sha256=pe0TAI98yGrPR0dosQYJgsfesFArfsoE-kSNfElSs0Q,10526
205
208
  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
209
+ punkweb_bb/templates/punkweb_bb/members.html,sha256=QiG7VllECM4iE5-rIIyterepJ-O51o9NtIsjLvKrwGs,2886
210
+ punkweb_bb/templates/punkweb_bb/profile.html,sha256=7nByQWWnwzY8om2M_SMXG5C0Rm87K2By6rGbG2zGXbU,3198
208
211
  punkweb_bb/templates/punkweb_bb/settings.html,sha256=pxEgQQxK1lk2UKL1W3YL-liAERo2mFgUNAJtshe13xk,2047
209
212
  punkweb_bb/templates/punkweb_bb/signup.html,sha256=LMs_EwdEbBmFt4zXPt_LmtUujmBJVt0zE0LldgfhrY0,1219
210
- punkweb_bb/templates/punkweb_bb/subcategory.html,sha256=X61wOey23LRByhNw2Od7n6pCXzT1BNRUxNQQP80187s,5848
213
+ punkweb_bb/templates/punkweb_bb/subcategory.html,sha256=HbzcXyMcXiCzEXhIrNjkLQg7yPhmzLiNunzHrBkNiqE,5893
211
214
  punkweb_bb/templates/punkweb_bb/subcategory_create.html,sha256=8FhcWKiaYGIulrOaBzQ6qFMpDvsAnX_q-XJ5mKwBLW8,1521
212
215
  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
216
+ punkweb_bb/templates/punkweb_bb/thread.html,sha256=nkRSvuInn2LtfyWWoBfSYZBnQ60qivIjk7MjeQRtumM,10838
214
217
  punkweb_bb/templates/punkweb_bb/thread_create.html,sha256=vCwU8GNBwy7pJ2X-jSTgqvAuqgQ_NeSvRDyieBWhP_g,1697
215
218
  punkweb_bb/templates/punkweb_bb/thread_update.html,sha256=SLL_5tceZ8ZiPbWCO9eOe_aeMgV5lQ-p6eun1_XvKwE,1730
216
219
  punkweb_bb/templates/punkweb_bb/partials/category_delete.html,sha256=Re9ESmC6AHeY9aICE0zE1i7vZEDHsF577Vmsz9L7jyA,435
@@ -219,7 +222,7 @@ punkweb_bb/templates/punkweb_bb/partials/post_update.html,sha256=mFidDqgTuv4Lffu
219
222
  punkweb_bb/templates/punkweb_bb/partials/shout_delete.html,sha256=zo-Ff-meucwC03p656VI5SI79RmS5nF-NbrFb3znPBM,421
220
223
  punkweb_bb/templates/punkweb_bb/partials/subcategory_delete.html,sha256=GImRDtfuMTg6_docXHTqVqe_1NzXblnrSyivxeatlIE,447
221
224
  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
225
+ punkweb_bb/templates/punkweb_bb/shoutbox/shout_list.html,sha256=0vuAZgc8DtPDXU5bVnl8gciQYSNhue3D9Xp_cdFDhqE,802
223
226
  punkweb_bb/templates/punkweb_bb/shoutbox/shoutbox.html,sha256=J_Lp6KKcqSJr-IayyLN-p0JgMfuwbFP77g-UtcM53WI,672
224
227
  punkweb_bb/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
225
228
  punkweb_bb/templatetags/can_delete.py,sha256=NiFi_VH3KKaAYxdu9cZXR9gT9SNEeLAxnbxb4R7O_Nw,137
@@ -227,6 +230,8 @@ punkweb_bb/templatetags/can_edit.py,sha256=CbnbCcmJkeHZbWbsMn5OmCXMBEa6N1KW6W1dH
227
230
  punkweb_bb/templatetags/can_post.py,sha256=6J1ojqqyNX99DBZM30jQiirQxAyY5rMi05QXXQjJB7I,133
228
231
  punkweb_bb/templatetags/humanize_int.py,sha256=C4KmDG0Jv6o8rwT1RXLdWoGLddJxMxgOoRV9I2598AM,248
229
232
  punkweb_bb/templatetags/shoutbox_bbcode.py,sha256=OH-FsRTyPWZldaFypSVzPLlTrSm4XEOqQW9hBI0ROBk,310
233
+ punkweb_bb/templatetags/styled_group_name.py,sha256=ybg2SnrXg8nyfZBZOW4L_IV-BlTPrs3EKZ48GsKd-3A,257
234
+ punkweb_bb/templatetags/styled_username.py,sha256=1bv6_ss8elDtuJosAYBlKagUciUXb_WlA5X8O4mKtLI,202
230
235
  punkweb_bb/templatetags/__pycache__/__init__.cpython-311.pyc,sha256=VEPKwaIhqpKpSSJiotDYngAUdidDzR9PpPiHtKEl1jA,174
231
236
  punkweb_bb/templatetags/__pycache__/can_delete.cpython-311.pyc,sha256=GfdHIumIAFyra6Nox6Y7AILBUW_DL7OZ0MtWWaj94mw,528
232
237
  punkweb_bb/templatetags/__pycache__/can_edit.cpython-311.pyc,sha256=PJDUtJWrZWb8qgldPrC2si0QNokEhRaYnXaRk4dhuJU,524
@@ -234,8 +239,11 @@ punkweb_bb/templatetags/__pycache__/can_post.cpython-311.pyc,sha256=1IU4-Ar-kwjn
234
239
  punkweb_bb/templatetags/__pycache__/humanize_count.cpython-311.pyc,sha256=UKD6_5RX8YpYpg-LPrgGxBkW56THsbYY51cKTYdKwRY,621
235
240
  punkweb_bb/templatetags/__pycache__/humanize_int.cpython-311.pyc,sha256=csY5ek-bevYVeM91hYFKozuKWXCTXb7M-7Bokwdxhrk,619
236
241
  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,,
242
+ punkweb_bb/templatetags/__pycache__/styled_group_name.cpython-311.pyc,sha256=1rXkWaqTzivl0uvVs-UiPHOfvx7rOO4Kce6Elhoer_I,712
243
+ punkweb_bb/templatetags/__pycache__/styled_username.cpython-311.pyc,sha256=a91ogyUeLdHS9rEU28FWEYeVqcJopjbvPPdnGkmlHKI,628
244
+ punkweb_bb/templatetags/__pycache__/username.cpython-311.pyc,sha256=GvZkwtrFvkRr1RbxoejyKMmJXr01ABz3lVEwPNq4wxk,626
245
+ punkweb_bb-0.2.3.dist-info/LICENSE,sha256=YYysF07B-kyXSO7IWFB9f49ZXa6LIFUTVsR1Ogmhp8s,1507
246
+ punkweb_bb-0.2.3.dist-info/METADATA,sha256=662xDYnVifFkza4Y6t0GrAzcISM4MhkGlmgJhV789Sk,5210
247
+ punkweb_bb-0.2.3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
248
+ punkweb_bb-0.2.3.dist-info/top_level.txt,sha256=sWuGdGnk0ejOXiFDzlBqrNs2VbPEx0_i8UwWXn4SuHU,11
249
+ punkweb_bb-0.2.3.dist-info/RECORD,,