• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

rafalp / Misago / 9487666026

12 Jun 2024 06:16PM UTC coverage: 97.699% (-1.0%) from 98.716%
9487666026

push

github

web-flow
Replace forum options with account settings (#1742)

1947 of 1979 new or added lines in 68 files covered. (98.38%)

661 existing lines in 143 files now uncovered.

52601 of 53840 relevant lines covered (97.7%)

0.98 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

96.97
/misago/threads/api/postendpoints/delete.py
1
from rest_framework.response import Response
1✔
2

3
from ...moderation import posts as moderation
1✔
4
from ...permissions import (
1✔
5
    allow_delete_best_answer,
6
    allow_delete_event,
7
    allow_delete_post,
8
)
9
from ...serializers import DeletePostsSerializer
1✔
10

11

12
def delete_post(request, thread, post):
1✔
13
    if post.is_event:
1✔
14
        allow_delete_event(request.user_acl, post)
1✔
15
    else:
16
        allow_delete_best_answer(request.user_acl, post)
1✔
17
        allow_delete_post(request.user_acl, post)
1✔
18

19
    moderation.delete_post(request.user, post)
1✔
20

21
    sync_related(thread)
1✔
22
    return Response({})
1✔
23

24

25
def delete_bulk(request, thread):
1✔
26
    serializer = DeletePostsSerializer(
1✔
27
        data={"posts": request.data},
28
        context={
29
            "settings": request.settings,
30
            "thread": thread,
31
            "user_acl": request.user_acl,
32
        },
33
    )
34

35
    if not serializer.is_valid():
1✔
36
        if "posts" in serializer.errors:
1✔
37
            errors = serializer.errors["posts"]
1✔
38
        else:
UNCOV
39
            errors = list(serializer.errors.values())[0]
×
40
        # Fix for KeyError - errors[0]
41
        try:
1✔
42
            errors = errors[0]
1✔
43
        except KeyError:
1✔
44
            if errors and isinstance(errors, dict):
1✔
45
                errors = list(errors.values())[0][0]
1✔
46
        return Response({"detail": errors}, status=400)
1✔
47

48
    for post in serializer.validated_data["posts"]:
1✔
49
        post.delete()
1✔
50

51
    sync_related(thread)
1✔
52

53
    return Response({})
1✔
54

55

56
def sync_related(thread):
1✔
57
    thread.synchronize()
1✔
58
    thread.save()
1✔
59

60
    thread.category.synchronize()
1✔
61
    thread.category.save()
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc