forked from CGM_Public/pretix_original
API: Fix overriding date_admission during event clone
This commit is contained in:
@@ -411,6 +411,7 @@ class CloneEventSerializer(EventSerializer):
|
|||||||
has_subevents = validated_data.pop('has_subevents', None)
|
has_subevents = validated_data.pop('has_subevents', None)
|
||||||
tz = validated_data.pop('timezone', None)
|
tz = validated_data.pop('timezone', None)
|
||||||
sales_channels = validated_data.pop('sales_channels', 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})
|
new_event = super().create({**validated_data, 'plugins': None})
|
||||||
|
|
||||||
event = Event.objects.filter(slug=self.context['event'], organizer=self.context['organizer'].pk).first()
|
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
|
new_event.sales_channels = sales_channels
|
||||||
if has_subevents is not None:
|
if has_subevents is not None:
|
||||||
new_event.has_subevents = has_subevents
|
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()
|
new_event.save()
|
||||||
if tz:
|
if tz:
|
||||||
new_event.settings.timezone = tz
|
new_event.settings.timezone = tz
|
||||||
|
|||||||
@@ -261,6 +261,8 @@ class EventViewSet(viewsets.ModelViewSet):
|
|||||||
new_event.sales_channels = serializer.validated_data['sales_channels']
|
new_event.sales_channels = serializer.validated_data['sales_channels']
|
||||||
if 'has_subevents' in serializer.validated_data:
|
if 'has_subevents' in serializer.validated_data:
|
||||||
new_event.has_subevents = serializer.validated_data['has_subevents']
|
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()
|
new_event.save()
|
||||||
if 'timezone' in serializer.validated_data:
|
if 'timezone' in serializer.validated_data:
|
||||||
new_event.settings.timezone = serializer.validated_data['timezone']
|
new_event.settings.timezone = serializer.validated_data['timezone']
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
# License for the specific language governing permissions and limitations under the License.
|
# License for the specific language governing permissions and limitations under the License.
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
from datetime import datetime
|
from datetime import datetime, timedelta
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
from unittest import mock
|
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={}',
|
'/api/v1/organizers/{}/events/?clone_from={}',
|
||||||
])
|
])
|
||||||
def test_event_create_with_clone(token_client, organizer, event, meta_prop, urlstyle):
|
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(
|
resp = token_client.post(
|
||||||
urlstyle.format(organizer.slug, event.slug),
|
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",
|
"currency": "EUR",
|
||||||
"date_from": "2018-12-27T10:00:00Z",
|
"date_from": "2018-12-27T10:00:00Z",
|
||||||
"date_to": "2018-12-28T10:00:00Z",
|
"date_to": "2018-12-28T10:00:00Z",
|
||||||
"date_admission": None,
|
"date_admission": "2018-12-27T08:00:00Z",
|
||||||
"is_public": False,
|
"is_public": False,
|
||||||
"presale_start": None,
|
"presale_start": None,
|
||||||
"presale_end": 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.plugins == 'pretix.plugins.ticketoutputpdf'
|
||||||
assert cloned_event.is_public is False
|
assert cloned_event.is_public is False
|
||||||
assert cloned_event.testmode
|
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(
|
assert organizer.events.get(slug="2030").meta_values.filter(
|
||||||
property__name=meta_prop.name, value="Conference"
|
property__name=meta_prop.name, value="Conference"
|
||||||
).exists()
|
).exists()
|
||||||
|
|||||||
Reference in New Issue
Block a user