membershipworks: Expose EventExtQuerySet methods on EventExtManager
This commit is contained in:
parent
0eab482893
commit
21fe7f66cd
@ -448,32 +448,37 @@ class EventExtQuerySet(models.QuerySet["EventExt"]):
|
||||
|
||||
class EventExtManager(models.Manager["EventExt"]):
|
||||
def get_queryset(self) -> models.QuerySet["EventExt"]:
|
||||
return EventExtQuerySet(self.model, using=self._db).annotate(
|
||||
meeting_times__count=Subquery(
|
||||
EventMeetingTime.objects.filter(event=OuterRef("pk"))
|
||||
.values("event__pk")
|
||||
.annotate(d=Count("pk"))
|
||||
.values("d")[:1],
|
||||
output_field=models.IntegerField(),
|
||||
),
|
||||
duration=Subquery(
|
||||
EventMeetingTime.objects.filter(event=OuterRef("pk"))
|
||||
.values("event__pk")
|
||||
.annotate(d=Sum("duration"))
|
||||
.values("d")[:1],
|
||||
output_field=models.DurationField(),
|
||||
),
|
||||
person_hours=ExpressionWrapper(
|
||||
ExpressionWrapper(F("duration"), models.IntegerField()) * F("count"),
|
||||
models.DurationField(),
|
||||
),
|
||||
return (
|
||||
super()
|
||||
.get_queryset()
|
||||
.annotate(
|
||||
meeting_times__count=Subquery(
|
||||
EventMeetingTime.objects.filter(event=OuterRef("pk"))
|
||||
.values("event__pk")
|
||||
.annotate(d=Count("pk"))
|
||||
.values("d")[:1],
|
||||
output_field=models.IntegerField(),
|
||||
),
|
||||
duration=Subquery(
|
||||
EventMeetingTime.objects.filter(event=OuterRef("pk"))
|
||||
.values("event__pk")
|
||||
.annotate(d=Sum("duration"))
|
||||
.values("d")[:1],
|
||||
output_field=models.DurationField(),
|
||||
),
|
||||
person_hours=ExpressionWrapper(
|
||||
ExpressionWrapper(F("duration"), models.IntegerField())
|
||||
* F("count"),
|
||||
models.DurationField(),
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class EventExt(Event):
|
||||
"""Extension of `Event` to capture some fields not supported in MembershipWorks"""
|
||||
|
||||
objects = EventExtManager()
|
||||
objects = EventExtManager.from_queryset(EventExtQuerySet)()
|
||||
|
||||
instructor = models.ForeignKey(
|
||||
EventInstructor, on_delete=models.PROTECT, null=True, blank=True
|
||||
|
Loading…
Reference in New Issue
Block a user