punkweb-bb 0.1.4__py3-none-any.whl → 0.2.1__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 (54) hide show
  1. punkweb_bb/__pycache__/forms.cpython-311.pyc +0 -0
  2. punkweb_bb/__pycache__/models.cpython-311.pyc +0 -0
  3. punkweb_bb/__pycache__/settings.cpython-311.pyc +0 -0
  4. punkweb_bb/__pycache__/tests.cpython-311.pyc +0 -0
  5. punkweb_bb/__pycache__/urls.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/forms.py +40 -7
  9. punkweb_bb/migrations/0003_alter_thread_options.py +23 -0
  10. punkweb_bb/migrations/__pycache__/0003_alter_thread_options.cpython-311.pyc +0 -0
  11. punkweb_bb/models.py +25 -0
  12. punkweb_bb/settings.py +1 -0
  13. punkweb_bb/static/punkweb_bb/css/category-form.css +24 -0
  14. punkweb_bb/static/punkweb_bb/css/index.css +6 -0
  15. punkweb_bb/static/punkweb_bb/css/punkweb.css +155 -8
  16. punkweb_bb/static/punkweb_bb/css/shoutbox.css +13 -2
  17. punkweb_bb/static/punkweb_bb/css/subcategory-form.css +24 -0
  18. punkweb_bb/static/punkweb_bb/css/subcategory.css +12 -0
  19. punkweb_bb/static/punkweb_bb/css/thread.css +20 -1
  20. punkweb_bb/static/punkweb_bb/css/variables.css +1 -0
  21. punkweb_bb/static/punkweb_bb/editor/bbcode-editor.js +1 -1
  22. punkweb_bb/templates/punkweb_bb/base.html +6 -0
  23. punkweb_bb/templates/punkweb_bb/category_create.html +50 -0
  24. punkweb_bb/templates/punkweb_bb/category_update.html +53 -0
  25. punkweb_bb/templates/punkweb_bb/index.html +43 -2
  26. punkweb_bb/templates/punkweb_bb/login.html +1 -0
  27. punkweb_bb/templates/punkweb_bb/members.html +1 -0
  28. punkweb_bb/templates/punkweb_bb/partials/category_delete.html +11 -0
  29. punkweb_bb/templates/punkweb_bb/partials/shout_delete.html +11 -0
  30. punkweb_bb/templates/punkweb_bb/partials/subcategory_delete.html +11 -0
  31. punkweb_bb/templates/punkweb_bb/profile.html +1 -0
  32. punkweb_bb/templates/punkweb_bb/settings.html +1 -0
  33. punkweb_bb/templates/punkweb_bb/shoutbox/shout_list.html +18 -4
  34. punkweb_bb/templates/punkweb_bb/signup.html +1 -0
  35. punkweb_bb/templates/punkweb_bb/subcategory.html +31 -6
  36. punkweb_bb/templates/punkweb_bb/subcategory_create.html +53 -0
  37. punkweb_bb/templates/punkweb_bb/subcategory_update.html +56 -0
  38. punkweb_bb/templates/punkweb_bb/thread.html +94 -22
  39. punkweb_bb/templates/punkweb_bb/thread_create.html +2 -0
  40. punkweb_bb/templatetags/__pycache__/can_delete.cpython-311.pyc +0 -0
  41. punkweb_bb/templatetags/__pycache__/can_edit.cpython-311.pyc +0 -0
  42. punkweb_bb/templatetags/__pycache__/can_post.cpython-311.pyc +0 -0
  43. punkweb_bb/templatetags/can_delete.py +8 -0
  44. punkweb_bb/templatetags/can_edit.py +8 -0
  45. punkweb_bb/templatetags/can_post.py +8 -0
  46. punkweb_bb/tests.py +5 -5
  47. punkweb_bb/urls.py +29 -0
  48. punkweb_bb/utils.py +17 -0
  49. punkweb_bb/views.py +258 -45
  50. {punkweb_bb-0.1.4.dist-info → punkweb_bb-0.2.1.dist-info}/METADATA +2 -2
  51. {punkweb_bb-0.1.4.dist-info → punkweb_bb-0.2.1.dist-info}/RECORD +54 -35
  52. {punkweb_bb-0.1.4.dist-info → punkweb_bb-0.2.1.dist-info}/LICENSE +0 -0
  53. {punkweb_bb-0.1.4.dist-info → punkweb_bb-0.2.1.dist-info}/WHEEL +0 -0
  54. {punkweb_bb-0.1.4.dist-info → punkweb_bb-0.2.1.dist-info}/top_level.txt +0 -0
