diff --git a/src/pretix/api/serializers/event.py b/src/pretix/api/serializers/event.py index ab32f42db..4cbcd5757 100644 --- a/src/pretix/api/serializers/event.py +++ b/src/pretix/api/serializers/event.py @@ -411,6 +411,7 @@ class CloneEventSerializer(EventSerializer): has_subevents = validated_data.pop('has_subevents', None) tz = validated_data.pop('timezone', None) sales_channels = validated_data.pop('sales_channels', None) + date_admission = validated_data.pop('date_admission', None) new_event = super().create({**validated_data, 'plugins': None}) event = Event.objects.filter(slug=self.context['event'], organizer=self.context['organizer'].pk).first() @@ -426,6 +427,10 @@ class CloneEventSerializer(EventSerializer): new_event.sales_channels = sales_channels if has_subevents is not None: new_event.has_subevents = has_subevents + if has_subevents is not None: + new_event.has_subevents = has_subevents + if date_admission is not None: + new_event.date_admission = date_admission new_event.save() if tz: new_event.settings.timezone = tz diff --git a/src/pretix/api/views/event.py b/src/pretix/api/views/event.py index bb71347ec..ddbd4f559 100644 --- a/src/pretix/api/views/event.py +++ b/src/pretix/api/views/event.py @@ -261,6 +261,8 @@ class EventViewSet(viewsets.ModelViewSet): new_event.sales_channels = serializer.validated_data['sales_channels'] if 'has_subevents' in serializer.validated_data: new_event.has_subevents = serializer.validated_data['has_subevents'] + if 'date_admission' in serializer.validated_data: + new_event.date_admission = serializer.validated_data['date_admission'] new_event.save() if 'timezone' in serializer.validated_data: new_event.settings.timezone = serializer.validated_data['timezone'] diff --git a/src/tests/api/test_events.py b/src/tests/api/test_events.py index 519fe06ea..a043cde61 100644 --- a/src/tests/api/test_events.py +++ b/src/tests/api/test_events.py @@ -33,7 +33,7 @@ # License for the specific language governing permissions and limitations under the License. import copy -from datetime import datetime +from datetime import datetime, timedelta from decimal import Decimal from unittest import mock @@ -372,6 +372,8 @@ def test_event_create(team, token_client, organizer, event, meta_prop): '/api/v1/organizers/{}/events/?clone_from={}', ]) def test_event_create_with_clone(token_client, organizer, event, meta_prop, urlstyle): + event.date_admission = event.date_from - timedelta(hours=1) + event.save() resp = token_client.post( urlstyle.format(organizer.slug, event.slug), { @@ -384,7 +386,7 @@ def test_event_create_with_clone(token_client, organizer, event, meta_prop, urls "currency": "EUR", "date_from": "2018-12-27T10:00:00Z", "date_to": "2018-12-28T10:00:00Z", - "date_admission": None, + "date_admission": "2018-12-27T08:00:00Z", "is_public": False, "presale_start": None, "presale_end": None, @@ -407,6 +409,7 @@ def test_event_create_with_clone(token_client, organizer, event, meta_prop, urls assert cloned_event.plugins == 'pretix.plugins.ticketoutputpdf' assert cloned_event.is_public is False assert cloned_event.testmode + assert cloned_event.date_admission.isoformat() == "2018-12-27T08:00:00+00:00" assert organizer.events.get(slug="2030").meta_values.filter( property__name=meta_prop.name, value="Conference" ).exists()