Add property SubEvent.is_public

This commit is contained in:
Raphael Michel
2019-04-23 10:46:09 +02:00
parent 5bdc9011c1
commit ee495f2777
7 changed files with 50 additions and 19 deletions

View File

@@ -199,7 +199,7 @@ class SubEventSerializer(I18nAwareModelSerializer):
class Meta:
model = SubEvent
fields = ('id', 'name', 'date_from', 'date_to', 'active', 'date_admission',
'presale_start', 'presale_end', 'location', 'event',
'presale_start', 'presale_end', 'location', 'event', 'is_public',
'item_price_overrides', 'variation_price_overrides', 'meta_data')
def validate(self, data):

View File

@@ -0,0 +1,21 @@
# Generated by Django 2.2 on 2019-04-23 08:39
from django.db import migrations, models
import django.db.models.deletion
import jsonfallback.fields
import pretix.base.models.fields
class Migration(migrations.Migration):
dependencies = [
('pretixbase', '0117_auto_20190418_1149'),
]
operations = [
migrations.AddField(
model_name='subevent',
name='is_public',
field=models.BooleanField(default=True, help_text='If selected, this event will show up publicly on the list of dates for your event.', verbose_name='Show in lists'),
),
]

View File

@@ -639,22 +639,6 @@ class Event(EventMixin, LoggedModel):
irs = self.get_invoice_renderers()
return irs[self.settings.invoice_renderer]
@property
def active_subevents(self):
"""
Returns a queryset of active subevents.
"""
return self.subevents.filter(active=True).order_by('-date_from', 'name')
@property
def active_future_subevents(self):
return self.subevents.filter(
Q(active=True) & (
Q(Q(date_to__isnull=True) & Q(date_from__gte=now()))
| Q(date_to__gte=now())
)
).order_by('date_from', 'name')
def subevents_annotated(self, channel):
return SubEvent.annotated(self.subevents, channel)
@@ -667,7 +651,7 @@ class Event(EventMixin, LoggedModel):
'name_descending': ('-name', 'date_from'),
}[ordering]
subevs = queryset.filter(
Q(active=True) & (
Q(active=True) & Q(is_public=True) & (
Q(Q(date_to__isnull=True) & Q(date_from__gte=now() - timedelta(hours=24)))
| Q(date_to__gte=now() - timedelta(hours=24))
)
@@ -833,6 +817,8 @@ class SubEvent(EventMixin, LoggedModel):
:type event: Event
:param active: Whether to show the subevent
:type active: bool
:param is_public: Whether to show the subevent in lists
:type is_public: bool
:param name: This event's full title
:type name: str
:param date_from: The datetime this event starts
@@ -851,6 +837,10 @@ class SubEvent(EventMixin, LoggedModel):
active = models.BooleanField(default=False, verbose_name=_("Active"),
help_text=_("Only with this checkbox enabled, this date is visible in the "
"frontend to users."))
is_public = models.BooleanField(default=True,
verbose_name=_("Show in lists"),
help_text=_("If selected, this event will show up publicly on the list of dates "
"for your event."))
name = I18nCharField(
max_length=200,
verbose_name=_("Name"),

View File

@@ -128,6 +128,7 @@ class EventListMixin:
tz = pytz.timezone(self.request.event.settings.timezone)
next_sev = self.request.event.subevents.filter(
active=True,
is_public=True,
date_from__gte=now()
).select_related('event').order_by('date_from').first()
@@ -152,6 +153,7 @@ class EventListMixin:
event__is_public=True,
event__live=True,
active=True,
is_public=True,
date_from__gte=now()
), self.request).select_related('event').order_by('date_from').first()
@@ -261,7 +263,7 @@ def add_events_for_days(request, baseqs, before, after, ebd, timezones):
def add_subevents_for_days(qs, before, after, ebd, timezones, event=None, cart_namespace=None):
qs = qs.filter(active=True).filter(
qs = qs.filter(active=True, is_public=True).filter(
Q(Q(date_to__gte=before) & Q(date_from__lte=after)) |
Q(Q(date_from__lte=after) & Q(date_to__gte=before)) |
Q(Q(date_to__isnull=True) & Q(date_from__gte=before) & Q(date_from__lte=after))
@@ -382,6 +384,7 @@ class OrganizerIcalDownload(OrganizerViewMixin, View):
event__organizer=self.request.organizer,
event__is_public=True,
event__live=True,
is_public=True,
active=True
),
request