punkweb-bb 0.2.0__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.
- punkweb_bb/__pycache__/admin.cpython-311.pyc +0 -0
- punkweb_bb/__pycache__/admin_forms.cpython-311.pyc +0 -0
- punkweb_bb/__pycache__/models.cpython-311.pyc +0 -0
- punkweb_bb/__pycache__/settings.cpython-311.pyc +0 -0
- punkweb_bb/__pycache__/urls.cpython-311.pyc +0 -0
- punkweb_bb/__pycache__/utils.cpython-311.pyc +0 -0
- punkweb_bb/__pycache__/views.cpython-311.pyc +0 -0
- punkweb_bb/admin.py +23 -1
- punkweb_bb/admin_forms.py +17 -1
- punkweb_bb/migrations/0003_alter_thread_options.py +23 -0
- punkweb_bb/migrations/0004_groupstyle.py +58 -0
- punkweb_bb/migrations/__pycache__/0003_alter_thread_options.cpython-311.pyc +0 -0
- punkweb_bb/migrations/__pycache__/0004_groupstyle.cpython-311.pyc +0 -0
- punkweb_bb/models.py +25 -0
- punkweb_bb/settings.py +1 -0
- punkweb_bb/static/punkweb_bb/css/index.css +2 -2
- punkweb_bb/static/punkweb_bb/css/punkweb.css +95 -4
- punkweb_bb/static/punkweb_bb/css/subcategory.css +1 -0
- punkweb_bb/static/punkweb_bb/css/thread.css +3 -3
- punkweb_bb/static/punkweb_bb/editor/bbcode-editor.js +1 -1
- punkweb_bb/templates/punkweb_bb/base.html +6 -0
- punkweb_bb/templates/punkweb_bb/index.html +40 -25
- punkweb_bb/templates/punkweb_bb/login.html +1 -0
- punkweb_bb/templates/punkweb_bb/members.html +3 -2
- punkweb_bb/templates/punkweb_bb/profile.html +3 -2
- punkweb_bb/templates/punkweb_bb/settings.html +1 -0
- punkweb_bb/templates/punkweb_bb/shoutbox/shout_list.html +9 -5
- punkweb_bb/templates/punkweb_bb/signup.html +1 -0
- punkweb_bb/templates/punkweb_bb/subcategory.html +21 -11
- punkweb_bb/templates/punkweb_bb/thread.html +80 -24
- punkweb_bb/templates/punkweb_bb/thread_create.html +1 -0
- punkweb_bb/templatetags/__pycache__/styled_group_name.cpython-311.pyc +0 -0
- punkweb_bb/templatetags/__pycache__/styled_username.cpython-311.pyc +0 -0
- punkweb_bb/templatetags/__pycache__/username.cpython-311.pyc +0 -0
- punkweb_bb/templatetags/styled_group_name.py +11 -0
- punkweb_bb/templatetags/styled_username.py +9 -0
- punkweb_bb/urls.py +2 -0
- punkweb_bb/utils.py +30 -0
- punkweb_bb/views.py +26 -0
- {punkweb_bb-0.2.0.dist-info → punkweb_bb-0.2.2.dist-info}/METADATA +3 -2
- {punkweb_bb-0.2.0.dist-info → punkweb_bb-0.2.2.dist-info}/RECORD +44 -35
- {punkweb_bb-0.2.0.dist-info → punkweb_bb-0.2.2.dist-info}/LICENSE +0 -0
- {punkweb_bb-0.2.0.dist-info → punkweb_bb-0.2.2.dist-info}/WHEEL +0 -0
- {punkweb_bb-0.2.0.dist-info → punkweb_bb-0.2.2.dist-info}/top_level.txt +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
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
|
|
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
|
|
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,23 @@
|
|
|
1
|
+
# Generated by Django 4.2.11 on 2024-05-29 01:03
|
|
2
|
+
|
|
3
|
+
from django.db import migrations
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
("punkweb_bb", "0002_thread_view_count"),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.AlterModelOptions(
|
|
14
|
+
name="thread",
|
|
15
|
+
options={
|
|
16
|
+
"ordering": ("subcategory", "-is_pinned", "-last_post_created_at"),
|
|
17
|
+
"permissions": (
|
|
18
|
+
("pin_thread", "Can pin thread"),
|
|
19
|
+
("close_thread", "Can close thread"),
|
|
20
|
+
),
|
|
21
|
+
},
|
|
22
|
+
),
|
|
23
|
+
]
|
|
@@ -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
|
+
]
|
|
Binary file
|
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}")
|
|
@@ -119,6 +125,10 @@ class Thread(UUIDPrimaryKeyMixin, TimestampMixin):
|
|
|
119
125
|
"-is_pinned",
|
|
120
126
|
"-last_post_created_at",
|
|
121
127
|
)
|
|
128
|
+
permissions = (
|
|
129
|
+
("pin_thread", "Can pin thread"),
|
|
130
|
+
("close_thread", "Can close thread"),
|
|
131
|
+
)
|
|
122
132
|
|
|
123
133
|
def __str__(self):
|
|
124
134
|
return f"{self.title}"
|
|
@@ -201,3 +211,18 @@ class Shout(UUIDPrimaryKeyMixin, TimestampMixin):
|
|
|
201
211
|
|
|
202
212
|
def can_delete(self, user):
|
|
203
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}"
|
punkweb_bb/settings.py
CHANGED
|
@@ -5,6 +5,7 @@ PUNKWEB_BB = getattr(settings, "PUNKWEB_BB", {})
|
|
|
5
5
|
SITE_NAME = PUNKWEB_BB.get("SITE_NAME", "PUNKWEB")
|
|
6
6
|
SITE_TITLE = PUNKWEB_BB.get("SITE_TITLE", "PunkwebBB")
|
|
7
7
|
FAVICON = PUNKWEB_BB.get("FAVICON", "punkweb_bb/favicon.ico")
|
|
8
|
+
OG_IMAGE = PUNKWEB_BB.get("OG_IMAGE", None)
|
|
8
9
|
SHOUTBOX_ENABLED = PUNKWEB_BB.get("SHOUTBOX_ENABLED", True)
|
|
9
10
|
DISCORD_WIDGET_ENABLED = PUNKWEB_BB.get("DISCORD_WIDGET_ENABLED", False)
|
|
10
11
|
DISCORD_WIDGET_THEME = PUNKWEB_BB.get("DISCORD_WIDGET_THEME", "dark")
|
|
@@ -390,12 +390,13 @@ blockquote cite {
|
|
|
390
390
|
/** Icon Button **/
|
|
391
391
|
|
|
392
392
|
.pw-icon-button {
|
|
393
|
+
align-items: center;
|
|
393
394
|
border-radius: 0.25rem;
|
|
394
395
|
cursor: pointer;
|
|
395
|
-
display:
|
|
396
|
+
display: flex;
|
|
397
|
+
justify-content: center;
|
|
396
398
|
font-weight: 500;
|
|
397
399
|
transition: all 0.15s ease;
|
|
398
|
-
text-align: center;
|
|
399
400
|
|
|
400
401
|
height: 2rem;
|
|
401
402
|
line-height: 2rem;
|
|
@@ -463,7 +464,7 @@ blockquote cite {
|
|
|
463
464
|
width: 3rem;
|
|
464
465
|
}
|
|
465
466
|
|
|
466
|
-
.pw-icon-button.
|
|
467
|
+
.pw-icon-button.xl .material-symbols-outlined {
|
|
467
468
|
font-size: 1.5rem;
|
|
468
469
|
}
|
|
469
470
|
|
|
@@ -492,6 +493,30 @@ blockquote cite {
|
|
|
492
493
|
background-color: var(--oc-gray-1);
|
|
493
494
|
}
|
|
494
495
|
|
|
496
|
+
.pw-icon-button.default.primary {
|
|
497
|
+
color: var(--primary-9);
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
.pw-icon-button.default.primary:hover {
|
|
501
|
+
background-color: var(--primary-0);
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
.pw-icon-button.default.primary:active {
|
|
505
|
+
background-color: var(--primary-1);
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
.pw-icon-button.default.danger {
|
|
509
|
+
color: var(--oc-red-9);
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
.pw-icon-button.default.danger:hover {
|
|
513
|
+
background-color: var(--oc-red-0);
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
.pw-icon-button.default.danger:active {
|
|
517
|
+
background-color: var(--oc-red-1);
|
|
518
|
+
}
|
|
519
|
+
|
|
495
520
|
/* Outlined */
|
|
496
521
|
|
|
497
522
|
.pw-icon-button.outlined {
|
|
@@ -507,7 +532,33 @@ blockquote cite {
|
|
|
507
532
|
background-color: var(--oc-gray-1);
|
|
508
533
|
}
|
|
509
534
|
|
|
510
|
-
|
|
535
|
+
.pw-icon-button.outlined.primary {
|
|
536
|
+
border-color: var(--primary-9);
|
|
537
|
+
color: var(--primary-9);
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
.pw-icon-button.outlined.primary:hover {
|
|
541
|
+
background-color: var(--primary-0);
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
.pw-icon-button.outlined.primary:active {
|
|
545
|
+
background-color: var(--primary-1);
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
.pw-icon-button.outlined.danger {
|
|
549
|
+
border-color: var(--oc-red-9);
|
|
550
|
+
color: var(--oc-red-9);
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
.pw-icon-button.outlined.danger:hover {
|
|
554
|
+
background-color: var(--oc-red-0);
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
.pw-icon-button.outlined.danger:active {
|
|
558
|
+
background-color: var(--oc-red-1);
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
/* Ghost */
|
|
511
562
|
|
|
512
563
|
.pw-icon-button.ghost {
|
|
513
564
|
border: 1px solid var(--oc-gray-9);
|
|
@@ -525,6 +576,38 @@ blockquote cite {
|
|
|
525
576
|
color: white;
|
|
526
577
|
}
|
|
527
578
|
|
|
579
|
+
.pw-icon-button.ghost.primary {
|
|
580
|
+
border: 1px solid var(--primary-9);
|
|
581
|
+
color: var(--primary-9);
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
.pw-icon-button.ghost.primary:not(:disabled):hover {
|
|
585
|
+
background-color: var(--primary-9);
|
|
586
|
+
color: white;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
.pw-icon-button.ghost.primary:not(:disabled):active {
|
|
590
|
+
background-color: var(--primary-9);
|
|
591
|
+
box-shadow: 0 0.125rem 0.25rem 0 rgba(0, 0, 0, 0.25);
|
|
592
|
+
color: white;
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
.pw-icon-button.ghost.danger {
|
|
596
|
+
border: 1px solid var(--oc-red-9);
|
|
597
|
+
color: var(--oc-red-9);
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
.pw-icon-button.ghost.danger:not(:disabled):hover {
|
|
601
|
+
background-color: var(--oc-red-9);
|
|
602
|
+
color: white;
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
.pw-icon-button.ghost.danger:not(:disabled):active {
|
|
606
|
+
background-color: var(--oc-red-9);
|
|
607
|
+
box-shadow: 0 0.125rem 0.25rem 0 rgba(0, 0, 0, 0.25);
|
|
608
|
+
color: white;
|
|
609
|
+
}
|
|
610
|
+
|
|
528
611
|
/* Raised */
|
|
529
612
|
|
|
530
613
|
.pw-icon-button.raised {
|
|
@@ -533,6 +616,14 @@ blockquote cite {
|
|
|
533
616
|
color: white;
|
|
534
617
|
}
|
|
535
618
|
|
|
619
|
+
.pw-icon-button.raised.primary {
|
|
620
|
+
background-color: var(--primary-9);
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
.pw-icon-button.raised.danger {
|
|
624
|
+
background-color: var(--oc-red-9);
|
|
625
|
+
}
|
|
626
|
+
|
|
536
627
|
.pw-icon-button.raised:not(:disabled):hover {
|
|
537
628
|
box-shadow: 0 0.125rem 0.25rem 0 rgba(0, 0, 0, 0.25);
|
|
538
629
|
}
|
|
@@ -63,8 +63,8 @@
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
.thread__user__group {
|
|
66
|
-
background-color: var(--
|
|
67
|
-
border: 1px solid var(--
|
|
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;
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
align-items: center;
|
|
95
95
|
display: flex;
|
|
96
96
|
justify-content: flex-end;
|
|
97
|
-
gap:
|
|
97
|
+
gap: 0.25rem;
|
|
98
98
|
padding: 1rem;
|
|
99
99
|
}
|
|
100
100
|
|
|
@@ -6,6 +6,12 @@
|
|
|
6
6
|
<meta charset="UTF-8" />
|
|
7
7
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
8
8
|
<title>{% block title_prefix %}{% endblock %}{{ punkweb_bb.settings.SITE_TITLE|default:"PunkwebBB" }}</title>
|
|
9
|
+
<meta property="og:title" content="{% block og_title_prefix %}{% endblock %}{{ punkweb_bb.settings.SITE_TITLE|default:"PunkwebBB" }}" />
|
|
10
|
+
<meta property="og:type" content="website" />
|
|
11
|
+
<meta property="og:url" content="{{ request.build_absolute_uri }}" />
|
|
12
|
+
{% if punkweb_bb.settings.OG_IMAGE %}
|
|
13
|
+
<meta property="og:image" content="{{ punkweb_bb.settings.OG_IMAGE }}" />
|
|
14
|
+
{% endif %}
|
|
9
15
|
<link rel="icon" href="{% static punkweb_bb.settings.FAVICON %}" />
|
|
10
16
|
<link rel="stylesheet" href="{% static 'punkweb_bb/vendor/open-color.css' %}" />
|
|
11
17
|
<link rel="stylesheet" href="{% static 'punkweb_bb/vendor/prism.css' %}" />
|
|
@@ -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' %}" />
|
|
@@ -31,36 +31,45 @@
|
|
|
31
31
|
</colgroup>
|
|
32
32
|
<thead>
|
|
33
33
|
<tr>
|
|
34
|
-
<th
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
<th></th>
|
|
38
|
-
</tr>
|
|
39
|
-
</thead>
|
|
40
|
-
<tbody>
|
|
41
|
-
{% if perms.punkweb_bb.add_subcategory or perms.punkweb_bb.change_category or perms.punkweb_bb.delete_category %}
|
|
42
|
-
<tr>
|
|
43
|
-
<td colspan="4">
|
|
44
|
-
<div class="index__category__actions">
|
|
34
|
+
<th>
|
|
35
|
+
<div class="index__category__title">
|
|
36
|
+
<a href="{{category.get_absolute_url}}">{{category.name}}</a>
|
|
45
37
|
{% if perms.punkweb_bb.add_subcategory %}
|
|
46
|
-
<a
|
|
47
|
-
|
|
38
|
+
<a
|
|
39
|
+
class="pw-icon-button default rounded sm"
|
|
40
|
+
href="{% url 'punkweb_bb:subcategory_create' category.slug %}"
|
|
41
|
+
title="Create subcategory"
|
|
42
|
+
>
|
|
43
|
+
<span class="material-symbols-outlined">add</span>
|
|
48
44
|
</a>
|
|
49
45
|
{% endif %}
|
|
50
46
|
{% if perms.punkweb_bb.change_category %}
|
|
51
|
-
<a
|
|
52
|
-
|
|
47
|
+
<a
|
|
48
|
+
class="pw-icon-button default rounded sm"
|
|
49
|
+
href="{% url 'punkweb_bb:category_update' category.slug %}"
|
|
50
|
+
title="Edit category"
|
|
51
|
+
>
|
|
52
|
+
<span class="material-symbols-outlined">edit</span>
|
|
53
53
|
</a>
|
|
54
54
|
{% endif %}
|
|
55
55
|
{% if perms.punkweb_bb.delete_category %}
|
|
56
|
-
<a
|
|
57
|
-
|
|
56
|
+
<a
|
|
57
|
+
class="pw-icon-button default danger rounded sm"
|
|
58
|
+
title="Delete category"
|
|
59
|
+
hx-get="{% url 'punkweb_bb:category_delete' category.slug %}"
|
|
60
|
+
hx-target="#modal-portal"
|
|
61
|
+
>
|
|
62
|
+
<span class="material-symbols-outlined">delete</span>
|
|
58
63
|
</a>
|
|
59
64
|
{% endif %}
|
|
60
65
|
</div>
|
|
61
|
-
</
|
|
66
|
+
</th>
|
|
67
|
+
<th>Threads</th>
|
|
68
|
+
<th>Posts</th>
|
|
69
|
+
<th></th>
|
|
62
70
|
</tr>
|
|
63
|
-
|
|
71
|
+
</thead>
|
|
72
|
+
<tbody>
|
|
64
73
|
{% for subcategory in category.subcategories.all %}
|
|
65
74
|
<tr>
|
|
66
75
|
<td>
|
|
@@ -92,7 +101,7 @@
|
|
|
92
101
|
</time>
|
|
93
102
|
•
|
|
94
103
|
<a href="{% url 'punkweb_bb:profile' subcategory.latest_thread.latest_post.user.id %}">
|
|
95
|
-
{{subcategory.latest_thread.latest_post.user
|
|
104
|
+
{{subcategory.latest_thread.latest_post.user|styled_username}}
|
|
96
105
|
</a>
|
|
97
106
|
</div>
|
|
98
107
|
</div>
|
|
@@ -116,7 +125,7 @@
|
|
|
116
125
|
</time>
|
|
117
126
|
•
|
|
118
127
|
<a href="{% url 'punkweb_bb:profile' subcategory.latest_thread.user.id %}">
|
|
119
|
-
{{subcategory.latest_thread.user
|
|
128
|
+
{{subcategory.latest_thread.user|styled_username}}
|
|
120
129
|
</a>
|
|
121
130
|
</div>
|
|
122
131
|
</div>
|
|
@@ -134,7 +143,13 @@
|
|
|
134
143
|
</div>
|
|
135
144
|
{% endfor %}
|
|
136
145
|
{% if perms.punkweb_bb.add_category %}
|
|
137
|
-
<a
|
|
146
|
+
<a
|
|
147
|
+
class="pw-icon-button raised primary rounded"
|
|
148
|
+
href="{% url 'punkweb_bb:category_create' %}"
|
|
149
|
+
title="Create category"
|
|
150
|
+
>
|
|
151
|
+
<span class="material-symbols-outlined">add</span>
|
|
152
|
+
</a>
|
|
138
153
|
{% endif %}
|
|
139
154
|
</div>
|
|
140
155
|
<div class="index__sidebar">
|
|
@@ -160,7 +175,7 @@
|
|
|
160
175
|
</time>
|
|
161
176
|
•
|
|
162
177
|
<a href="{% url 'punkweb_bb:profile' thread.user.id %}">
|
|
163
|
-
{{thread.user
|
|
178
|
+
{{thread.user|styled_username}}
|
|
164
179
|
</a>
|
|
165
180
|
</div>
|
|
166
181
|
</div>
|
|
@@ -191,7 +206,7 @@
|
|
|
191
206
|
<div class="index__statistics__label">Newest member:</div>
|
|
192
207
|
<div class="index__statistics__value">
|
|
193
208
|
<a href="{% url 'punkweb_bb:profile' newest_user.id %}">
|
|
194
|
-
{{newest_user
|
|
209
|
+
{{newest_user|styled_username}}
|
|
195
210
|
</a>
|
|
196
211
|
</div>
|
|
197
212
|
</div>
|
|
@@ -1,7 +1,8 @@
|
|
|
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
|
+
{% block og_title_prefix %}Members | {% endblock %}
|
|
5
6
|
|
|
6
7
|
{% block extra_head %}
|
|
7
8
|
<link rel="stylesheet" href="{% static 'punkweb_bb/css/members.css' %}" />
|
|
@@ -32,7 +33,7 @@
|
|
|
32
33
|
{% endif %}
|
|
33
34
|
</div>
|
|
34
35
|
<div class="members__user__info">
|
|
35
|
-
<div class="members__user__username"><a href="{% url 'punkweb_bb:profile' user.id %}">{{ user
|
|
36
|
+
<div class="members__user__username"><a href="{% url 'punkweb_bb:profile' user.id %}">{{ user|styled_username }}</a></div>
|
|
36
37
|
<div class="members__user__stats">
|
|
37
38
|
<div class="members__user__stat">
|
|
38
39
|
Posts:
|
|
@@ -1,7 +1,8 @@
|
|
|
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
|
+
{% block og_title_prefix %}{{ user.username }} | {% endblock %}
|
|
5
6
|
|
|
6
7
|
{% block extra_head %}
|
|
7
8
|
<link rel="stylesheet" href="{% static 'punkweb_bb/css/profile.css' %}">
|
|
@@ -34,7 +35,7 @@
|
|
|
34
35
|
{% endif %}
|
|
35
36
|
</div>
|
|
36
37
|
<div class="profile__info__details">
|
|
37
|
-
<div class="profile__info__username">{{user
|
|
38
|
+
<div class="profile__info__username">{{user|styled_username}}</div>
|
|
38
39
|
<div class="profile__info__stats">
|
|
39
40
|
<div class="profile__info__stat">
|
|
40
41
|
Date Joined:
|
|
@@ -1,17 +1,21 @@
|
|
|
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
|
|
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 %}
|
|
11
11
|
<div class="shoutbox__shout__actions">
|
|
12
|
-
<button
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
<button
|
|
13
|
+
class="pw-icon-button default danger sm"
|
|
14
|
+
title="Delete"
|
|
15
|
+
hx-get="{% url 'punkweb_bb:shout_delete' shout.id %}"
|
|
16
|
+
hx-target="#modal-portal"
|
|
17
|
+
>
|
|
18
|
+
<span class="material-symbols-outlined">delete</span>
|
|
15
19
|
</button>
|
|
16
20
|
</div>
|
|
17
21
|
{% endif %}
|
|
@@ -1,7 +1,8 @@
|
|
|
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
|
+
{% block og_title_prefix %}{{subcategory.name}} | {% endblock %}
|
|
5
6
|
|
|
6
7
|
{% block extra_head %}
|
|
7
8
|
<link rel="stylesheet" href="{% static 'punkweb_bb/css/subcategory.css' %}" />
|
|
@@ -29,13 +30,22 @@
|
|
|
29
30
|
{% if perms.punkweb_bb.change_subcategory or perms.punkweb_bb.delete_subcategory %}
|
|
30
31
|
<div class="subcategory__header__actions">
|
|
31
32
|
{% if perms.punkweb_bb.change_subcategory %}
|
|
32
|
-
<a
|
|
33
|
-
|
|
33
|
+
<a
|
|
34
|
+
class="pw-icon-button default rounded"
|
|
35
|
+
href="{% url 'punkweb_bb:subcategory_update' subcategory.slug %}"
|
|
36
|
+
title="Edit subcategory"
|
|
37
|
+
>
|
|
38
|
+
<span class="material-symbols-outlined">edit</span>
|
|
34
39
|
</a>
|
|
35
40
|
{% endif %}
|
|
36
41
|
{% if perms.punkweb_bb.delete_subcategory %}
|
|
37
|
-
<a
|
|
38
|
-
|
|
42
|
+
<a
|
|
43
|
+
class="pw-icon-button default rounded danger"
|
|
44
|
+
title="Delete subcategory"
|
|
45
|
+
hx-get="{% url 'punkweb_bb:subcategory_delete' subcategory.slug %}"
|
|
46
|
+
hx-target="#modal-portal"
|
|
47
|
+
>
|
|
48
|
+
<span class="material-symbols-outlined">delete</span>
|
|
39
49
|
</a>
|
|
40
50
|
{% endif %}
|
|
41
51
|
</div>
|
|
@@ -60,10 +70,10 @@
|
|
|
60
70
|
<div class="pw-table-container">
|
|
61
71
|
<table class="pw-table">
|
|
62
72
|
<colgroup>
|
|
63
|
-
<col
|
|
64
|
-
<col
|
|
65
|
-
<col
|
|
66
|
-
<col
|
|
73
|
+
<col>
|
|
74
|
+
<col width="96px">
|
|
75
|
+
<col width="96px">
|
|
76
|
+
<col width="192px">
|
|
67
77
|
</colgroup>
|
|
68
78
|
<thead>
|
|
69
79
|
<tr>
|
|
@@ -88,7 +98,7 @@
|
|
|
88
98
|
</div>
|
|
89
99
|
<div>
|
|
90
100
|
<a href="{% url 'punkweb_bb:profile' thread.user.id %}">
|
|
91
|
-
{{thread.user
|
|
101
|
+
{{thread.user|styled_username}}
|
|
92
102
|
</a>
|
|
93
103
|
•
|
|
94
104
|
{{thread.created_at|date:'M j, Y'}}</div>
|
|
@@ -107,7 +117,7 @@
|
|
|
107
117
|
</a>
|
|
108
118
|
<div>
|
|
109
119
|
<a href="{% url 'punkweb_bb:profile' thread.latest_post.user.id %}">
|
|
110
|
-
{{thread.latest_post.user
|
|
120
|
+
{{thread.latest_post.user|styled_username}}
|
|
111
121
|
</a>
|
|
112
122
|
</div>
|
|
113
123
|
</div>
|
|
@@ -1,9 +1,12 @@
|
|
|
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
|
+
{% block og_title_prefix %}{{thread.title}} | {% endblock %}
|
|
5
6
|
|
|
6
7
|
{% block extra_head %}
|
|
8
|
+
<meta name="description" content="{{thread.content.rendered|striptags|truncatechars:120}}" />
|
|
9
|
+
<meta property="og:description" content="{{thread.content.rendered|striptags|truncatechars:120}}" />
|
|
7
10
|
<link rel="stylesheet" href="{% static 'punkweb_bb/css/post-form.css' %}" />
|
|
8
11
|
<link rel="stylesheet" href="{% static 'punkweb_bb/css/thread.css' %}" />
|
|
9
12
|
<link rel="stylesheet" href="{% static 'punkweb_bb/css/thread-form.css' %}" />
|
|
@@ -52,7 +55,7 @@
|
|
|
52
55
|
<div class="onlineIndicator"></div>
|
|
53
56
|
{% endif %}
|
|
54
57
|
<a href="{% url 'punkweb_bb:profile' thread.user.id %}">
|
|
55
|
-
{{thread.user
|
|
58
|
+
{{thread.user|styled_username}}
|
|
56
59
|
</a>
|
|
57
60
|
</div>
|
|
58
61
|
<div class="thread__user__info">
|
|
@@ -70,7 +73,9 @@
|
|
|
70
73
|
{% if thread.user.groups.all|length > 0 %}
|
|
71
74
|
<div class="thread__user__groups">
|
|
72
75
|
{% for group in thread.user.groups.all %}
|
|
73
|
-
<div class="thread__user__group">
|
|
76
|
+
<div class="thread__user__group">
|
|
77
|
+
{{group|styled_group_name}}
|
|
78
|
+
</div>
|
|
74
79
|
{% endfor %}
|
|
75
80
|
</div>
|
|
76
81
|
{% endif %}
|
|
@@ -79,24 +84,62 @@
|
|
|
79
84
|
<div class="thread__content">
|
|
80
85
|
{{thread.content.rendered}}
|
|
81
86
|
</div>
|
|
82
|
-
{% if thread.user.
|
|
83
|
-
<div class="thread__signature">
|
|
84
|
-
{{thread.user.profile.signature.rendered}}
|
|
85
|
-
</div>
|
|
86
|
-
{% endif %}
|
|
87
|
-
{% if thread|can_delete:request.user or thread|can_edit:request.user %}
|
|
87
|
+
{% if thread|can_delete:request.user or thread|can_edit:request.user or perms.punkweb_bb.pin_thread or perms.punkweb_bb.close_thread %}
|
|
88
88
|
<div class="thread__actions">
|
|
89
|
+
{% if perms.punkweb_bb.pin_thread %}
|
|
90
|
+
<a
|
|
91
|
+
class="pw-icon-button default rounded"
|
|
92
|
+
title="{% if thread.is_pinned %}Unpin{% else %}Pin{% endif %}"
|
|
93
|
+
hx-get="{% url 'punkweb_bb:thread_pin' thread.id %}"
|
|
94
|
+
hx-swap="none"
|
|
95
|
+
>
|
|
96
|
+
{% if thread.is_pinned %}
|
|
97
|
+
<span class="material-symbols-outlined">keep_off</span>
|
|
98
|
+
{% else %}
|
|
99
|
+
<span class="material-symbols-outlined">keep</span>
|
|
100
|
+
{% endif %}
|
|
101
|
+
</a>
|
|
102
|
+
{% endif %}
|
|
103
|
+
{% if perms.punkweb_bb.close_thread %}
|
|
104
|
+
<a
|
|
105
|
+
class="pw-icon-button default rounded"
|
|
106
|
+
title="{% if thread.is_closed %}Reopen{% else %}Close{% endif %}"
|
|
107
|
+
hx-get="{% url 'punkweb_bb:thread_close' thread.id %}"
|
|
108
|
+
hx-swap="none"
|
|
109
|
+
>
|
|
110
|
+
{% if thread.is_closed %}
|
|
111
|
+
<span class="material-symbols-outlined">lock_open</span>
|
|
112
|
+
{% else %}
|
|
113
|
+
<span class="material-symbols-outlined">lock</span>
|
|
114
|
+
{% endif %}
|
|
115
|
+
</a>
|
|
116
|
+
{% endif %}
|
|
89
117
|
{% if thread|can_edit:request.user %}
|
|
90
|
-
<a
|
|
118
|
+
<a
|
|
119
|
+
class="pw-icon-button default rounded"
|
|
120
|
+
href="{% url 'punkweb_bb:thread_update' thread.id %}"
|
|
121
|
+
title="Edit"
|
|
122
|
+
>
|
|
123
|
+
<span class="material-symbols-outlined">edit</span>
|
|
124
|
+
</a>
|
|
91
125
|
{% endif %}
|
|
92
126
|
{% if thread|can_delete:request.user %}
|
|
93
|
-
<a
|
|
94
|
-
|
|
95
|
-
Delete
|
|
127
|
+
<a
|
|
128
|
+
class="pw-icon-button default rounded danger"
|
|
129
|
+
title="Delete"
|
|
130
|
+
hx-get="{% url 'punkweb_bb:thread_delete' thread.id %}"
|
|
131
|
+
hx-target="#modal-portal"
|
|
132
|
+
>
|
|
133
|
+
<span class="material-symbols-outlined">delete</span>
|
|
96
134
|
</a>
|
|
97
135
|
{% endif %}
|
|
98
136
|
</div>
|
|
99
137
|
{% endif %}
|
|
138
|
+
{% if thread.user.profile.signature.rendered %}
|
|
139
|
+
<div class="thread__signature">
|
|
140
|
+
{{thread.user.profile.signature.rendered}}
|
|
141
|
+
</div>
|
|
142
|
+
{% endif %}
|
|
100
143
|
</div>
|
|
101
144
|
</div>
|
|
102
145
|
</div>
|
|
@@ -124,7 +167,7 @@
|
|
|
124
167
|
<div class="onlineIndicator"></div>
|
|
125
168
|
{% endif %}
|
|
126
169
|
<a href="{% url 'punkweb_bb:profile' post.user.id %}">
|
|
127
|
-
{{post.user
|
|
170
|
+
{{post.user|styled_username}}
|
|
128
171
|
</a>
|
|
129
172
|
</div>
|
|
130
173
|
<div class="thread__user__info">
|
|
@@ -142,7 +185,9 @@
|
|
|
142
185
|
{% if post.user.groups.all|length > 0 %}
|
|
143
186
|
<div class="thread__user__groups">
|
|
144
187
|
{% for group in post.user.groups.all %}
|
|
145
|
-
<div class="thread__user__group">
|
|
188
|
+
<div class="thread__user__group">
|
|
189
|
+
{{group|styled_group_name}}
|
|
190
|
+
</div>
|
|
146
191
|
{% endfor %}
|
|
147
192
|
</div>
|
|
148
193
|
{% endif %}
|
|
@@ -151,24 +196,35 @@
|
|
|
151
196
|
<div class="thread__content">
|
|
152
197
|
{{post.content.rendered}}
|
|
153
198
|
</div>
|
|
154
|
-
{% if post.user.profile.signature.rendered %}
|
|
155
|
-
<div class="thread__signature">
|
|
156
|
-
{{post.user.profile.signature.rendered}}
|
|
157
|
-
</div>
|
|
158
|
-
{% endif %}
|
|
159
199
|
{% if post|can_delete:request.user or post|can_edit:request.user %}
|
|
160
200
|
<div class="thread__actions">
|
|
161
201
|
{% if post|can_edit:request.user %}
|
|
162
|
-
<a
|
|
202
|
+
<a
|
|
203
|
+
class="pw-icon-button default rounded"
|
|
204
|
+
title="Edit"
|
|
205
|
+
hx-get="{% url 'punkweb_bb:post_update' post.id %}"
|
|
206
|
+
hx-target="#modal-portal"
|
|
207
|
+
>
|
|
208
|
+
<span class="material-symbols-outlined">edit</span>
|
|
209
|
+
</a>
|
|
163
210
|
{% endif %}
|
|
164
211
|
{% if post|can_delete:request.user %}
|
|
165
|
-
<a
|
|
166
|
-
|
|
167
|
-
Delete
|
|
212
|
+
<a
|
|
213
|
+
class="pw-icon-button default rounded danger"
|
|
214
|
+
title="Delete"
|
|
215
|
+
hx-get="{% url 'punkweb_bb:post_delete' post.id %}"
|
|
216
|
+
hx-target="#modal-portal"
|
|
217
|
+
>
|
|
218
|
+
<span class="material-symbols-outlined">delete</span>
|
|
168
219
|
</a>
|
|
169
220
|
{% endif %}
|
|
170
221
|
</div>
|
|
171
222
|
{% endif %}
|
|
223
|
+
{% if post.user.profile.signature.rendered %}
|
|
224
|
+
<div class="thread__signature">
|
|
225
|
+
{{post.user.profile.signature.rendered}}
|
|
226
|
+
</div>
|
|
227
|
+
{% endif %}
|
|
172
228
|
</div>
|
|
173
229
|
</div>
|
|
174
230
|
</div>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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))
|
punkweb_bb/urls.py
CHANGED
|
@@ -59,6 +59,8 @@ urlpatterns = [
|
|
|
59
59
|
views.post_create_view,
|
|
60
60
|
name="post_create",
|
|
61
61
|
),
|
|
62
|
+
path("thread/<str:thread_id>/pin/", views.thread_pin_view, name="thread_pin"),
|
|
63
|
+
path("thread/<str:thread_id>/close/", views.thread_close_view, name="thread_close"),
|
|
62
64
|
path("post/<str:post_id>/delete/", views.post_delete_view, name="post_delete"),
|
|
63
65
|
path("post/<str:post_id>/update/", views.post_update_view, name="post_update"),
|
|
64
66
|
path("shout-list/", views.shout_list_view, name="shout_list"),
|
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
|
punkweb_bb/views.py
CHANGED
|
@@ -406,6 +406,32 @@ def thread_delete_view(request, thread_id):
|
|
|
406
406
|
return render(request, "punkweb_bb/partials/thread_delete.html", context=context)
|
|
407
407
|
|
|
408
408
|
|
|
409
|
+
@login_required(login_url="/login/")
|
|
410
|
+
def thread_pin_view(request, thread_id):
|
|
411
|
+
thread = get_object_or_404(Thread, pk=thread_id)
|
|
412
|
+
|
|
413
|
+
if not request.user.has_perm("punkweb_bb.pin_thread"):
|
|
414
|
+
return HttpResponseForbidden("You do not have permission to pin threads.")
|
|
415
|
+
|
|
416
|
+
thread.is_pinned = not thread.is_pinned
|
|
417
|
+
thread.save()
|
|
418
|
+
|
|
419
|
+
return htmx_redirect(thread.get_absolute_url())
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
@login_required(login_url="/login/")
|
|
423
|
+
def thread_close_view(request, thread_id):
|
|
424
|
+
thread = get_object_or_404(Thread, pk=thread_id)
|
|
425
|
+
|
|
426
|
+
if not request.user.has_perm("punkweb_bb.close_thread"):
|
|
427
|
+
return HttpResponseForbidden("You do not have permission to close threads.")
|
|
428
|
+
|
|
429
|
+
thread.is_closed = not thread.is_closed
|
|
430
|
+
thread.save()
|
|
431
|
+
|
|
432
|
+
return htmx_redirect(thread.get_absolute_url())
|
|
433
|
+
|
|
434
|
+
|
|
409
435
|
@login_required(login_url="/login/")
|
|
410
436
|
def post_create_view(request, thread_id):
|
|
411
437
|
thread = get_object_or_404(Thread, pk=thread_id)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: punkweb-bb
|
|
3
|
-
Version: 0.2.
|
|
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.
|
|
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=
|
|
3
|
-
punkweb_bb/admin_forms.py,sha256=
|
|
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,20 +8,20 @@ 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=
|
|
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
|
|
15
|
-
punkweb_bb/settings.py,sha256=
|
|
15
|
+
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
|
-
punkweb_bb/urls.py,sha256=
|
|
19
|
-
punkweb_bb/utils.py,sha256=
|
|
20
|
-
punkweb_bb/views.py,sha256=
|
|
18
|
+
punkweb_bb/urls.py,sha256=LPCKgiPEvM87JYU_sTYTdU-tKO8xDyKkiO2nT7sv2v0,2587
|
|
19
|
+
punkweb_bb/utils.py,sha256=SgIyMCk7yfPXI18J-ybAf_JXmT1RMQO5fe4T0DBVOek,1223
|
|
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=
|
|
24
|
-
punkweb_bb/__pycache__/admin_forms.cpython-311.pyc,sha256=
|
|
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,45 +29,49 @@ 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=
|
|
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
|
|
36
|
-
punkweb_bb/__pycache__/settings.cpython-311.pyc,sha256=
|
|
36
|
+
punkweb_bb/__pycache__/settings.cpython-311.pyc,sha256=4nTGJeWkptvoS-DcaEEpXGEeh7fLox5H1pCXkFKN8U4,1025
|
|
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
|
-
punkweb_bb/__pycache__/urls.cpython-311.pyc,sha256=
|
|
40
|
-
punkweb_bb/__pycache__/utils.cpython-311.pyc,sha256=
|
|
41
|
-
punkweb_bb/__pycache__/views.cpython-311.pyc,sha256=
|
|
39
|
+
punkweb_bb/__pycache__/urls.cpython-311.pyc,sha256=IYIX39oVwDb2TtVcyX7dlzztW7hJwl0vzO1UZpb-nuo,3565
|
|
40
|
+
punkweb_bb/__pycache__/utils.cpython-311.pyc,sha256=9nGHbKLnUGM5bOSiEMbC5X_rxphHAaivuQruZu0-iQU,2086
|
|
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
|
+
punkweb_bb/migrations/0003_alter_thread_options.py,sha256=0xwVfSMWs28akDMhMwOdyyuC7JZ47JekkphT8fUCpcA,589
|
|
46
|
+
punkweb_bb/migrations/0004_groupstyle.py,sha256=DKcTMFkAj903MvrSheMKquCVIOzanZoFakZLIE63nLo,1821
|
|
45
47
|
punkweb_bb/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
48
|
punkweb_bb/migrations/__pycache__/0001_initial.cpython-311.pyc,sha256=koi_VflndmTKzSXWstWBXuVEZgEeueId5NE4kOAlA4Q,6456
|
|
47
49
|
punkweb_bb/migrations/__pycache__/0002_thread_view_count.cpython-311.pyc,sha256=9HRllkD8LHPXadyurYvp2UcmRFEywalUVQjiOGWizgc,815
|
|
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
|
|
48
52
|
punkweb_bb/migrations/__pycache__/__init__.cpython-311.pyc,sha256=sTbC1AXnh0V4BJwjcjs1ckdeYjG01I348hZwLE2HI4Y,172
|
|
49
53
|
punkweb_bb/static/punkweb_bb/favicon.ico,sha256=lEfX--R9wEGPkkXgLYCsGmHuAGajigiqBXAoonxq8ZM,318
|
|
50
54
|
punkweb_bb/static/punkweb_bb/css/category-form.css,sha256=lvG7Lh2GGBVplKk46JAIHF1cmFLve2JT32BswmudIF8,359
|
|
51
55
|
punkweb_bb/static/punkweb_bb/css/defaults.css,sha256=EsYORpHIQ8gotAdiGvBBU38i6F0mICj-OKr-JF6yYVg,1455
|
|
52
|
-
punkweb_bb/static/punkweb_bb/css/index.css,sha256=
|
|
56
|
+
punkweb_bb/static/punkweb_bb/css/index.css,sha256=Jr4P0uLQ0lhM1ujycNVYYnu6tFmFXVZUXMJxFzes-Bo,1415
|
|
53
57
|
punkweb_bb/static/punkweb_bb/css/login.css,sha256=pt5ul4ycZsVB-No3c5gsQa1zVS1iAZgteN1CcllS26k,234
|
|
54
58
|
punkweb_bb/static/punkweb_bb/css/members.css,sha256=1Fz0uVDbs3RnuXNjOtnGnK2jok3LEQBoPhjRYp7gNwE,395
|
|
55
59
|
punkweb_bb/static/punkweb_bb/css/post-form.css,sha256=rEiYplAobLjjUYAcnjNqIjyIVhe9O5hAlPJ3STW-K14,321
|
|
56
60
|
punkweb_bb/static/punkweb_bb/css/profile.css,sha256=yfNJT_D-05deqiBrdIgPeCSO_DFSL8-fGEEHnGrCIYM,916
|
|
57
61
|
punkweb_bb/static/punkweb_bb/css/punkweb-modal.css,sha256=ctwo5bgbAW-k0uqrufDbqeQfAh87-BZ-5gPm8aJHeT4,1296
|
|
58
|
-
punkweb_bb/static/punkweb_bb/css/punkweb.css,sha256=
|
|
62
|
+
punkweb_bb/static/punkweb_bb/css/punkweb.css,sha256=GhVOOVTy76IOh4WLfUQeAtG8LWhE615mSQJzro2KwZI,14557
|
|
59
63
|
punkweb_bb/static/punkweb_bb/css/settings.css,sha256=ulQQFTu8slk2rYOmhvci5v-AVnguUuDhKQDhyQOsQNU,308
|
|
60
64
|
punkweb_bb/static/punkweb_bb/css/shoutbox.css,sha256=DapBIe21b6w7ugA_U1EJ-1LFb3IfnJZMw7Kc4DLxF1g,536
|
|
61
65
|
punkweb_bb/static/punkweb_bb/css/subcategory-form.css,sha256=KU-fI8-DiurYiiBVeNk-9vERekbJrOTxllPPFYXu5Fk,371
|
|
62
|
-
punkweb_bb/static/punkweb_bb/css/subcategory.css,sha256=
|
|
66
|
+
punkweb_bb/static/punkweb_bb/css/subcategory.css,sha256=h3TaMhswiD1ePgp80VN7sR91Wzr6tZwU_kCrulvAuPc,735
|
|
63
67
|
punkweb_bb/static/punkweb_bb/css/thread-form.css,sha256=9MfqocnamNMjeNJ-w6YTwYbm4oepeK09phFzVsg1XO8,329
|
|
64
|
-
punkweb_bb/static/punkweb_bb/css/thread.css,sha256=
|
|
68
|
+
punkweb_bb/static/punkweb_bb/css/thread.css,sha256=unMpE6TM03tT8j388UghopGfQa-yvs-6dl8cOki7b6Y,1870
|
|
65
69
|
punkweb_bb/static/punkweb_bb/css/typography.css,sha256=qbFGBcU-OOe7r41xeW0Gc_9x6yHxhh81XtswmFxgavc,448
|
|
66
70
|
punkweb_bb/static/punkweb_bb/css/variables.css,sha256=WphZPeJgeqMYy4JYaSTX0gX-JiZh8EJlhieGOGk75DA,1193
|
|
67
71
|
punkweb_bb/static/punkweb_bb/editor/bbcode-editor-content.css,sha256=c1VCTVYqvzjy-51dMZ27zp-zdZrL-2TwIEheeYQXDDw,1466
|
|
68
72
|
punkweb_bb/static/punkweb_bb/editor/bbcode-editor-tags.js,sha256=pLgF7lIJnPQXpfqQnkTHBU5tjcvICDHpn2nhvzxwUqA,1624
|
|
69
73
|
punkweb_bb/static/punkweb_bb/editor/bbcode-editor.css,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
70
|
-
punkweb_bb/static/punkweb_bb/editor/bbcode-editor.js,sha256=
|
|
74
|
+
punkweb_bb/static/punkweb_bb/editor/bbcode-editor.js,sha256=gnp2QdVfnflBirCS6jnuw_TYlVoMaifn_18hh4I19Jw,607
|
|
71
75
|
punkweb_bb/static/punkweb_bb/img/default-profile-image.png,sha256=plGHkG9uiCmgof9Hcv7YNT0oThtDIhJtMzjbxxTtdFY,60475
|
|
72
76
|
punkweb_bb/static/punkweb_bb/js/punkweb-modal.js,sha256=by7e5bpdC-KJ9HT6LqAu8c868CvI5vans4S70DuAmrs,179
|
|
73
77
|
punkweb_bb/static/punkweb_bb/js/shoutbox.js,sha256=dgWq_6yzcwj9uWtvluTJeWa3bVmgtPJke48KbzL7Q1s,142
|
|
@@ -194,22 +198,22 @@ punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/office-toolba
|
|
|
194
198
|
punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/office.min.css,sha256=EZeNIT-LMxAnrW_7M6BXuH0B8m3MoIS68tDyTxmCoP0,13148
|
|
195
199
|
punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/square.min.css,sha256=vrNHEnpQJr3o8AlJ2aEhn4fsRqR4TOopE3N3-4oE2ho,10710
|
|
196
200
|
punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/content/default.min.css,sha256=2jMxGiqcrAhfOtNMdqmTUtfgM6oUz5F0VJ0sUzam9CY,1016
|
|
197
|
-
punkweb_bb/templates/punkweb_bb/base.html,sha256
|
|
201
|
+
punkweb_bb/templates/punkweb_bb/base.html,sha256=-swjri5cx547vuLVApepf8AchoAVrK2TjwtV7lmxdZc,4426
|
|
198
202
|
punkweb_bb/templates/punkweb_bb/base_modal.html,sha256=OCbtsMWeNCO0Tl1PmHCcGkwoi1OZjeIK_VhNTzMor7M,460
|
|
199
203
|
punkweb_bb/templates/punkweb_bb/bbcode.html,sha256=1EGBejsOMZOPi6P39oR6E35VdqnfR6wYWeKDl4Xr_js,396
|
|
200
204
|
punkweb_bb/templates/punkweb_bb/category_create.html,sha256=773uJzxVvuPmWVrW87EoQTBNoo6cyi3UBp_PZn6JY5A,1369
|
|
201
205
|
punkweb_bb/templates/punkweb_bb/category_update.html,sha256=GUFo19BXY8JVvxP7cWAyWiTD5Z9LohR4f6vf1jlRqfo,1467
|
|
202
|
-
punkweb_bb/templates/punkweb_bb/index.html,sha256=
|
|
203
|
-
punkweb_bb/templates/punkweb_bb/login.html,sha256=
|
|
204
|
-
punkweb_bb/templates/punkweb_bb/members.html,sha256=
|
|
205
|
-
punkweb_bb/templates/punkweb_bb/profile.html,sha256=
|
|
206
|
-
punkweb_bb/templates/punkweb_bb/settings.html,sha256=
|
|
207
|
-
punkweb_bb/templates/punkweb_bb/signup.html,sha256=
|
|
208
|
-
punkweb_bb/templates/punkweb_bb/subcategory.html,sha256=
|
|
206
|
+
punkweb_bb/templates/punkweb_bb/index.html,sha256=pe0TAI98yGrPR0dosQYJgsfesFArfsoE-kSNfElSs0Q,10526
|
|
207
|
+
punkweb_bb/templates/punkweb_bb/login.html,sha256=Hsmt_Y50nTOEv7hBjACXMSEmIVCl-IqDv15iE-wo2cY,1137
|
|
208
|
+
punkweb_bb/templates/punkweb_bb/members.html,sha256=a8G4kuZrDb1zZHYYvCscCJ3oZYMVcfRgN7R7DyUlvto,2804
|
|
209
|
+
punkweb_bb/templates/punkweb_bb/profile.html,sha256=xCvh8X9oUO1nTmLSvI1KX2yD6x61IWrVMLr8zQMLOo4,3035
|
|
210
|
+
punkweb_bb/templates/punkweb_bb/settings.html,sha256=pxEgQQxK1lk2UKL1W3YL-liAERo2mFgUNAJtshe13xk,2047
|
|
211
|
+
punkweb_bb/templates/punkweb_bb/signup.html,sha256=LMs_EwdEbBmFt4zXPt_LmtUujmBJVt0zE0LldgfhrY0,1219
|
|
212
|
+
punkweb_bb/templates/punkweb_bb/subcategory.html,sha256=MqEhncDfPRdxgRCoqCMck_dHBRFM7sTBBxnhtV7keiE,5842
|
|
209
213
|
punkweb_bb/templates/punkweb_bb/subcategory_create.html,sha256=8FhcWKiaYGIulrOaBzQ6qFMpDvsAnX_q-XJ5mKwBLW8,1521
|
|
210
214
|
punkweb_bb/templates/punkweb_bb/subcategory_update.html,sha256=kOq6tuhNBSMVQkBSpHpU06JuQ3h008fOKqLcxe9PgCg,1638
|
|
211
|
-
punkweb_bb/templates/punkweb_bb/thread.html,sha256=
|
|
212
|
-
punkweb_bb/templates/punkweb_bb/thread_create.html,sha256=
|
|
215
|
+
punkweb_bb/templates/punkweb_bb/thread.html,sha256=YGC8dPeBAN7XYwwjUl3FjxA1NGka-_7BFkkaLnaAxjw,10390
|
|
216
|
+
punkweb_bb/templates/punkweb_bb/thread_create.html,sha256=vCwU8GNBwy7pJ2X-jSTgqvAuqgQ_NeSvRDyieBWhP_g,1697
|
|
213
217
|
punkweb_bb/templates/punkweb_bb/thread_update.html,sha256=SLL_5tceZ8ZiPbWCO9eOe_aeMgV5lQ-p6eun1_XvKwE,1730
|
|
214
218
|
punkweb_bb/templates/punkweb_bb/partials/category_delete.html,sha256=Re9ESmC6AHeY9aICE0zE1i7vZEDHsF577Vmsz9L7jyA,435
|
|
215
219
|
punkweb_bb/templates/punkweb_bb/partials/post_delete.html,sha256=tQtQGxTF0tZA5eXqfIuO6NctsS83eEhR4ImmBLbkAXM,417
|
|
@@ -217,7 +221,7 @@ punkweb_bb/templates/punkweb_bb/partials/post_update.html,sha256=mFidDqgTuv4Lffu
|
|
|
217
221
|
punkweb_bb/templates/punkweb_bb/partials/shout_delete.html,sha256=zo-Ff-meucwC03p656VI5SI79RmS5nF-NbrFb3znPBM,421
|
|
218
222
|
punkweb_bb/templates/punkweb_bb/partials/subcategory_delete.html,sha256=GImRDtfuMTg6_docXHTqVqe_1NzXblnrSyivxeatlIE,447
|
|
219
223
|
punkweb_bb/templates/punkweb_bb/partials/thread_delete.html,sha256=m91u_r8qTvMqR2s4VxxFHQvZt-WGgHnHzJL_1KZkX9M,425
|
|
220
|
-
punkweb_bb/templates/punkweb_bb/shoutbox/shout_list.html,sha256=
|
|
224
|
+
punkweb_bb/templates/punkweb_bb/shoutbox/shout_list.html,sha256=STyh2Q2CMJ94XuH_4IDxtTYa6LZO6uTlWQ6uqFnMh4s,759
|
|
221
225
|
punkweb_bb/templates/punkweb_bb/shoutbox/shoutbox.html,sha256=J_Lp6KKcqSJr-IayyLN-p0JgMfuwbFP77g-UtcM53WI,672
|
|
222
226
|
punkweb_bb/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
223
227
|
punkweb_bb/templatetags/can_delete.py,sha256=NiFi_VH3KKaAYxdu9cZXR9gT9SNEeLAxnbxb4R7O_Nw,137
|
|
@@ -225,6 +229,8 @@ punkweb_bb/templatetags/can_edit.py,sha256=CbnbCcmJkeHZbWbsMn5OmCXMBEa6N1KW6W1dH
|
|
|
225
229
|
punkweb_bb/templatetags/can_post.py,sha256=6J1ojqqyNX99DBZM30jQiirQxAyY5rMi05QXXQjJB7I,133
|
|
226
230
|
punkweb_bb/templatetags/humanize_int.py,sha256=C4KmDG0Jv6o8rwT1RXLdWoGLddJxMxgOoRV9I2598AM,248
|
|
227
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
|
|
228
234
|
punkweb_bb/templatetags/__pycache__/__init__.cpython-311.pyc,sha256=VEPKwaIhqpKpSSJiotDYngAUdidDzR9PpPiHtKEl1jA,174
|
|
229
235
|
punkweb_bb/templatetags/__pycache__/can_delete.cpython-311.pyc,sha256=GfdHIumIAFyra6Nox6Y7AILBUW_DL7OZ0MtWWaj94mw,528
|
|
230
236
|
punkweb_bb/templatetags/__pycache__/can_edit.cpython-311.pyc,sha256=PJDUtJWrZWb8qgldPrC2si0QNokEhRaYnXaRk4dhuJU,524
|
|
@@ -232,8 +238,11 @@ punkweb_bb/templatetags/__pycache__/can_post.cpython-311.pyc,sha256=1IU4-Ar-kwjn
|
|
|
232
238
|
punkweb_bb/templatetags/__pycache__/humanize_count.cpython-311.pyc,sha256=UKD6_5RX8YpYpg-LPrgGxBkW56THsbYY51cKTYdKwRY,621
|
|
233
239
|
punkweb_bb/templatetags/__pycache__/humanize_int.cpython-311.pyc,sha256=csY5ek-bevYVeM91hYFKozuKWXCTXb7M-7Bokwdxhrk,619
|
|
234
240
|
punkweb_bb/templatetags/__pycache__/shoutbox_bbcode.cpython-311.pyc,sha256=Jhg9qW-nQe6IDr45rE0ZgeDYF4E61S7kYAYpbMo5ZQ8,833
|
|
235
|
-
punkweb_bb-
|
|
236
|
-
punkweb_bb-
|
|
237
|
-
punkweb_bb-
|
|
238
|
-
punkweb_bb-0.2.
|
|
239
|
-
punkweb_bb-0.2.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|