punkweb-bb 0.1.3__py3-none-any.whl → 0.2.0__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__/forms.cpython-311.pyc +0 -0
- punkweb_bb/__pycache__/guests.cpython-311.pyc +0 -0
- punkweb_bb/__pycache__/middleware.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__/tests.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/forms.py +40 -7
- punkweb_bb/guests.py +20 -0
- punkweb_bb/middleware.py +7 -0
- punkweb_bb/models.py +21 -0
- punkweb_bb/settings.py +3 -0
- punkweb_bb/static/punkweb_bb/css/category-form.css +24 -0
- punkweb_bb/static/punkweb_bb/css/index.css +6 -0
- punkweb_bb/static/punkweb_bb/css/punkweb.css +84 -5
- punkweb_bb/static/punkweb_bb/css/shoutbox.css +13 -2
- punkweb_bb/static/punkweb_bb/css/subcategory-form.css +24 -0
- punkweb_bb/static/punkweb_bb/css/subcategory.css +12 -0
- punkweb_bb/static/punkweb_bb/css/thread.css +19 -0
- punkweb_bb/static/punkweb_bb/css/variables.css +1 -0
- punkweb_bb/templates/punkweb_bb/category_create.html +50 -0
- punkweb_bb/templates/punkweb_bb/category_update.html +53 -0
- punkweb_bb/templates/punkweb_bb/index.html +46 -7
- punkweb_bb/templates/punkweb_bb/partials/category_delete.html +11 -0
- punkweb_bb/templates/punkweb_bb/partials/shout_delete.html +11 -0
- punkweb_bb/templates/punkweb_bb/partials/subcategory_delete.html +11 -0
- punkweb_bb/templates/punkweb_bb/shoutbox/shout_list.html +14 -4
- punkweb_bb/templates/punkweb_bb/subcategory.html +21 -6
- punkweb_bb/templates/punkweb_bb/subcategory_create.html +53 -0
- punkweb_bb/templates/punkweb_bb/subcategory_update.html +56 -0
- punkweb_bb/templates/punkweb_bb/thread.html +26 -6
- punkweb_bb/templates/punkweb_bb/thread_create.html +1 -0
- punkweb_bb/templatetags/__pycache__/can_delete.cpython-311.pyc +0 -0
- punkweb_bb/templatetags/__pycache__/can_edit.cpython-311.pyc +0 -0
- punkweb_bb/templatetags/__pycache__/can_post.cpython-311.pyc +0 -0
- punkweb_bb/templatetags/can_delete.py +8 -0
- punkweb_bb/templatetags/can_edit.py +8 -0
- punkweb_bb/templatetags/can_post.py +8 -0
- punkweb_bb/tests.py +19 -8
- punkweb_bb/urls.py +27 -0
- punkweb_bb/utils.py +17 -0
- punkweb_bb/views.py +232 -38
- {punkweb_bb-0.1.3.dist-info → punkweb_bb-0.2.0.dist-info}/METADATA +6 -2
- {punkweb_bb-0.1.3.dist-info → punkweb_bb-0.2.0.dist-info}/RECORD +49 -30
- {punkweb_bb-0.1.3.dist-info → punkweb_bb-0.2.0.dist-info}/LICENSE +0 -0
- {punkweb_bb-0.1.3.dist-info → punkweb_bb-0.2.0.dist-info}/WHEEL +0 -0
- {punkweb_bb-0.1.3.dist-info → punkweb_bb-0.2.0.dist-info}/top_level.txt +0 -0
punkweb_bb/views.py
CHANGED
|
@@ -4,47 +4,46 @@ from django.contrib.auth import authenticate, get_user_model, login, logout
|
|
|
4
4
|
from django.contrib.auth.decorators import login_required
|
|
5
5
|
from django.http import HttpResponseForbidden
|
|
6
6
|
from django.shortcuts import get_object_or_404, redirect, render
|
|
7
|
+
from django.urls import reverse
|
|
7
8
|
from django.utils import timezone
|
|
8
9
|
|
|
9
10
|
from punkweb_bb.forms import (
|
|
10
11
|
BoardProfileModelForm,
|
|
12
|
+
CategoryModelForm,
|
|
11
13
|
LoginForm,
|
|
12
14
|
PostModelForm,
|
|
13
15
|
ShoutModelForm,
|
|
14
16
|
SignUpForm,
|
|
17
|
+
SubcategoryModelForm,
|
|
15
18
|
ThreadModelForm,
|
|
16
19
|
)
|
|
20
|
+
from punkweb_bb.guests import guest_list
|
|
17
21
|
from punkweb_bb.models import Category, Post, Shout, Subcategory, Thread
|
|
18
22
|
from punkweb_bb.pagination import paginate_qs
|
|
19
23
|
from punkweb_bb.response import htmx_redirect
|
|
24
|
+
from punkweb_bb.utils import get_unique_slug
|
|
20
25
|
|
|
21
26
|
User = get_user_model()
|
|
22
27
|
|
|
23
28
|
|
|
24
|
-
def
|
|
25
|
-
|
|
29
|
+
def signup_view(request):
|
|
30
|
+
if request.user.is_authenticated:
|
|
31
|
+
return redirect("punkweb_bb:index")
|
|
26
32
|
|
|
27
|
-
|
|
33
|
+
if request.method == "POST":
|
|
34
|
+
form = SignUpForm(request.POST)
|
|
28
35
|
|
|
29
|
-
|
|
30
|
-
|
|
36
|
+
if form.is_valid():
|
|
37
|
+
form.save()
|
|
31
38
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
staff_online = [user for user in users_online if user.is_staff]
|
|
39
|
+
return redirect("punkweb_bb:login")
|
|
40
|
+
else:
|
|
41
|
+
form = SignUpForm()
|
|
36
42
|
|
|
37
43
|
context = {
|
|
38
|
-
"
|
|
39
|
-
"recent_threads": recent_threads,
|
|
40
|
-
"thread_count": thread_count,
|
|
41
|
-
"post_count": post_count,
|
|
42
|
-
"users": users,
|
|
43
|
-
"newest_user": newest_user,
|
|
44
|
-
"users_online": users_online,
|
|
45
|
-
"staff_online": staff_online,
|
|
44
|
+
"form": form,
|
|
46
45
|
}
|
|
47
|
-
return render(request, "punkweb_bb/
|
|
46
|
+
return render(request, "punkweb_bb/signup.html", context)
|
|
48
47
|
|
|
49
48
|
|
|
50
49
|
def login_view(request):
|
|
@@ -78,24 +77,36 @@ def logout_view(request):
|
|
|
78
77
|
return redirect("punkweb_bb:login")
|
|
79
78
|
|
|
80
79
|
|
|
81
|
-
def
|
|
82
|
-
|
|
83
|
-
return redirect("punkweb_bb:index")
|
|
80
|
+
def index_view(request):
|
|
81
|
+
categories = Category.objects.all()
|
|
84
82
|
|
|
85
|
-
|
|
86
|
-
form = SignUpForm(request.POST)
|
|
83
|
+
recent_threads = Thread.objects.all().order_by("-created_at")[:5]
|
|
87
84
|
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
thread_count = Thread.objects.count()
|
|
86
|
+
post_count = Post.objects.count()
|
|
90
87
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
88
|
+
users = User.objects.select_related("profile").all()
|
|
89
|
+
newest_user = users.order_by("-profile__created_at").first()
|
|
90
|
+
|
|
91
|
+
users_online = [user for user in users if user.profile.is_online]
|
|
92
|
+
members_online = [user for user in users_online if not user.is_staff]
|
|
93
|
+
staff_online = [user for user in users_online if user.is_staff]
|
|
94
|
+
guests_online = guest_list.length()
|
|
95
|
+
total_online = len(members_online) + len(staff_online) + guests_online
|
|
94
96
|
|
|
95
97
|
context = {
|
|
96
|
-
"
|
|
98
|
+
"categories": categories,
|
|
99
|
+
"recent_threads": recent_threads,
|
|
100
|
+
"thread_count": thread_count,
|
|
101
|
+
"post_count": post_count,
|
|
102
|
+
"users": users,
|
|
103
|
+
"newest_user": newest_user,
|
|
104
|
+
"members_online": members_online,
|
|
105
|
+
"staff_online": staff_online,
|
|
106
|
+
"guests_online": guests_online,
|
|
107
|
+
"total_online": total_online,
|
|
97
108
|
}
|
|
98
|
-
return render(request, "punkweb_bb/
|
|
109
|
+
return render(request, "punkweb_bb/index.html", context=context)
|
|
99
110
|
|
|
100
111
|
|
|
101
112
|
def profile_view(request, user_id):
|
|
@@ -141,6 +152,72 @@ def settings_view(request):
|
|
|
141
152
|
return render(request, "punkweb_bb/settings.html", context=context)
|
|
142
153
|
|
|
143
154
|
|
|
155
|
+
@login_required(login_url="/login/")
|
|
156
|
+
def category_create_view(request):
|
|
157
|
+
if not request.user.has_perm("punkweb_bb.add_category"):
|
|
158
|
+
return HttpResponseForbidden("You do not have permission to create categories.")
|
|
159
|
+
|
|
160
|
+
if request.method == "POST":
|
|
161
|
+
form = CategoryModelForm(request.POST)
|
|
162
|
+
|
|
163
|
+
if form.is_valid():
|
|
164
|
+
category = form.save(commit=False)
|
|
165
|
+
category.slug = get_unique_slug(Category, category.name)
|
|
166
|
+
category.save()
|
|
167
|
+
|
|
168
|
+
return redirect(category)
|
|
169
|
+
else:
|
|
170
|
+
form = CategoryModelForm()
|
|
171
|
+
|
|
172
|
+
context = {
|
|
173
|
+
"form": form,
|
|
174
|
+
}
|
|
175
|
+
return render(request, "punkweb_bb/category_create.html", context=context)
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
@login_required(login_url="/login/")
|
|
179
|
+
def category_update_view(request, category_slug):
|
|
180
|
+
if not request.user.has_perm("punkweb_bb.change_category"):
|
|
181
|
+
return HttpResponseForbidden("You do not have permission to change categories.")
|
|
182
|
+
|
|
183
|
+
category = get_object_or_404(Category, slug=category_slug)
|
|
184
|
+
|
|
185
|
+
if request.method == "POST":
|
|
186
|
+
form = CategoryModelForm(request.POST, instance=category)
|
|
187
|
+
|
|
188
|
+
if form.is_valid():
|
|
189
|
+
category = form.save()
|
|
190
|
+
|
|
191
|
+
return redirect(category)
|
|
192
|
+
else:
|
|
193
|
+
form = CategoryModelForm(instance=category)
|
|
194
|
+
|
|
195
|
+
context = {
|
|
196
|
+
"category": category,
|
|
197
|
+
"form": form,
|
|
198
|
+
}
|
|
199
|
+
return render(request, "punkweb_bb/category_update.html", context=context)
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
@login_required(login_url="/login/")
|
|
203
|
+
def category_delete_view(request, category_slug):
|
|
204
|
+
if not request.user.has_perm("punkweb_bb.delete_category"):
|
|
205
|
+
return HttpResponseForbidden("You do not have permission to delete categories.")
|
|
206
|
+
|
|
207
|
+
category = get_object_or_404(Category, slug=category_slug)
|
|
208
|
+
|
|
209
|
+
if request.method == "DELETE":
|
|
210
|
+
category.delete()
|
|
211
|
+
|
|
212
|
+
return htmx_redirect(reverse("punkweb_bb:index"))
|
|
213
|
+
|
|
214
|
+
context = {
|
|
215
|
+
"category": category,
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
return render(request, "punkweb_bb/partials/category_delete.html", context=context)
|
|
219
|
+
|
|
220
|
+
|
|
144
221
|
def subcategory_view(request, subcategory_slug):
|
|
145
222
|
subcategory = get_object_or_404(Subcategory, slug=subcategory_slug)
|
|
146
223
|
|
|
@@ -153,12 +230,92 @@ def subcategory_view(request, subcategory_slug):
|
|
|
153
230
|
return render(request, "punkweb_bb/subcategory.html", context=context)
|
|
154
231
|
|
|
155
232
|
|
|
233
|
+
@login_required(login_url="/login/")
|
|
234
|
+
def subcategory_create_view(request, category_slug):
|
|
235
|
+
if not request.user.has_perm("punkweb_bb.add_subcategory"):
|
|
236
|
+
return HttpResponseForbidden(
|
|
237
|
+
"You do not have permission to create subcategories."
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
category = get_object_or_404(Category, slug=category_slug)
|
|
241
|
+
|
|
242
|
+
if request.method == "POST":
|
|
243
|
+
form = SubcategoryModelForm(request.POST)
|
|
244
|
+
|
|
245
|
+
if form.is_valid():
|
|
246
|
+
subcategory = form.save(commit=False)
|
|
247
|
+
subcategory.category = category
|
|
248
|
+
subcategory.slug = get_unique_slug(Subcategory, subcategory.name)
|
|
249
|
+
subcategory.save()
|
|
250
|
+
|
|
251
|
+
return redirect(subcategory)
|
|
252
|
+
else:
|
|
253
|
+
form = SubcategoryModelForm()
|
|
254
|
+
|
|
255
|
+
context = {
|
|
256
|
+
"category": category,
|
|
257
|
+
"form": form,
|
|
258
|
+
}
|
|
259
|
+
return render(request, "punkweb_bb/subcategory_create.html", context=context)
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
@login_required(login_url="/login/")
|
|
263
|
+
def subcategory_update_view(request, subcategory_slug):
|
|
264
|
+
if not request.user.has_perm("punkweb_bb.change_subcategory"):
|
|
265
|
+
return HttpResponseForbidden(
|
|
266
|
+
"You do not have permission to change subcategories."
|
|
267
|
+
)
|
|
268
|
+
|
|
269
|
+
subcategory = get_object_or_404(Subcategory, slug=subcategory_slug)
|
|
270
|
+
|
|
271
|
+
if request.method == "POST":
|
|
272
|
+
form = SubcategoryModelForm(request.POST, instance=subcategory)
|
|
273
|
+
|
|
274
|
+
if form.is_valid():
|
|
275
|
+
subcategory = form.save()
|
|
276
|
+
|
|
277
|
+
return redirect(subcategory)
|
|
278
|
+
else:
|
|
279
|
+
form = SubcategoryModelForm(instance=subcategory)
|
|
280
|
+
|
|
281
|
+
context = {
|
|
282
|
+
"subcategory": subcategory,
|
|
283
|
+
"form": form,
|
|
284
|
+
}
|
|
285
|
+
return render(request, "punkweb_bb/subcategory_update.html", context=context)
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
@login_required(login_url="/login/")
|
|
289
|
+
def subcategory_delete_view(request, subcategory_slug):
|
|
290
|
+
if not request.user.has_perm("punkweb_bb.delete_subcategory"):
|
|
291
|
+
return HttpResponseForbidden(
|
|
292
|
+
"You do not have permission to delete subcategories."
|
|
293
|
+
)
|
|
294
|
+
|
|
295
|
+
subcategory = get_object_or_404(Subcategory, slug=subcategory_slug)
|
|
296
|
+
|
|
297
|
+
if request.method == "DELETE":
|
|
298
|
+
subcategory.delete()
|
|
299
|
+
|
|
300
|
+
return htmx_redirect(subcategory.category.get_absolute_url())
|
|
301
|
+
|
|
302
|
+
context = {
|
|
303
|
+
"subcategory": subcategory,
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
return render(
|
|
307
|
+
request, "punkweb_bb/partials/subcategory_delete.html", context=context
|
|
308
|
+
)
|
|
309
|
+
|
|
310
|
+
|
|
156
311
|
@login_required(login_url="/login/")
|
|
157
312
|
def thread_create_view(request, subcategory_slug):
|
|
158
313
|
subcategory = get_object_or_404(Subcategory, slug=subcategory_slug)
|
|
159
314
|
|
|
160
|
-
if subcategory.
|
|
161
|
-
return
|
|
315
|
+
if not subcategory.can_post(request.user):
|
|
316
|
+
return HttpResponseForbidden(
|
|
317
|
+
"You do not have permission to post in this subcategory."
|
|
318
|
+
)
|
|
162
319
|
|
|
163
320
|
if request.method == "POST":
|
|
164
321
|
form = ThreadModelForm(request.POST)
|
|
@@ -204,7 +361,12 @@ def thread_view(request, thread_id):
|
|
|
204
361
|
|
|
205
362
|
@login_required(login_url="/login/")
|
|
206
363
|
def thread_update_view(request, thread_id):
|
|
207
|
-
thread = get_object_or_404(Thread, pk=thread_id
|
|
364
|
+
thread = get_object_or_404(Thread, pk=thread_id)
|
|
365
|
+
|
|
366
|
+
if not thread.can_edit(request.user):
|
|
367
|
+
return HttpResponseForbidden(
|
|
368
|
+
"You do not have permission to change this thread."
|
|
369
|
+
)
|
|
208
370
|
|
|
209
371
|
if request.method == "POST":
|
|
210
372
|
form = ThreadModelForm(request.POST, instance=thread)
|
|
@@ -225,7 +387,12 @@ def thread_update_view(request, thread_id):
|
|
|
225
387
|
|
|
226
388
|
@login_required(login_url="/login/")
|
|
227
389
|
def thread_delete_view(request, thread_id):
|
|
228
|
-
thread = get_object_or_404(Thread, pk=thread_id
|
|
390
|
+
thread = get_object_or_404(Thread, pk=thread_id)
|
|
391
|
+
|
|
392
|
+
if not thread.can_delete(request.user):
|
|
393
|
+
return HttpResponseForbidden(
|
|
394
|
+
"You do not have permission to delete this thread."
|
|
395
|
+
)
|
|
229
396
|
|
|
230
397
|
if request.method == "DELETE":
|
|
231
398
|
thread.delete()
|
|
@@ -243,8 +410,10 @@ def thread_delete_view(request, thread_id):
|
|
|
243
410
|
def post_create_view(request, thread_id):
|
|
244
411
|
thread = get_object_or_404(Thread, pk=thread_id)
|
|
245
412
|
|
|
246
|
-
if thread.
|
|
247
|
-
return HttpResponseForbidden(
|
|
413
|
+
if not thread.can_post(request.user):
|
|
414
|
+
return HttpResponseForbidden(
|
|
415
|
+
"You do not have permission to post in this thread."
|
|
416
|
+
)
|
|
248
417
|
|
|
249
418
|
form = PostModelForm(request.POST)
|
|
250
419
|
|
|
@@ -259,7 +428,10 @@ def post_create_view(request, thread_id):
|
|
|
259
428
|
|
|
260
429
|
@login_required(login_url="/login/")
|
|
261
430
|
def post_update_view(request, post_id):
|
|
262
|
-
post = get_object_or_404(Post, pk=post_id
|
|
431
|
+
post = get_object_or_404(Post, pk=post_id)
|
|
432
|
+
|
|
433
|
+
if not post.can_edit(request.user):
|
|
434
|
+
return HttpResponseForbidden("You do not have permission to change this post.")
|
|
263
435
|
|
|
264
436
|
if request.method == "POST":
|
|
265
437
|
form = PostModelForm(request.POST, instance=post)
|
|
@@ -281,7 +453,10 @@ def post_update_view(request, post_id):
|
|
|
281
453
|
|
|
282
454
|
@login_required(login_url="/login/")
|
|
283
455
|
def post_delete_view(request, post_id):
|
|
284
|
-
post = get_object_or_404(Post, pk=post_id
|
|
456
|
+
post = get_object_or_404(Post, pk=post_id)
|
|
457
|
+
|
|
458
|
+
if not post.can_delete(request.user):
|
|
459
|
+
return HttpResponseForbidden("You do not have permission to delete this post.")
|
|
285
460
|
|
|
286
461
|
if request.method == "DELETE":
|
|
287
462
|
post.delete()
|
|
@@ -333,6 +508,25 @@ def shout_create_view(request):
|
|
|
333
508
|
)
|
|
334
509
|
|
|
335
510
|
|
|
511
|
+
@login_required(login_url="/login/")
|
|
512
|
+
def shout_delete_view(request, shout_id):
|
|
513
|
+
shout = get_object_or_404(Shout, pk=shout_id)
|
|
514
|
+
|
|
515
|
+
if not shout.can_delete(request.user):
|
|
516
|
+
return HttpResponseForbidden("You do not have permission to delete this shout.")
|
|
517
|
+
|
|
518
|
+
if request.method == "DELETE":
|
|
519
|
+
shout.delete()
|
|
520
|
+
|
|
521
|
+
return htmx_redirect(reverse("punkweb_bb:index"))
|
|
522
|
+
|
|
523
|
+
context = {
|
|
524
|
+
"shout": shout,
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
return render(request, "punkweb_bb/partials/shout_delete.html", context=context)
|
|
528
|
+
|
|
529
|
+
|
|
336
530
|
def bbcode_view(request):
|
|
337
531
|
codes = (
|
|
338
532
|
("Bold", "[b]Bold Text[/b]"),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: punkweb-bb
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
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
|
|
@@ -17,6 +17,7 @@ Description-Content-Type: text/markdown
|
|
|
17
17
|
License-File: LICENSE
|
|
18
18
|
Requires-Dist: django >=4.0
|
|
19
19
|
Requires-Dist: django-precise-bbcode
|
|
20
|
+
Requires-Dist: expiringdict
|
|
20
21
|
Requires-Dist: pillow
|
|
21
22
|
|
|
22
23
|
# PunkwebBB
|
|
@@ -25,7 +26,7 @@ PunkwebBB is a Django application that provides a simple and modern forum board
|
|
|
25
26
|
|
|
26
27
|
This is the successor to [punkweb-boards](https://github.com/Punkweb/punkweb-boards).
|
|
27
28
|
|
|
28
|
-
Check out [punkweb.net](https://punkweb.net/board/) for a live
|
|
29
|
+
Check out [punkweb.net](https://punkweb.net/board/) for documentation, support and a live demonstration of the software.
|
|
29
30
|
|
|
30
31
|
## Built with
|
|
31
32
|
|
|
@@ -115,6 +116,9 @@ PUNKWEB_BB = {
|
|
|
115
116
|
"SITE_TITLE": "PunkwebBB",
|
|
116
117
|
"FAVICON": "punkweb_bb/favicon.ico",
|
|
117
118
|
"SHOUTBOX_ENABLED": True,
|
|
119
|
+
"DISCORD_WIDGET_ENABLED": False,
|
|
120
|
+
"DISCORD_WIDGET_THEME": "dark",
|
|
121
|
+
"DISCORD_SERVER_ID": None, # Found under Server Settings > Widget > Server ID
|
|
118
122
|
}
|
|
119
123
|
```
|
|
120
124
|
|
|
@@ -4,18 +4,20 @@ punkweb_bb/admin_forms.py,sha256=Ppgl960Alwwz_tsrCDct56SEab0ntxBMyb7LJHODuWc,112
|
|
|
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
|
|
7
|
-
punkweb_bb/forms.py,sha256=
|
|
8
|
-
punkweb_bb/
|
|
7
|
+
punkweb_bb/forms.py,sha256=YeBrjOmBIytfQ5dfnLb1xKAnYR-zUSIr2cerFhCODaE,2907
|
|
8
|
+
punkweb_bb/guests.py,sha256=Nvn4ZVJvQSQs_f-GeSwNn79Qp8ap_CAoXpYfRTqSbxg,467
|
|
9
|
+
punkweb_bb/middleware.py,sha256=NrYv6nyAYKGcu-qKRnZmCyLghtJ4MUHvt3m5NS8HJbo,628
|
|
9
10
|
punkweb_bb/mixins.py,sha256=XfiThPL7rB71IfukS1ikvYQhfg8RwgSVgsm10Ul1ezM,395
|
|
10
|
-
punkweb_bb/models.py,sha256=
|
|
11
|
+
punkweb_bb/models.py,sha256=Vl3df9rUqH3TJyfJ__rr8ibhs98tUaUkMPzWlq_0ZT0,6218
|
|
11
12
|
punkweb_bb/pagination.py,sha256=OgoZuJsq9MKMvBKYylJVPaNtM9ni3K8OAvOdi-eGr3M,409
|
|
12
13
|
punkweb_bb/parsers.py,sha256=VjWSPqpVfypHLHP0NrfLqXB-1b0W6oFuGIzoAiPi71I,2732
|
|
13
14
|
punkweb_bb/response.py,sha256=dETGVC9Xrsq02pQzmIIWbSUt472lJ4fgLwBKrXnP3t4,130
|
|
14
|
-
punkweb_bb/settings.py,sha256=
|
|
15
|
+
punkweb_bb/settings.py,sha256=ebJahIZHt1fYdhxB9wWDlWj5KhzExUtaXyoFLy8uR6k,517
|
|
15
16
|
punkweb_bb/signals.py,sha256=bVdfg942Mwq-fYDZ1Z52Q0V2BCk1lgzGz8JVZFPnzJ8,365
|
|
16
|
-
punkweb_bb/tests.py,sha256=
|
|
17
|
-
punkweb_bb/urls.py,sha256=
|
|
18
|
-
punkweb_bb/
|
|
17
|
+
punkweb_bb/tests.py,sha256=NcTt9RPt4MegOzjryUok9FTWZda6VHB3O3FJN99Pz8s,26338
|
|
18
|
+
punkweb_bb/urls.py,sha256=z5L0Dj1TgjNUMhogra4R55bfhpDyBSsW6KfLwFFpYRs,2415
|
|
19
|
+
punkweb_bb/utils.py,sha256=4XUoXB1hqCYShhPAbdFf2qSB5wTKt7IJtFizuRfkP2U,396
|
|
20
|
+
punkweb_bb/views.py,sha256=b8E8MIHsdyPUxxbzRQRhgvUJhfNn5ljOuVEKTGxOjcU,16610
|
|
19
21
|
punkweb_bb/widgets.py,sha256=eF6CB5nnh_6XJadpDzDKgd9incd0VIR63Rnzdr8T2n0,840
|
|
20
22
|
punkweb_bb/__pycache__/__init__.cpython-311.pyc,sha256=3PyxCxoznfadaGt0a7re4j0Ky9z9hblufpcwPB85kK8,161
|
|
21
23
|
punkweb_bb/__pycache__/admin.cpython-311.pyc,sha256=rAPYqRy7hAVZn3qST3ypYdulvH9IBhzWEgvbbAMIMIY,3679
|
|
@@ -23,18 +25,20 @@ punkweb_bb/__pycache__/admin_forms.cpython-311.pyc,sha256=fQgpcTP-_bouxhHrDVxFzA
|
|
|
23
25
|
punkweb_bb/__pycache__/apps.cpython-311.pyc,sha256=lw328DOwOp1F8FWTFYb3qV1EoBNgRr_Tc4J8DXfIl-I,730
|
|
24
26
|
punkweb_bb/__pycache__/bbcode_tags.cpython-311.pyc,sha256=QI4BJt5plqLMiAvlVAxibuNONi69PJFQpotpS50olro,8534
|
|
25
27
|
punkweb_bb/__pycache__/context_processors.cpython-311.pyc,sha256=P7rEsodXonYexbS5vUaUKVJ9tIx1pOVk6NQWVvWNvS8,392
|
|
26
|
-
punkweb_bb/__pycache__/forms.cpython-311.pyc,sha256=
|
|
27
|
-
punkweb_bb/__pycache__/
|
|
28
|
+
punkweb_bb/__pycache__/forms.cpython-311.pyc,sha256=wZAWlEguoeOOmcDKJJgXX_oLvYwA-JwQqDyE7IGI3H0,6194
|
|
29
|
+
punkweb_bb/__pycache__/guests.cpython-311.pyc,sha256=vgZJcZGyHZkllCAhXHGgajHh7YM1ntXinSed3ojIK6I,1581
|
|
30
|
+
punkweb_bb/__pycache__/middleware.cpython-311.pyc,sha256=KbZ6z2Q7eCRX3dB7mnRUpn58mb_O8sXpOw_sqVfQsgM,1560
|
|
28
31
|
punkweb_bb/__pycache__/mixins.cpython-311.pyc,sha256=eP1NjqDNYMYXrC45DNkrTqVAUv1vsGBrqPy5U5CB_aw,1478
|
|
29
|
-
punkweb_bb/__pycache__/models.cpython-311.pyc,sha256=
|
|
32
|
+
punkweb_bb/__pycache__/models.cpython-311.pyc,sha256=4qd4eWnPR_p1G26cnhowd7gfJ6-p660NrS_C5q7038A,13824
|
|
30
33
|
punkweb_bb/__pycache__/pagination.cpython-311.pyc,sha256=r54xmtiRp5dm1n2Xa7oElMFFaYFY0RzmMuF3Er4UqEA,990
|
|
31
34
|
punkweb_bb/__pycache__/parsers.cpython-311.pyc,sha256=pp8JZt9V3HhquQMGrhglwLc53GxgNFWjjSnK3Bpxf8o,5335
|
|
32
35
|
punkweb_bb/__pycache__/response.cpython-311.pyc,sha256=CEPckYWZkOrdU2Vow-ni0ZrWEUBww0uJzyr_wv---mM,448
|
|
33
|
-
punkweb_bb/__pycache__/settings.cpython-311.pyc,sha256=
|
|
36
|
+
punkweb_bb/__pycache__/settings.cpython-311.pyc,sha256=earWFaFtg8IPqfOz9I6wdpI9bJtxjxsTwG7LoTCPmtw,947
|
|
34
37
|
punkweb_bb/__pycache__/signals.cpython-311.pyc,sha256=AHChn7hDdrOmCAwKIKKuFOY-4hyBP9uwTkyb5bnFV-Q,864
|
|
35
|
-
punkweb_bb/__pycache__/tests.cpython-311.pyc,sha256=
|
|
36
|
-
punkweb_bb/__pycache__/urls.cpython-311.pyc,sha256=
|
|
37
|
-
punkweb_bb/__pycache__/
|
|
38
|
+
punkweb_bb/__pycache__/tests.cpython-311.pyc,sha256=z7wbXzc3xY4lyg8II-k8fVe-UxQ2fk8XwV-wnb684wo,51768
|
|
39
|
+
punkweb_bb/__pycache__/urls.cpython-311.pyc,sha256=A7iTuJIZzme8BJX6pfyX-Ym9ZRpsLt-RDo4eveOiw8M,3322
|
|
40
|
+
punkweb_bb/__pycache__/utils.cpython-311.pyc,sha256=iNDU4dwAwpAzqlKl5kuHH989Ic_1lGA4JQq0wpR7ATo,748
|
|
41
|
+
punkweb_bb/__pycache__/views.cpython-311.pyc,sha256=B9W_SLDDVMsEKJ4yF--L9oe_qF1extBuone73KfgW-w,23918
|
|
38
42
|
punkweb_bb/__pycache__/widgets.cpython-311.pyc,sha256=-RcQ3JapLHw8Bbi4FP05kQJJIa7bnliKPaFpkDCOWvQ,1552
|
|
39
43
|
punkweb_bb/migrations/0001_initial.py,sha256=3RGsylygBcWx1kIPhSzOb9v_2yvowsxKfxuSinKKuS0,8950
|
|
40
44
|
punkweb_bb/migrations/0002_thread_view_count.py,sha256=JJZT53Mp8Ofht3oIi67s-0wzCdpYyu8wOeCi_B8q8Yo,388
|
|
@@ -43,21 +47,23 @@ punkweb_bb/migrations/__pycache__/0001_initial.cpython-311.pyc,sha256=koi_Vflndm
|
|
|
43
47
|
punkweb_bb/migrations/__pycache__/0002_thread_view_count.cpython-311.pyc,sha256=9HRllkD8LHPXadyurYvp2UcmRFEywalUVQjiOGWizgc,815
|
|
44
48
|
punkweb_bb/migrations/__pycache__/__init__.cpython-311.pyc,sha256=sTbC1AXnh0V4BJwjcjs1ckdeYjG01I348hZwLE2HI4Y,172
|
|
45
49
|
punkweb_bb/static/punkweb_bb/favicon.ico,sha256=lEfX--R9wEGPkkXgLYCsGmHuAGajigiqBXAoonxq8ZM,318
|
|
50
|
+
punkweb_bb/static/punkweb_bb/css/category-form.css,sha256=lvG7Lh2GGBVplKk46JAIHF1cmFLve2JT32BswmudIF8,359
|
|
46
51
|
punkweb_bb/static/punkweb_bb/css/defaults.css,sha256=EsYORpHIQ8gotAdiGvBBU38i6F0mICj-OKr-JF6yYVg,1455
|
|
47
|
-
punkweb_bb/static/punkweb_bb/css/index.css,sha256=
|
|
52
|
+
punkweb_bb/static/punkweb_bb/css/index.css,sha256=BTuzV0HSvdOmWKd9cjYOv7sOOsdWqbxXxCp4Q3fyPeU,1418
|
|
48
53
|
punkweb_bb/static/punkweb_bb/css/login.css,sha256=pt5ul4ycZsVB-No3c5gsQa1zVS1iAZgteN1CcllS26k,234
|
|
49
54
|
punkweb_bb/static/punkweb_bb/css/members.css,sha256=1Fz0uVDbs3RnuXNjOtnGnK2jok3LEQBoPhjRYp7gNwE,395
|
|
50
55
|
punkweb_bb/static/punkweb_bb/css/post-form.css,sha256=rEiYplAobLjjUYAcnjNqIjyIVhe9O5hAlPJ3STW-K14,321
|
|
51
56
|
punkweb_bb/static/punkweb_bb/css/profile.css,sha256=yfNJT_D-05deqiBrdIgPeCSO_DFSL8-fGEEHnGrCIYM,916
|
|
52
57
|
punkweb_bb/static/punkweb_bb/css/punkweb-modal.css,sha256=ctwo5bgbAW-k0uqrufDbqeQfAh87-BZ-5gPm8aJHeT4,1296
|
|
53
|
-
punkweb_bb/static/punkweb_bb/css/punkweb.css,sha256=
|
|
58
|
+
punkweb_bb/static/punkweb_bb/css/punkweb.css,sha256=ABCJYmjHnUr3MkP-XUIvb1tiOamTy0tbDZZOM_-nQ4k,12678
|
|
54
59
|
punkweb_bb/static/punkweb_bb/css/settings.css,sha256=ulQQFTu8slk2rYOmhvci5v-AVnguUuDhKQDhyQOsQNU,308
|
|
55
|
-
punkweb_bb/static/punkweb_bb/css/shoutbox.css,sha256
|
|
56
|
-
punkweb_bb/static/punkweb_bb/css/subcategory.css,sha256=
|
|
60
|
+
punkweb_bb/static/punkweb_bb/css/shoutbox.css,sha256=DapBIe21b6w7ugA_U1EJ-1LFb3IfnJZMw7Kc4DLxF1g,536
|
|
61
|
+
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=7j9_-S4kspgojfebYBu8AQQS3uJtqCoE32T-BuAgHxw,711
|
|
57
63
|
punkweb_bb/static/punkweb_bb/css/thread-form.css,sha256=9MfqocnamNMjeNJ-w6YTwYbm4oepeK09phFzVsg1XO8,329
|
|
58
|
-
punkweb_bb/static/punkweb_bb/css/thread.css,sha256=
|
|
64
|
+
punkweb_bb/static/punkweb_bb/css/thread.css,sha256=3s2xQj9uD3gQGhEzTCY6y7k5Dpq5E7eeI8gi4fwODos,1870
|
|
59
65
|
punkweb_bb/static/punkweb_bb/css/typography.css,sha256=qbFGBcU-OOe7r41xeW0Gc_9x6yHxhh81XtswmFxgavc,448
|
|
60
|
-
punkweb_bb/static/punkweb_bb/css/variables.css,sha256=
|
|
66
|
+
punkweb_bb/static/punkweb_bb/css/variables.css,sha256=WphZPeJgeqMYy4JYaSTX0gX-JiZh8EJlhieGOGk75DA,1193
|
|
61
67
|
punkweb_bb/static/punkweb_bb/editor/bbcode-editor-content.css,sha256=c1VCTVYqvzjy-51dMZ27zp-zdZrL-2TwIEheeYQXDDw,1466
|
|
62
68
|
punkweb_bb/static/punkweb_bb/editor/bbcode-editor-tags.js,sha256=pLgF7lIJnPQXpfqQnkTHBU5tjcvICDHpn2nhvzxwUqA,1624
|
|
63
69
|
punkweb_bb/static/punkweb_bb/editor/bbcode-editor.css,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -191,30 +197,43 @@ punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/content/defau
|
|
|
191
197
|
punkweb_bb/templates/punkweb_bb/base.html,sha256=Gu2ZVeP0p7GnsfXFxByXRd9LT4DNXx0O1czSGjwYg0w,4037
|
|
192
198
|
punkweb_bb/templates/punkweb_bb/base_modal.html,sha256=OCbtsMWeNCO0Tl1PmHCcGkwoi1OZjeIK_VhNTzMor7M,460
|
|
193
199
|
punkweb_bb/templates/punkweb_bb/bbcode.html,sha256=1EGBejsOMZOPi6P39oR6E35VdqnfR6wYWeKDl4Xr_js,396
|
|
194
|
-
punkweb_bb/templates/punkweb_bb/
|
|
200
|
+
punkweb_bb/templates/punkweb_bb/category_create.html,sha256=773uJzxVvuPmWVrW87EoQTBNoo6cyi3UBp_PZn6JY5A,1369
|
|
201
|
+
punkweb_bb/templates/punkweb_bb/category_update.html,sha256=GUFo19BXY8JVvxP7cWAyWiTD5Z9LohR4f6vf1jlRqfo,1467
|
|
202
|
+
punkweb_bb/templates/punkweb_bb/index.html,sha256=HuhP13ijkcU7IofnCWvcLD9FeQOmb87jSAQrMBmrcek,10032
|
|
195
203
|
punkweb_bb/templates/punkweb_bb/login.html,sha256=ZUOmbyZREzS7Sw02Lfb9zpRJQQWwJgolnj9lcBKnOtg,1087
|
|
196
204
|
punkweb_bb/templates/punkweb_bb/members.html,sha256=ceRCRX0AN7V8d7paz9495y8aQByMUKDWVWL2GzoGbus,2729
|
|
197
205
|
punkweb_bb/templates/punkweb_bb/profile.html,sha256=MW1JWLs_lLpg62DDcvcZJRwrHquYA5nCwQqL1v9ZGCo,2948
|
|
198
206
|
punkweb_bb/templates/punkweb_bb/settings.html,sha256=CmmGdNddZj6Atpofcny0bwEHwTPRPC8vXXThCgsNH90,1994
|
|
199
207
|
punkweb_bb/templates/punkweb_bb/signup.html,sha256=HP5owUfV2uEuvOccPoBa21XbjBHo0ulV6tjfgdToNLU,1167
|
|
200
|
-
punkweb_bb/templates/punkweb_bb/subcategory.html,sha256=
|
|
201
|
-
punkweb_bb/templates/punkweb_bb/
|
|
202
|
-
punkweb_bb/templates/punkweb_bb/
|
|
208
|
+
punkweb_bb/templates/punkweb_bb/subcategory.html,sha256=Px3XQhYlbb5Vt4Q5-0_4trpng_mqo7wA9NFlIzWIODI,5543
|
|
209
|
+
punkweb_bb/templates/punkweb_bb/subcategory_create.html,sha256=8FhcWKiaYGIulrOaBzQ6qFMpDvsAnX_q-XJ5mKwBLW8,1521
|
|
210
|
+
punkweb_bb/templates/punkweb_bb/subcategory_update.html,sha256=kOq6tuhNBSMVQkBSpHpU06JuQ3h008fOKqLcxe9PgCg,1638
|
|
211
|
+
punkweb_bb/templates/punkweb_bb/thread.html,sha256=zv18JAucBrCDlOQn0J5wT8raNLtcvuW1vszXRguPPPk,8417
|
|
212
|
+
punkweb_bb/templates/punkweb_bb/thread_create.html,sha256=676jLKGc5m8IapbL_FS1yvTs2XVFPHjJ316SIiORAew,1639
|
|
203
213
|
punkweb_bb/templates/punkweb_bb/thread_update.html,sha256=SLL_5tceZ8ZiPbWCO9eOe_aeMgV5lQ-p6eun1_XvKwE,1730
|
|
214
|
+
punkweb_bb/templates/punkweb_bb/partials/category_delete.html,sha256=Re9ESmC6AHeY9aICE0zE1i7vZEDHsF577Vmsz9L7jyA,435
|
|
204
215
|
punkweb_bb/templates/punkweb_bb/partials/post_delete.html,sha256=tQtQGxTF0tZA5eXqfIuO6NctsS83eEhR4ImmBLbkAXM,417
|
|
205
216
|
punkweb_bb/templates/punkweb_bb/partials/post_update.html,sha256=mFidDqgTuv4LffuSa8pShXxWmiramLLMhHjsaJs1Y9k,565
|
|
217
|
+
punkweb_bb/templates/punkweb_bb/partials/shout_delete.html,sha256=zo-Ff-meucwC03p656VI5SI79RmS5nF-NbrFb3znPBM,421
|
|
218
|
+
punkweb_bb/templates/punkweb_bb/partials/subcategory_delete.html,sha256=GImRDtfuMTg6_docXHTqVqe_1NzXblnrSyivxeatlIE,447
|
|
206
219
|
punkweb_bb/templates/punkweb_bb/partials/thread_delete.html,sha256=m91u_r8qTvMqR2s4VxxFHQvZt-WGgHnHzJL_1KZkX9M,425
|
|
207
|
-
punkweb_bb/templates/punkweb_bb/shoutbox/shout_list.html,sha256=
|
|
220
|
+
punkweb_bb/templates/punkweb_bb/shoutbox/shout_list.html,sha256=hp2DzMRYGkzLD-mPJjCLvOpoyN5It0FihHff7nSGha0,689
|
|
208
221
|
punkweb_bb/templates/punkweb_bb/shoutbox/shoutbox.html,sha256=J_Lp6KKcqSJr-IayyLN-p0JgMfuwbFP77g-UtcM53WI,672
|
|
209
222
|
punkweb_bb/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
223
|
+
punkweb_bb/templatetags/can_delete.py,sha256=NiFi_VH3KKaAYxdu9cZXR9gT9SNEeLAxnbxb4R7O_Nw,137
|
|
224
|
+
punkweb_bb/templatetags/can_edit.py,sha256=CbnbCcmJkeHZbWbsMn5OmCXMBEa6N1KW6W1dHLQvdWM,133
|
|
225
|
+
punkweb_bb/templatetags/can_post.py,sha256=6J1ojqqyNX99DBZM30jQiirQxAyY5rMi05QXXQjJB7I,133
|
|
210
226
|
punkweb_bb/templatetags/humanize_int.py,sha256=C4KmDG0Jv6o8rwT1RXLdWoGLddJxMxgOoRV9I2598AM,248
|
|
211
227
|
punkweb_bb/templatetags/shoutbox_bbcode.py,sha256=OH-FsRTyPWZldaFypSVzPLlTrSm4XEOqQW9hBI0ROBk,310
|
|
212
228
|
punkweb_bb/templatetags/__pycache__/__init__.cpython-311.pyc,sha256=VEPKwaIhqpKpSSJiotDYngAUdidDzR9PpPiHtKEl1jA,174
|
|
229
|
+
punkweb_bb/templatetags/__pycache__/can_delete.cpython-311.pyc,sha256=GfdHIumIAFyra6Nox6Y7AILBUW_DL7OZ0MtWWaj94mw,528
|
|
230
|
+
punkweb_bb/templatetags/__pycache__/can_edit.cpython-311.pyc,sha256=PJDUtJWrZWb8qgldPrC2si0QNokEhRaYnXaRk4dhuJU,524
|
|
231
|
+
punkweb_bb/templatetags/__pycache__/can_post.cpython-311.pyc,sha256=1IU4-Ar-kwjnB2EHQ_tJUyTFWPwTl8jsDbgnNT52zO8,524
|
|
213
232
|
punkweb_bb/templatetags/__pycache__/humanize_count.cpython-311.pyc,sha256=UKD6_5RX8YpYpg-LPrgGxBkW56THsbYY51cKTYdKwRY,621
|
|
214
233
|
punkweb_bb/templatetags/__pycache__/humanize_int.cpython-311.pyc,sha256=csY5ek-bevYVeM91hYFKozuKWXCTXb7M-7Bokwdxhrk,619
|
|
215
234
|
punkweb_bb/templatetags/__pycache__/shoutbox_bbcode.cpython-311.pyc,sha256=Jhg9qW-nQe6IDr45rE0ZgeDYF4E61S7kYAYpbMo5ZQ8,833
|
|
216
|
-
punkweb_bb-0.
|
|
217
|
-
punkweb_bb-0.
|
|
218
|
-
punkweb_bb-0.
|
|
219
|
-
punkweb_bb-0.
|
|
220
|
-
punkweb_bb-0.
|
|
235
|
+
punkweb_bb-0.2.0.dist-info/LICENSE,sha256=YYysF07B-kyXSO7IWFB9f49ZXa6LIFUTVsR1Ogmhp8s,1507
|
|
236
|
+
punkweb_bb-0.2.0.dist-info/METADATA,sha256=nPCD6tOWqlYwLl3PC2pZgspZvXDmIR76lf0a0OqX9T0,5138
|
|
237
|
+
punkweb_bb-0.2.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
238
|
+
punkweb_bb-0.2.0.dist-info/top_level.txt,sha256=sWuGdGnk0ejOXiFDzlBqrNs2VbPEx0_i8UwWXn4SuHU,11
|
|
239
|
+
punkweb_bb-0.2.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|