• 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

97.06
/misago/admin/moderators/forms.py
1
from django import forms
1✔
2
from django.utils.translation import pgettext_lazy
1✔
3

4
from ...categories.enums import CategoryTree
1✔
5
from ...categories.models import Category
1✔
6
from ...permissions.models import Moderator
1✔
7
from ...users.models import Group
1✔
8
from ..forms import YesNoSwitch
1✔
9

10

11
class NewModeratorModalForm(forms.Form):
1✔
12
    moderator_type = forms.ChoiceField(
1✔
13
        label=pgettext_lazy("admin moderators form", "Moderator type"),
14
        choices=[
15
            ("group", pgettext_lazy("admin moderators form type choice", "User group")),
16
            (
17
                "user",
18
                pgettext_lazy("admin moderators form type choice", "Individual user"),
19
            ),
20
        ],
21
    )
22
    group = forms.TypedChoiceField(
1✔
23
        label=pgettext_lazy("admin moderators form", "Group"),
24
        choices=[],
25
        coerce=int,
26
        required=False,
27
    )
28
    user = forms.CharField(
1✔
29
        label=pgettext_lazy("admin moderators form", "User"),
30
        required=False,
31
    )
32

33
    def __init__(self, *args, **kwarg):
1✔
34
        super().__init__(*args, **kwarg)
1✔
35

36
        self.fields["group"].choices = []
1✔
37
        for group in Group.objects.all():
1✔
38
            self.fields["group"].choices.append((group.id, str(group)))
1✔
39

40

41
class ModeratorForm(forms.ModelForm):
1✔
42
    is_global = YesNoSwitch(
1✔
43
        label=pgettext_lazy("admin moderators form", "Is global moderator"),
44
        help_text=pgettext_lazy(
45
            "admin moderators form",
46
            "Global moderators can moderate all content they have access to. Other options have no effect if this setting is enabled.",
47
        ),
48
    )
49
    categories = forms.TypedMultipleChoiceField(
1✔
50
        label=pgettext_lazy("admin moderators form", "Moderated categories"),
51
        coerce=int,
52
        required=False,
53
    )
54

55
    class Meta:
1✔
56
        model = Moderator
1✔
57
        fields = ["is_global", "categories"]
1✔
58

59
    def __init__(self, *args, **kwarg):
1✔
60
        super().__init__(*args, **kwarg)
1✔
61

62
        self.fields["categories"].choices = get_categories_choices()
1✔
63

64

65
def get_categories_choices():
1✔
66
    categories_queryset = Category.objects.filter(
1✔
67
        level__gt=0, tree_id=CategoryTree.THREADS
68
    ).values_list("id", "name", "level")
69

70
    categories_choices = []
1✔
71
    for category_id, category_name, category_level in categories_queryset:
1✔
72
        prefix = ""
1✔
73
        if category_level > 1:
1✔
UNCOV
74
            prefix = " → " * (category_level - 1)
×
75

76
        categories_choices.append((category_id, f"{prefix}{category_name}"))
1✔
77

78
    return categories_choices
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