punkweb_bb/utils.py ADDED
@@ -0,0 +1,17 @@
1
+ from django.utils.text import slugify
2
+
3
+
4
+ def get_unique_slug(model, field):
5
+ base_slug = slugify(field)
6
+ slug = base_slug
7
+ unique_slug_exists = True
8
+
9
+ counter = 1
10
+ while unique_slug_exists:
11
+ if model.objects.filter(slug=slug).exists():
12
+ slug = f"{base_slug}-{counter}"
13
+ counter += 1
14
+ else:
15
+ unique_slug_exists = False
16
+
17
+ return slug
punkweb_bb/views.py CHANGED
@@ -4,54 +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
- from punkweb_bb.guests import guest_list
10
10
  from punkweb_bb.forms import (
11
11
  BoardProfileModelForm,
12
+ CategoryModelForm,
12
13
  LoginForm,
13
14
  PostModelForm,
14
15
  ShoutModelForm,
15
16
  SignUpForm,
17
+ SubcategoryModelForm,
16
18
  ThreadModelForm,
17
19
  )
20
+ from punkweb_bb.guests import guest_list
18
21
  from punkweb_bb.models import Category, Post, Shout, Subcategory, Thread
19
22
  from punkweb_bb.pagination import paginate_qs
20
23
  from punkweb_bb.response import htmx_redirect
24
+ from punkweb_bb.utils import get_unique_slug
21
25
 
22
26
  User = get_user_model()
23
27
 
24
28
 
25
- def index_view(request):
26
- categories = Category.objects.all()
27
-
28
- recent_threads = Thread.objects.all().order_by("-created_at")[:5]
29
+ def signup_view(request):
30
+ if request.user.is_authenticated:
31
+ return redirect("punkweb_bb:index")
29
32
 
30
- thread_count = Thread.objects.count()
31
- post_count = Post.objects.count()
33
+ if request.method == "POST":
34
+ form = SignUpForm(request.POST)
32
35
 
33
- users = User.objects.select_related("profile").all()
34
- newest_user = users.order_by("-profile__created_at").first()
36
+ if form.is_valid():
37
+ form.save()
35
38
 
36
- users_online = [user for user in users if user.profile.is_online]
37
- members_online = [user for user in users_online if not user.is_staff]
38
- staff_online = [user for user in users_online if user.is_staff]
39
- guests_online = guest_list.length()
40
- total_online = len(members_online) + len(staff_online) + guests_online
39
+ return redirect("punkweb_bb:login")
40
+ else:
41
+ form = SignUpForm()
41
42
 
42
43
  context = {
43
- "categories": categories,
44
- "recent_threads": recent_threads,
45
- "thread_count": thread_count,
46
- "post_count": post_count,
47
- "users": users,
48
- "newest_user": newest_user,
49
- "members_online": members_online,
50
- "staff_online": staff_online,
51
- "guests_online": guests_online,
52
- "total_online": total_online,
44
+ "form": form,
53
45
  }
54
- return render(request, "punkweb_bb/index.html", context=context)
46
+ return render(request, "punkweb_bb/signup.html", context)
55
47
 
56
48
 
57
49
  def login_view(request):
@@ -85,24 +77,36 @@ def logout_view(request):
85
77
  return redirect("punkweb_bb:login")
86
78
 
87
79
 
88
- def signup_view(request):
89
- if request.user.is_authenticated:
90
- return redirect("punkweb_bb:index")
80
+ def index_view(request):
81
+ categories = Category.objects.all()
91
82
 
92
- if request.method == "POST":
93
- form = SignUpForm(request.POST)
83
+ recent_threads = Thread.objects.all().order_by("-created_at")[:5]
94
84
 
95
- if form.is_valid():
96
- form.save()
85
+ thread_count = Thread.objects.count()
86
+ post_count = Post.objects.count()
97
87
 
98
- return redirect("punkweb_bb:login")
99
- else:
100
- form = SignUpForm()
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
101
96
 
102
97
  context = {
103
- "form": form,
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,
104
108
  }
105
- return render(request, "punkweb_bb/signup.html", context)
109
+ return render(request, "punkweb_bb/index.html", context=context)
106
110
 
107
111
 
108
112
  def profile_view(request, user_id):
@@ -148,6 +152,72 @@ def settings_view(request):
148
152
  return render(request, "punkweb_bb/settings.html", context=context)
149
153
 
150
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
+
151
221
  def subcategory_view(request, subcategory_slug):
152
222
  subcategory = get_object_or_404(Subcategory, slug=subcategory_slug)
153
223
 
@@ -160,12 +230,92 @@ def subcategory_view(request, subcategory_slug):
160
230
  return render(request, "punkweb_bb/subcategory.html", context=context)
161
231
 
162
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
+
163
311
  @login_required(login_url="/login/")
164
312
  def thread_create_view(request, subcategory_slug):
165
313
  subcategory = get_object_or_404(Subcategory, slug=subcategory_slug)
166
314
 
