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

liqd / adhocracy-plus / 18908688697

29 Oct 2025 12:59PM UTC coverage: 44.622% (-44.5%) from 89.135%
18908688697

Pull #2986

github

web-flow
Merge 1dfde8ee7 into 445e1d498
Pull Request #2986: Draft: Speed up Github Ci Tests

3012 of 6750 relevant lines covered (44.62%)

0.45 hits per line

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

76.56
/apps/offlineevents/views.py
1
from django.contrib import messages
1✔
2
from django.urls import reverse
1✔
3
from django.utils.translation import gettext_lazy as _
1✔
4
from django.views import generic
1✔
5

6
from adhocracy4.dashboard import mixins
1✔
7
from adhocracy4.projects.mixins import ProjectMixin
1✔
8
from adhocracy4.rules import mixins as rules_mixins
1✔
9
from apps.contrib.views import CanonicalURLDetailView
1✔
10

11
from . import forms
1✔
12
from . import models
1✔
13

14

15
class OfflineEventDetailView(
1✔
16
    ProjectMixin, rules_mixins.PermissionRequiredMixin, CanonicalURLDetailView
17
):
18
    get_context_from_object = True
1✔
19
    model = models.OfflineEvent
1✔
20
    permission_required = "a4_candy_offlineevents.view_offlineevent"
1✔
21

22

23
class OfflineEventListView(
1✔
24
    ProjectMixin,
25
    mixins.DashboardBaseMixin,
26
    mixins.DashboardComponentMixin,
27
    generic.ListView,
28
):
29
    model = models.OfflineEvent
1✔
30
    template_name = "a4_candy_offlineevents/offlineevent_list.html"
1✔
31
    permission_required = "a4_candy_offlineevents.list_offlineevent"
1✔
32

33
    def get_queryset(self):
1✔
34
        return super().get_queryset().filter(project=self.project)
×
35

36
    def get_permission_object(self):
1✔
37
        return self.project
×
38

39

40
class OfflineEventCreateView(
1✔
41
    ProjectMixin,
42
    mixins.DashboardBaseMixin,
43
    mixins.DashboardComponentMixin,
44
    mixins.DashboardComponentFormSignalMixin,
45
    generic.CreateView,
46
):
47
    model = models.OfflineEvent
1✔
48
    form_class = forms.OfflineEventForm
1✔
49
    permission_required = "a4_candy_offlineevents.add_offlineevent"
1✔
50
    template_name = "a4_candy_offlineevents/offlineevent_create_form.html"
1✔
51

52
    def form_valid(self, form):
1✔
53
        form.instance.creator = self.request.user
×
54
        form.instance.project = self.project
×
55
        return super().form_valid(form)
×
56

57
    def get_success_url(self):
1✔
58
        return reverse(
×
59
            "a4dashboard:offlineevent-list",
60
            kwargs={
61
                "organisation_slug": self.project.organisation.slug,
62
                "project_slug": self.project.slug,
63
            },
64
        )
65

66
    def get_permission_object(self):
1✔
67
        return self.project
×
68

69

70
class OfflineEventUpdateView(
1✔
71
    ProjectMixin,
72
    mixins.DashboardBaseMixin,
73
    mixins.DashboardComponentMixin,
74
    mixins.DashboardComponentFormSignalMixin,
75
    generic.UpdateView,
76
):
77
    model = models.OfflineEvent
1✔
78
    form_class = forms.OfflineEventForm
1✔
79
    permission_required = "a4_candy_offlineevents.change_offlineevent"
1✔
80
    template_name = "a4_candy_offlineevents/offlineevent_update_form.html"
1✔
81
    get_context_from_object = True
1✔
82

83
    def get_success_url(self):
1✔
84
        return reverse(
×
85
            "a4dashboard:offlineevent-list",
86
            kwargs={
87
                "organisation_slug": self.project.organisation.slug,
88
                "project_slug": self.project.slug,
89
            },
90
        )
91

92
    @property
1✔
93
    def organisation(self):
1✔
94
        return self.project.organisation
×
95

96
    def get_permission_object(self):
1✔
97
        return self.project
×
98

99

100
class OfflineEventDeleteView(
1✔
101
    ProjectMixin,
102
    mixins.DashboardBaseMixin,
103
    mixins.DashboardComponentMixin,
104
    mixins.DashboardComponentFormSignalMixin,
105
    generic.DeleteView,
106
):
107
    model = models.OfflineEvent
1✔
108
    success_message = _("The offline event has been deleted")
1✔
109
    permission_required = "a4_candy_offlineevents.change_offlineevent"
1✔
110
    template_name = "a4_candy_offlineevents/offlineevent_confirm_delete.html"
1✔
111
    get_context_from_object = True
1✔
112

113
    def form_valid(self, request, *args, **kwargs):
1✔
114
        messages.success(self.request, self.success_message)
×
115
        return super().form_valid(request, *args, **kwargs)
×
116

117
    def get_success_url(self):
1✔
118
        return reverse(
×
119
            "a4dashboard:offlineevent-list",
120
            kwargs={
121
                "organisation_slug": self.project.organisation.slug,
122
                "project_slug": self.project.slug,
123
            },
124
        )
125

126
    @property
1✔
127
    def organisation(self):
1✔
128
        return self.project.organisation
×
129

130
    def get_permission_object(self):
1✔
131
        return self.project
×
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

© 2025 Coveralls, Inc