• 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

80.77
/apps/interactiveevents/models.py
1
from django.contrib.auth.models import AnonymousUser
1✔
2
from django.db import models
1✔
3
from django.urls import reverse
1✔
4
from django.utils.translation import gettext_lazy as _
1✔
5
from django_ckeditor_5.fields import CKEditor5Field
1✔
6

7
from adhocracy4 import transforms
1✔
8
from adhocracy4.categories.fields import CategoryField
1✔
9
from adhocracy4.images.fields import ConfiguredImageField
1✔
10
from adhocracy4.models.base import TimeStampedModel
1✔
11
from adhocracy4.modules import models as module_models
1✔
12

13

14
class AnonymousItem(TimeStampedModel):
1✔
15
    module = models.ForeignKey(module_models.Module, on_delete=models.CASCADE)
1✔
16

17
    @property
1✔
18
    def project(self):
1✔
19
        return self.module.project
×
20

21
    @property
1✔
22
    def creator(self):
1✔
23
        return AnonymousUser()
×
24

25
    @creator.setter
1✔
26
    def creator(self, value):
1✔
27
        pass
×
28

29
    class Meta:
1✔
30
        abstract = True
1✔
31

32

33
class LikeQuerySet(models.QuerySet):
1✔
34
    def annotate_like_count(self):
1✔
35
        return self.annotate(
×
36
            like_count=models.Count("livequestion_likes", distinct=True)
37
        )
38

39

40
class LiveQuestion(AnonymousItem):
1✔
41
    text = models.TextField(max_length=1000, verbose_name=_("Question"))
1✔
42
    is_answered = models.BooleanField(default=False)
1✔
43
    is_on_shortlist = models.BooleanField(default=False)
1✔
44
    is_hidden = models.BooleanField(default=False)
1✔
45
    is_live = models.BooleanField(default=False)
1✔
46

47
    category = CategoryField(verbose_name=_("Characteristic"))
1✔
48

49
    objects = LikeQuerySet.as_manager()
1✔
50

51
    def __str__(self):
1✔
52
        return str(self.text)
×
53

54
    def get_absolute_url(self):
1✔
55
        return reverse(
×
56
            "module-detail",
57
            args=[str(self.module.project.organisation.slug), str(self.module.slug)],
58
        )
59

60

61
class Like(models.Model):
1✔
62
    session = models.CharField(max_length=255)
1✔
63
    livequestion = models.ForeignKey(
1✔
64
        LiveQuestion, related_name="livequestion_likes", on_delete=models.CASCADE
65
    )
66
    created = models.DateTimeField(auto_now_add=True)
1✔
67

68
    class Meta:
1✔
69
        unique_together = ("session", "livequestion")
1✔
70

71

72
class ExtraFieldsInteractiveEvent(module_models.Item):
1✔
73
    live_stream = CKEditor5Field(
1✔
74
        verbose_name="Live Stream", blank=True, config_name="video-editor"
75
    )
76

77
    event_image = ConfiguredImageField(
1✔
78
        "eventimage",
79
        verbose_name=_("Event image"),
80
        help_prefix=_("The image is displayed next to the event description."),
81
        upload_to="interactiveevents/images",
82
        blank=True,
83
    )
84

85
    def save(self, update_fields=None, *args, **kwargs):
1✔
86
        self.live_stream = transforms.clean_html_field(self.live_stream, "video-editor")
×
87
        if update_fields:
×
88
            update_fields = {"live_stream"}.union(update_fields)
×
89
        super().save(update_fields=update_fields, *args, **kwargs)
×
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