167
- if subcategory.staff_post_only and not request.user.is_staff:
168
- return redirect(subcategory)
315
+ if not subcategory.can_post(request.user):
316
+ return HttpResponseForbidden(
317
+ "You do not have permission to post in this subcategory."
318
+ )
169
319
 
170
320
  if request.method == "POST":
171
321
  form = ThreadModelForm(request.POST)
@@ -211,7 +361,12 @@ def thread_view(request, thread_id):
211
361
 
212
362
  @login_required(login_url="/login/")
213
363
  def thread_update_view(request, thread_id):
214
- thread = get_object_or_404(Thread, pk=thread_id, user=request.user)
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
+ )
215
370
 
216
371
  if request.method == "POST":
217
372
  form = ThreadModelForm(request.POST, instance=thread)
@@ -232,7 +387,12 @@ def thread_update_view(request, thread_id):
232
387
 
233
388
  @login_required(login_url="/login/")
234
389
  def thread_delete_view(request, thread_id):
235
- thread = get_object_or_404(Thread, pk=thread_id, user=request.user)
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
+ )
236
396
 
237
397
  if request.method == "DELETE":
238
398
  thread.delete()
@@ -246,12 +406,40 @@ def thread_delete_view(request, thread_id):
246
406
  return render(request, "punkweb_bb/partials/thread_delete.html", context=context)
247
407
 
248
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
+
249
435
  @login_required(login_url="/login/")
250
436
  def post_create_view(request, thread_id):
251
437
  thread = get_object_or_404(Thread, pk=thread_id)
252
438
 
253
- if thread.is_closed:
254
- return HttpResponseForbidden("Cannot add posts to a closed thread.")
439
+ if not thread.can_post(request.user):
440
+ return HttpResponseForbidden(
441
+ "You do not have permission to post in this thread."
442
+ )
255
443
 
256
444
  form = PostModelForm(request.POST)
257
445
 
@@ -266,7 +454,10 @@ def post_create_view(request, thread_id):
266
454
 
267
455
  @login_required(login_url="/login/")
268
456
  def post_update_view(request, post_id):
269
- post = get_object_or_404(Post, pk=post_id, user=request.user)
457
+ post = get_object_or_404(Post, pk=post_id)
458
+
459
+ if not post.can_edit(request.user):
460
+ return HttpResponseForbidden("You do not have permission to change this post.")
270
461
 
271
462
  if request.method == "POST":
272
463
  form = PostModelForm(request.POST, instance=post)
@@ -288,7 +479,10 @@ def post_update_view(request, post_id):
288
479
 
289
480
  @login_required(login_url="/login/")
290
481
  def post_delete_view(request, post_id):
291
- post = get_object_or_404(Post, pk=post_id, user=request.user)
482
+ post = get_object_or_404(Post, pk=post_id)
483
+
484
+ if not post.can_delete(request.user):
485
+ return HttpResponseForbidden("You do not have permission to delete this post.")
292
486
 
293
487
  if request.method == "DELETE":
294
488
  post.delete()
@@ -340,6 +534,25 @@ def shout_create_view(request):
340
534
  )
341
535
 
342
536
 
537
+ @login_required(login_url="/login/")
538
+ def shout_delete_view(request, shout_id):
539
+ shout = get_object_or_404(Shout, pk=shout_id)
540
+
541
+ if not shout.can_delete(request.user):
542
+ return HttpResponseForbidden("You do not have permission to delete this shout.")
543
+
544
+ if request.method == "DELETE":
545
+ shout.delete()
546
+
547
+ return htmx_redirect(reverse("punkweb_bb:index"))
548
+
549
+ context = {
550
+ "shout": shout,
551
+ }
552
+
553
+ return render(request, "punkweb_bb/partials/shout_delete.html", context=context)
554
+
555
+
343
556
  def bbcode_view(request):
