diff --git a/src/pretix/api/serializers/event.py b/src/pretix/api/serializers/event.py index ff953320f..b6e970073 100644 --- a/src/pretix/api/serializers/event.py +++ b/src/pretix/api/serializers/event.py @@ -472,7 +472,8 @@ class SubEventSerializer(I18nAwareModelSerializer): fields = ('id', 'name', 'date_from', 'date_to', 'active', 'date_admission', 'presale_start', 'presale_end', 'location', 'geo_lat', 'geo_lon', 'event', 'is_public', 'frontpage_text', 'seating_plan', 'item_price_overrides', 'variation_price_overrides', - 'meta_data', 'seat_category_mapping', 'last_modified', 'best_availability_state') + 'meta_data', 'seat_category_mapping', 'last_modified', 'best_availability_state', + 'comment') def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/src/pretix/base/migrations/0262_subevent_comment.py b/src/pretix/base/migrations/0262_subevent_comment.py new file mode 100644 index 000000000..960bda064 --- /dev/null +++ b/src/pretix/base/migrations/0262_subevent_comment.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.10 on 2024-04-19 14:44 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("pretixbase", "0261_userknownloginsource"), + ] + + operations = [ + migrations.AddField( + model_name="subevent", + name="comment", + field=models.TextField(null=True), + ), + ] diff --git a/src/pretix/base/models/event.py b/src/pretix/base/models/event.py index 93fe9d09d..aac35cb74 100644 --- a/src/pretix/base/models/event.py +++ b/src/pretix/base/models/event.py @@ -1465,6 +1465,10 @@ class SubEvent(EventMixin, LoggedModel): items = models.ManyToManyField('Item', through='SubEventItem') variations = models.ManyToManyField('ItemVariation', through='SubEventItemVariation') + comment = models.TextField( + verbose_name=_("Internal comment"), + null=True, blank=True + ) last_modified = models.DateTimeField( auto_now=True, db_index=True diff --git a/src/pretix/control/forms/filter.py b/src/pretix/control/forms/filter.py index 4e3be59a3..9d6771fb0 100644 --- a/src/pretix/control/forms/filter.py +++ b/src/pretix/control/forms/filter.py @@ -1231,7 +1231,7 @@ class SubEventFilterForm(FilterForm): if fdata.get('query'): query = fdata.get('query') qs = qs.filter( - Q(name__icontains=i18ncomp(query)) | Q(location__icontains=query) + Q(name__icontains=i18ncomp(query)) | Q(location__icontains=query) | Q(comment__icontains=query) ) if fdata.get('date_until'): diff --git a/src/pretix/control/forms/subevents.py b/src/pretix/control/forms/subevents.py index 4565c00c0..5e1f28f77 100644 --- a/src/pretix/control/forms/subevents.py +++ b/src/pretix/control/forms/subevents.py @@ -68,6 +68,7 @@ class SubEventForm(I18nModelForm): 'presale_end', 'location', 'frontpage_text', + 'comment', 'geo_lat', 'geo_lon', ] @@ -136,7 +137,7 @@ class SubEventBulkEditForm(I18nModelForm): self.fields[k].widget.attrs['placeholder'] = '' self.fields[k].one_required = False - for k in ('geo_lat', 'geo_lon'): + for k in ('geo_lat', 'geo_lon', 'comment'): # scalar fields if k in self.mixed_values: self.fields[k].widget.attrs['placeholder'] = '[{}]'.format(_('Selection contains various values')) @@ -166,6 +167,7 @@ class SubEventBulkEditForm(I18nModelForm): 'name', 'location', 'frontpage_text', + 'comment', 'geo_lat', 'geo_lon', 'is_public', diff --git a/src/pretix/control/templates/pretixcontrol/subevents/bulk_edit.html b/src/pretix/control/templates/pretixcontrol/subevents/bulk_edit.html index 4df48ebee..5025e95c0 100644 --- a/src/pretix/control/templates/pretixcontrol/subevents/bulk_edit.html +++ b/src/pretix/control/templates/pretixcontrol/subevents/bulk_edit.html @@ -70,6 +70,7 @@ {% bootstrap_field form.frontpage_text layout="bulkedit" %} {% bootstrap_field form.is_public layout="bulkedit" %} + {% bootstrap_field form.comment layout="bulkedit" %} {% if meta_forms %}
diff --git a/src/pretix/control/templates/pretixcontrol/subevents/detail.html b/src/pretix/control/templates/pretixcontrol/subevents/detail.html index 153210895..9a7466c85 100644 --- a/src/pretix/control/templates/pretixcontrol/subevents/detail.html +++ b/src/pretix/control/templates/pretixcontrol/subevents/detail.html @@ -29,6 +29,7 @@ {% bootstrap_field form.date_admission layout="control" %} {% bootstrap_field form.frontpage_text layout="control" %} {% bootstrap_field form.is_public layout="control" %} + {% bootstrap_field form.comment layout="control" %} {% if meta_forms %}
diff --git a/src/pretix/control/templates/pretixcontrol/subevents/index.html b/src/pretix/control/templates/pretixcontrol/subevents/index.html index ea0ad09dd..62aa0c0fa 100644 --- a/src/pretix/control/templates/pretixcontrol/subevents/index.html +++ b/src/pretix/control/templates/pretixcontrol/subevents/index.html @@ -138,6 +138,9 @@ · {{ k }}: {{ v }} {% endif %} {% endfor %} + {% if s.comment %} +
{{ s.comment|linebreaksbr }} + {% endif %} diff --git a/src/pretix/control/views/subevents.py b/src/pretix/control/views/subevents.py index 0686596f1..298e05008 100644 --- a/src/pretix/control/views/subevents.py +++ b/src/pretix/control/views/subevents.py @@ -1440,6 +1440,7 @@ class SubEventBulkEdit(SubEventQueryMixin, EventPermissionRequiredMixin, FormVie 'name', 'location', 'frontpage_text', + 'comment', 'geo_lat', 'geo_lon', 'is_public', diff --git a/src/tests/api/test_subevents.py b/src/tests/api/test_subevents.py index d9a486abc..2247abd7a 100644 --- a/src/tests/api/test_subevents.py +++ b/src/tests/api/test_subevents.py @@ -104,6 +104,7 @@ TEST_SUBEVENT_RES = { "geo_lon": None, 'is_public': True, 'item_price_overrides': [], + 'comment': None, 'meta_data': {'type': 'Workshop'} }