344
557
  codes = (
345
558
  ("Bold", "[b]Bold Text[/b]"),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: punkweb-bb
3
- Version: 0.1.4
3
+ Version: 0.2.1
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
@@ -26,7 +26,7 @@ PunkwebBB is a Django application that provides a simple and modern forum board
26
26
 
27
27
  This is the successor to [punkweb-boards](https://github.com/Punkweb/punkweb-boards).
28
28
 
29
- Check out [punkweb.net](https://punkweb.net/board/) for a live demo and more information!
29
+ Check out [punkweb.net](https://punkweb.net/board/) for documentation, support and a live demonstration of the software.
30
30
 
31
31
  ## Built with
32
32
 
@@ -4,19 +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=O1lzmgumdnSEjBKi10c7ODftIqRmvtEIdNj1IODCikk,1977
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=Y5w80EQ85Mut71xiDVMALqLXdydlTxOiZEljmnH5g-E,5519
11
+ punkweb_bb/models.py,sha256=OnZ1c0Awg-MFIdyChBH0_xvpyqMyY37-iiFp7ZlFJzw,6348
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=ebJahIZHt1fYdhxB9wWDlWj5KhzExUtaXyoFLy8uR6k,517
15
+ punkweb_bb/settings.py,sha256=poqIMn9EnPZ7CYvDB08NPlPHMpjSXJ-gCte2awmjgNc,561
16
16
  punkweb_bb/signals.py,sha256=bVdfg942Mwq-fYDZ1Z52Q0V2BCk1lgzGz8JVZFPnzJ8,365
17
- punkweb_bb/tests.py,sha256=eMvY9tnOkTd_zWs_Qs0Z6X-MtVSv4TtJSZfTy4beGp4,26368
18
- punkweb_bb/urls.py,sha256=_mRAtaZoKzPZ_uuOCFy6_lOwFCavv26p5kMKD9MH4c4,1538
19
- punkweb_bb/views.py,sha256=9g9s2rOpgfoGUdPAL9OZrWveudxOG4J5_bd9Mqd_TJI,11036
17
+ punkweb_bb/tests.py,sha256=NcTt9RPt4MegOzjryUok9FTWZda6VHB3O3FJN99Pz8s,26338
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
20
21
  punkweb_bb/widgets.py,sha256=eF6CB5nnh_6XJadpDzDKgd9incd0VIR63Rnzdr8T2n0,840
21
22
  punkweb_bb/__pycache__/__init__.cpython-311.pyc,sha256=3PyxCxoznfadaGt0a7re4j0Ky9z9hblufpcwPB85kK8,161
22
23
  punkweb_bb/__pycache__/admin.cpython-311.pyc,sha256=rAPYqRy7hAVZn3qST3ypYdulvH9IBhzWEgvbbAMIMIY,3679
@@ -24,46 +25,51 @@ punkweb_bb/__pycache__/admin_forms.cpython-311.pyc,sha256=fQgpcTP-_bouxhHrDVxFzA
24
25
  punkweb_bb/__pycache__/apps.cpython-311.pyc,sha256=lw328DOwOp1F8FWTFYb3qV1EoBNgRr_Tc4J8DXfIl-I,730
25
26
  punkweb_bb/__pycache__/bbcode_tags.cpython-311.pyc,sha256=QI4BJt5plqLMiAvlVAxibuNONi69PJFQpotpS50olro,8534
26
27
  punkweb_bb/__pycache__/context_processors.cpython-311.pyc,sha256=P7rEsodXonYexbS5vUaUKVJ9tIx1pOVk6NQWVvWNvS8,392
27
- punkweb_bb/__pycache__/forms.cpython-311.pyc,sha256=JRbtAaXyXgG9eDdBjKBkSn8qeZtdxRc7L2_ceE-MpW8,4680
28
+ punkweb_bb/__pycache__/forms.cpython-311.pyc,sha256=wZAWlEguoeOOmcDKJJgXX_oLvYwA-JwQqDyE7IGI3H0,6194
28
29
  punkweb_bb/__pycache__/guests.cpython-311.pyc,sha256=vgZJcZGyHZkllCAhXHGgajHh7YM1ntXinSed3ojIK6I,1581
29
30
  punkweb_bb/__pycache__/middleware.cpython-311.pyc,sha256=KbZ6z2Q7eCRX3dB7mnRUpn58mb_O8sXpOw_sqVfQsgM,1560
30
31
  punkweb_bb/__pycache__/mixins.cpython-311.pyc,sha256=eP1NjqDNYMYXrC45DNkrTqVAUv1vsGBrqPy5U5CB_aw,1478
31
- punkweb_bb/__pycache__/models.cpython-311.pyc,sha256=9W03p0j5_dYnQ4YffZUrN_A5-Bvkbpvfmpr5rOkzyAQ,12308
32
+ punkweb_bb/__pycache__/models.cpython-311.pyc,sha256=u52jc-tCggzLH9td-qzyxzbKRaWK6SDzGFE_7D7Mosc,13931
32
33
  punkweb_bb/__pycache__/pagination.cpython-311.pyc,sha256=r54xmtiRp5dm1n2Xa7oElMFFaYFY0RzmMuF3Er4UqEA,990
33
34
  punkweb_bb/__pycache__/parsers.cpython-311.pyc,sha256=pp8JZt9V3HhquQMGrhglwLc53GxgNFWjjSnK3Bpxf8o,5335
34
35
  punkweb_bb/__pycache__/response.cpython-311.pyc,sha256=CEPckYWZkOrdU2Vow-ni0ZrWEUBww0uJzyr_wv---mM,448
35
- punkweb_bb/__pycache__/settings.cpython-311.pyc,sha256=earWFaFtg8IPqfOz9I6wdpI9bJtxjxsTwG7LoTCPmtw,947
36
+ punkweb_bb/__pycache__/settings.cpython-311.pyc,sha256=4nTGJeWkptvoS-DcaEEpXGEeh7fLox5H1pCXkFKN8U4,1025
36
37
  punkweb_bb/__pycache__/signals.cpython-311.pyc,sha256=AHChn7hDdrOmCAwKIKKuFOY-4hyBP9uwTkyb5bnFV-Q,864
37
- punkweb_bb/__pycache__/tests.cpython-311.pyc,sha256=D5pfsajoulTkeQ4RnDEc_HZZ9AH-ZIo3cPnh6BACaHY,51829
38
- punkweb_bb/__pycache__/urls.cpython-311.pyc,sha256=80TvNUws6ip1FCts6bubO3DGQJ2yOlB-WReK-qaTnGY,2304
39
- punkweb_bb/__pycache__/views.cpython-311.pyc,sha256=IidhDNPCjZExmP26hujz3nKocJlf4bFlVxgbP2xM6Is,16108
38
+ punkweb_bb/__pycache__/tests.cpython-311.pyc,sha256=z7wbXzc3xY4lyg8II-k8fVe-UxQ2fk8XwV-wnb684wo,51768
39
+ 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
40
42
  punkweb_bb/__pycache__/widgets.cpython-311.pyc,sha256=-RcQ3JapLHw8Bbi4FP05kQJJIa7bnliKPaFpkDCOWvQ,1552
41
43
  punkweb_bb/migrations/0001_initial.py,sha256=3RGsylygBcWx1kIPhSzOb9v_2yvowsxKfxuSinKKuS0,8950
42
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
43
46
  punkweb_bb/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
47
  punkweb_bb/migrations/__pycache__/0001_initial.cpython-311.pyc,sha256=koi_VflndmTKzSXWstWBXuVEZgEeueId5NE4kOAlA4Q,6456
45
48
  punkweb_bb/migrations/__pycache__/0002_thread_view_count.cpython-311.pyc,sha256=9HRllkD8LHPXadyurYvp2UcmRFEywalUVQjiOGWizgc,815
49
+ punkweb_bb/migrations/__pycache__/0003_alter_thread_options.cpython-311.pyc,sha256=zK9keYR8PU92_sP5M78xmFJeLGwSnM5tIo09bU-IpOU,860
46
50
  punkweb_bb/migrations/__pycache__/__init__.cpython-311.pyc,sha256=sTbC1AXnh0V4BJwjcjs1ckdeYjG01I348hZwLE2HI4Y,172
47
51
  punkweb_bb/static/punkweb_bb/favicon.ico,sha256=lEfX--R9wEGPkkXgLYCsGmHuAGajigiqBXAoonxq8ZM,318
52
+ punkweb_bb/static/punkweb_bb/css/category-form.css,sha256=lvG7Lh2GGBVplKk46JAIHF1cmFLve2JT32BswmudIF8,359
48
53
  punkweb_bb/static/punkweb_bb/css/defaults.css,sha256=EsYORpHIQ8gotAdiGvBBU38i6F0mICj-OKr-JF6yYVg,1455
49
- punkweb_bb/static/punkweb_bb/css/index.css,sha256=NqpF7zNMzSrDeHw5gfbwcmeBET4TcSKQlHKSkHIEblQ,1331
54
+ punkweb_bb/static/punkweb_bb/css/index.css,sha256=Jr4P0uLQ0lhM1ujycNVYYnu6tFmFXVZUXMJxFzes-Bo,1415
50
55
  punkweb_bb/static/punkweb_bb/css/login.css,sha256=pt5ul4ycZsVB-No3c5gsQa1zVS1iAZgteN1CcllS26k,234
51
56
  punkweb_bb/static/punkweb_bb/css/members.css,sha256=1Fz0uVDbs3RnuXNjOtnGnK2jok3LEQBoPhjRYp7gNwE,395
52
57
  punkweb_bb/static/punkweb_bb/css/post-form.css,sha256=rEiYplAobLjjUYAcnjNqIjyIVhe9O5hAlPJ3STW-K14,321
53
58
  punkweb_bb/static/punkweb_bb/css/profile.css,sha256=yfNJT_D-05deqiBrdIgPeCSO_DFSL8-fGEEHnGrCIYM,916
54
59
  punkweb_bb/static/punkweb_bb/css/punkweb-modal.css,sha256=ctwo5bgbAW-k0uqrufDbqeQfAh87-BZ-5gPm8aJHeT4,1296
55
- punkweb_bb/static/punkweb_bb/css/punkweb.css,sha256=4-s3mmZa-HMiPS-pNyfMqo7RPaq1KlEewril-tQbmls,11745
60
+ punkweb_bb/static/punkweb_bb/css/punkweb.css,sha256=GhVOOVTy76IOh4WLfUQeAtG8LWhE615mSQJzro2KwZI,14557
56
61
  punkweb_bb/static/punkweb_bb/css/settings.css,sha256=ulQQFTu8slk2rYOmhvci5v-AVnguUuDhKQDhyQOsQNU,308
57
- punkweb_bb/static/punkweb_bb/css/shoutbox.css,sha256=-aPkQHelFsy8IYhURqTPEMIsd1ivS9mf-4ha3xHyAms,333
58
- punkweb_bb/static/punkweb_bb/css/subcategory.css,sha256=1wjszJbkCJL-UJRFqOWSmX4yr60ekx0YtswZouUsY7s,536
62
+ punkweb_bb/static/punkweb_bb/css/shoutbox.css,sha256=DapBIe21b6w7ugA_U1EJ-1LFb3IfnJZMw7Kc4DLxF1g,536
63
+ 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
59
65
  punkweb_bb/static/punkweb_bb/css/thread-form.css,sha256=9MfqocnamNMjeNJ-w6YTwYbm4oepeK09phFzVsg1XO8,329
60
- punkweb_bb/static/punkweb_bb/css/thread.css,sha256=E-mXoB1pXctyUyVbfnpb6RN0xCgRtxwBFr_AJ8MZ3k8,1508
66
+ punkweb_bb/static/punkweb_bb/css/thread.css,sha256=wJMQaFu-CEzHUYbp8WRCI6wWxi2CMccIT0xfuRNcFAg,1873
61
67
  punkweb_bb/static/punkweb_bb/css/typography.css,sha256=qbFGBcU-OOe7r41xeW0Gc_9x6yHxhh81XtswmFxgavc,448
62
- punkweb_bb/static/punkweb_bb/css/variables.css,sha256=VjAsNiHPpW9c6KBYvMyxd5LD7ykl4KMtvlyODfgmijA,1154
68
+ punkweb_bb/static/punkweb_bb/css/variables.css,sha256=WphZPeJgeqMYy4JYaSTX0gX-JiZh8EJlhieGOGk75DA,1193
63
69
  punkweb_bb/static/punkweb_bb/editor/bbcode-editor-content.css,sha256=c1VCTVYqvzjy-51dMZ27zp-zdZrL-2TwIEheeYQXDDw,1466
64
70
  punkweb_bb/static/punkweb_bb/editor/bbcode-editor-tags.js,sha256=pLgF7lIJnPQXpfqQnkTHBU5tjcvICDHpn2nhvzxwUqA,1624
65
71
  punkweb_bb/static/punkweb_bb/editor/bbcode-editor.css,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
- punkweb_bb/static/punkweb_bb/editor/bbcode-editor.js,sha256=hT1gwsRf3fYETmm2fLFWIJNBgVPhl_UVUEkvii7EqAE,606
72
+ punkweb_bb/static/punkweb_bb/editor/bbcode-editor.js,sha256=gnp2QdVfnflBirCS6jnuw_TYlVoMaifn_18hh4I19Jw,607
67
73
  punkweb_bb/static/punkweb_bb/img/default-profile-image.png,sha256=plGHkG9uiCmgof9Hcv7YNT0oThtDIhJtMzjbxxTtdFY,60475
68
74
  punkweb_bb/static/punkweb_bb/js/punkweb-modal.js,sha256=by7e5bpdC-KJ9HT6LqAu8c868CvI5vans4S70DuAmrs,179
69
75
  punkweb_bb/static/punkweb_bb/js/shoutbox.js,sha256=dgWq_6yzcwj9uWtvluTJeWa3bVmgtPJke48KbzL7Q1s,142
@@ -190,33 +196,46 @@ punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/office-toolba
190
196
  punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/office.min.css,sha256=EZeNIT-LMxAnrW_7M6BXuH0B8m3MoIS68tDyTxmCoP0,13148
191
197
  punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/square.min.css,sha256=vrNHEnpQJr3o8AlJ2aEhn4fsRqR4TOopE3N3-4oE2ho,10710
192
198
  punkweb_bb/static/punkweb_bb/vendor/sceditor-3.2.0/minified/themes/content/default.min.css,sha256=2jMxGiqcrAhfOtNMdqmTUtfgM6oUz5F0VJ0sUzam9CY,1016
193
- punkweb_bb/templates/punkweb_bb/base.html,sha256=Gu2ZVeP0p7GnsfXFxByXRd9LT4DNXx0O1czSGjwYg0w,4037
199
+ punkweb_bb/templates/punkweb_bb/base.html,sha256=-swjri5cx547vuLVApepf8AchoAVrK2TjwtV7lmxdZc,4426
194
200
  punkweb_bb/templates/punkweb_bb/base_modal.html,sha256=OCbtsMWeNCO0Tl1PmHCcGkwoi1OZjeIK_VhNTzMor7M,460
195
201
  punkweb_bb/templates/punkweb_bb/bbcode.html,sha256=1EGBejsOMZOPi6P39oR6E35VdqnfR6wYWeKDl4Xr_js,396
196
- punkweb_bb/templates/punkweb_bb/index.html,sha256=jflA40dpl9aId0a6E_oE2PBjlvWK25cmbN9OoePzeqM,8703
197
- punkweb_bb/templates/punkweb_bb/login.html,sha256=ZUOmbyZREzS7Sw02Lfb9zpRJQQWwJgolnj9lcBKnOtg,1087
198
- punkweb_bb/templates/punkweb_bb/members.html,sha256=ceRCRX0AN7V8d7paz9495y8aQByMUKDWVWL2GzoGbus,2729
199
- punkweb_bb/templates/punkweb_bb/profile.html,sha256=MW1JWLs_lLpg62DDcvcZJRwrHquYA5nCwQqL1v9ZGCo,2948
200
- punkweb_bb/templates/punkweb_bb/settings.html,sha256=CmmGdNddZj6Atpofcny0bwEHwTPRPC8vXXThCgsNH90,1994
201
- punkweb_bb/templates/punkweb_bb/signup.html,sha256=HP5owUfV2uEuvOccPoBa21XbjBHo0ulV6tjfgdToNLU,1167
202
- punkweb_bb/templates/punkweb_bb/subcategory.html,sha256=rLJtBKz2Zd07Lyan6fH2fn7i8bXyfVj9hpnBh6m3PS4,4950
203
- punkweb_bb/templates/punkweb_bb/thread.html,sha256=igyEa1Qz-joktKmUbgHtIY0EnxlWUCBHDdEXNTuKJDk,7595
204
- punkweb_bb/templates/punkweb_bb/thread_create.html,sha256=rLIO-ghdzHCiKJ6LCj2l4cxe9QbsMUG13ZxogYF9PUE,1537
202
+ punkweb_bb/templates/punkweb_bb/category_create.html,sha256=773uJzxVvuPmWVrW87EoQTBNoo6cyi3UBp_PZn6JY5A,1369
203
+ punkweb_bb/templates/punkweb_bb/category_update.html,sha256=GUFo19BXY8JVvxP7cWAyWiTD5Z9LohR4f6vf1jlRqfo,1467
204
+ punkweb_bb/templates/punkweb_bb/index.html,sha256=7GtrTisMrFWRVF-RGOPo20PWFDXqCIIpgUSXg7TPmHM,10470
205
+ punkweb_bb/templates/punkweb_bb/login.html,sha256=Hsmt_Y50nTOEv7hBjACXMSEmIVCl-IqDv15iE-wo2cY,1137
206
+ punkweb_bb/templates/punkweb_bb/members.html,sha256=r4wsRW8BmPi_FdUfvfgjXdFs37IOYo_mjS3gmDGhZek,2781
207
+ punkweb_bb/templates/punkweb_bb/profile.html,sha256=rK2AW91XyRi5Cag2QaN8vTqZgAXtqIQOM1Koarx2oZI,3012
208
+ punkweb_bb/templates/punkweb_bb/settings.html,sha256=pxEgQQxK1lk2UKL1W3YL-liAERo2mFgUNAJtshe13xk,2047
209
+ punkweb_bb/templates/punkweb_bb/signup.html,sha256=LMs_EwdEbBmFt4zXPt_LmtUujmBJVt0zE0LldgfhrY0,1219
210
+ punkweb_bb/templates/punkweb_bb/subcategory.html,sha256=X61wOey23LRByhNw2Od7n6pCXzT1BNRUxNQQP80187s,5848
211
+ punkweb_bb/templates/punkweb_bb/subcategory_create.html,sha256=8FhcWKiaYGIulrOaBzQ6qFMpDvsAnX_q-XJ5mKwBLW8,1521
212
+ 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
214
+ punkweb_bb/templates/punkweb_bb/thread_create.html,sha256=vCwU8GNBwy7pJ2X-jSTgqvAuqgQ_NeSvRDyieBWhP_g,1697
205
215
  punkweb_bb/templates/punkweb_bb/thread_update.html,sha256=SLL_5tceZ8ZiPbWCO9eOe_aeMgV5lQ-p6eun1_XvKwE,1730
216
+ punkweb_bb/templates/punkweb_bb/partials/category_delete.html,sha256=Re9ESmC6AHeY9aICE0zE1i7vZEDHsF577Vmsz9L7jyA,435
206
217
  punkweb_bb/templates/punkweb_bb/partials/post_delete.html,sha256=tQtQGxTF0tZA5eXqfIuO6NctsS83eEhR4ImmBLbkAXM,417
207
218
  punkweb_bb/templates/punkweb_bb/partials/post_update.html,sha256=mFidDqgTuv4LffuSa8pShXxWmiramLLMhHjsaJs1Y9k,565
219
+ punkweb_bb/templates/punkweb_bb/partials/shout_delete.html,sha256=zo-Ff-meucwC03p656VI5SI79RmS5nF-NbrFb3znPBM,421
220
+ punkweb_bb/templates/punkweb_bb/partials/subcategory_delete.html,sha256=GImRDtfuMTg6_docXHTqVqe_1NzXblnrSyivxeatlIE,447
208
221
  punkweb_bb/templates/punkweb_bb/partials/thread_delete.html,sha256=m91u_r8qTvMqR2s4VxxFHQvZt-WGgHnHzJL_1KZkX9M,425
209
- punkweb_bb/templates/punkweb_bb/shoutbox/shout_list.html,sha256=uAls--UuLgS6NPW2qEsNbutR_aoJ_AuhZ_Fkt-c8ipU,312
222
+ punkweb_bb/templates/punkweb_bb/shoutbox/shout_list.html,sha256=CDUDhuxZ0LgvP5hQzsdcC1xRJTq7cEkOjdBDMRfuMW4,736
210
223
  punkweb_bb/templates/punkweb_bb/shoutbox/shoutbox.html,sha256=J_Lp6KKcqSJr-IayyLN-p0JgMfuwbFP77g-UtcM53WI,672
211
224
  punkweb_bb/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
225
+ punkweb_bb/templatetags/can_delete.py,sha256=NiFi_VH3KKaAYxdu9cZXR9gT9SNEeLAxnbxb4R7O_Nw,137
226
+ punkweb_bb/templatetags/can_edit.py,sha256=CbnbCcmJkeHZbWbsMn5OmCXMBEa6N1KW6W1dHLQvdWM,133
227
+ punkweb_bb/templatetags/can_post.py,sha256=6J1ojqqyNX99DBZM30jQiirQxAyY5rMi05QXXQjJB7I,133
212
228
  punkweb_bb/templatetags/humanize_int.py,sha256=C4KmDG0Jv6o8rwT1RXLdWoGLddJxMxgOoRV9I2598AM,248
213
229
  punkweb_bb/templatetags/shoutbox_bbcode.py,sha256=OH-FsRTyPWZldaFypSVzPLlTrSm4XEOqQW9hBI0ROBk,310
214
230
  punkweb_bb/templatetags/__pycache__/__init__.cpython-311.pyc,sha256=VEPKwaIhqpKpSSJiotDYngAUdidDzR9PpPiHtKEl1jA,174
231
+ punkweb_bb/templatetags/__pycache__/can_delete.cpython-311.pyc,sha256=GfdHIumIAFyra6Nox6Y7AILBUW_DL7OZ0MtWWaj94mw,528
232
+ punkweb_bb/templatetags/__pycache__/can_edit.cpython-311.pyc,sha256=PJDUtJWrZWb8qgldPrC2si0QNokEhRaYnXaRk4dhuJU,524
233
+ punkweb_bb/templatetags/__pycache__/can_post.cpython-311.pyc,sha256=1IU4-Ar-kwjnB2EHQ_tJUyTFWPwTl8jsDbgnNT52zO8,524
215
234
  punkweb_bb/templatetags/__pycache__/humanize_count.cpython-311.pyc,sha256=UKD6_5RX8YpYpg-LPrgGxBkW56THsbYY51cKTYdKwRY,621
216
235
  punkweb_bb/templatetags/__pycache__/humanize_int.cpython-311.pyc,sha256=csY5ek-bevYVeM91hYFKozuKWXCTXb7M-7Bokwdxhrk,619
217
236
  punkweb_bb/templatetags/__pycache__/shoutbox_bbcode.cpython-311.pyc,sha256=Jhg9qW-nQe6IDr45rE0ZgeDYF4E61S7kYAYpbMo5ZQ8,833
218
- punkweb_bb-0.1.4.dist-info/LICENSE,sha256=YYysF07B-kyXSO7IWFB9f49ZXa6LIFUTVsR1Ogmhp8s,1507
219
- punkweb_bb-0.1.4.dist-info/METADATA,sha256=6ypsD63FEqGSzezKYpfi0ppzLVrsYv4cbGLXcjnGHdE,5107
220
- punkweb_bb-0.1.4.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
221
- punkweb_bb-0.1.4.dist-info/top_level.txt,sha256=sWuGdGnk0ejOXiFDzlBqrNs2VbPEx0_i8UwWXn4SuHU,11
222
- punkweb_bb-0.1.4.dist-info/RECORD,,
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,,