mirror of
https://github.com/pretix/pretix.git
synced 2026-08-19 12:16:26 +00:00
Extend PDF placeholder and copying tests
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
# Generated by Django 4.2.27 on 2026-01-21 12:06
|
# Generated by Django 4.2.27 on 2026-01-21 12:06
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import i18nfield.fields
|
import i18nfield.fields
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
|||||||
+14
-9
@@ -60,6 +60,7 @@ from django.dispatch import receiver
|
|||||||
from django.utils.deconstruct import deconstructible
|
from django.utils.deconstruct import deconstructible
|
||||||
from django.utils.formats import date_format
|
from django.utils.formats import date_format
|
||||||
from django.utils.html import conditional_escape
|
from django.utils.html import conditional_escape
|
||||||
|
from django.utils.text import normalize_newlines
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
from django.utils.translation import gettext_lazy as _, pgettext
|
from django.utils.translation import gettext_lazy as _, pgettext
|
||||||
from i18nfield.strings import LazyI18nString
|
from i18nfield.strings import LazyI18nString
|
||||||
@@ -498,9 +499,9 @@ DEFAULT_VARIABLES = OrderedDict((
|
|||||||
) if op.valid_until else ""
|
) if op.valid_until else ""
|
||||||
}),
|
}),
|
||||||
("program_times", {
|
("program_times", {
|
||||||
"label": _("Program times: date and time"),
|
"label": _("Program times"),
|
||||||
"editor_sample": _(
|
"editor_sample": _(
|
||||||
"2017-05-31 10:00 – 12:00\n2017-05-31 14:00 – 16:00\n2017-05-31 14:00 – 2017-06-01 14:00"),
|
"2017-05-31 10:00 – 12:00 Room 1\n2017-05-31 14:00 – 16:00 Room 2\n2017-05-31 14:00 – 2017-06-01 14:00 Building A"),
|
||||||
"evaluate": lambda op, order, ev: get_program_times(op, ev)
|
"evaluate": lambda op, order, ev: get_program_times(op, ev)
|
||||||
}),
|
}),
|
||||||
("medium_identifier", {
|
("medium_identifier", {
|
||||||
@@ -748,13 +749,17 @@ def get_seat(op: OrderPosition):
|
|||||||
|
|
||||||
|
|
||||||
def get_program_times(op: OrderPosition, ev: Event):
|
def get_program_times(op: OrderPosition, ev: Event):
|
||||||
return '\n'.join([
|
ptstr = []
|
||||||
datetimerange(
|
for pt in op.item.program_times.all():
|
||||||
pt.start.astimezone(ev.timezone),
|
ptstr.append([
|
||||||
pt.end.astimezone(ev.timezone),
|
datetimerange(
|
||||||
as_html=False
|
pt.start.astimezone(ev.timezone),
|
||||||
) for pt in op.item.program_times.all()
|
pt.end.astimezone(ev.timezone),
|
||||||
])
|
as_html=False
|
||||||
|
),
|
||||||
|
', ' + normalize_newlines(str(pt.location)).replace('\n', ', ') if pt.location else '',
|
||||||
|
])
|
||||||
|
return '\n'.join(''.join(l) for l in ptstr)
|
||||||
|
|
||||||
|
|
||||||
def generate_compressed_addon_list(op, order, event, only_checked_in=False):
|
def generate_compressed_addon_list(op, order, event, only_checked_in=False):
|
||||||
|
|||||||
@@ -574,7 +574,7 @@ class ItemCreateForm(I18nModelForm):
|
|||||||
instance.bundles.create(bundled_item=b.bundled_item, bundled_variation=b.bundled_variation,
|
instance.bundles.create(bundled_item=b.bundled_item, bundled_variation=b.bundled_variation,
|
||||||
count=b.count, designated_price=b.designated_price)
|
count=b.count, designated_price=b.designated_price)
|
||||||
for pt in self.cleaned_data['copy_from'].program_times.all():
|
for pt in self.cleaned_data['copy_from'].program_times.all():
|
||||||
instance.program_times.create(start=pt.start, end=pt.end)
|
instance.program_times.create(start=pt.start, end=pt.end, location=pt.location)
|
||||||
|
|
||||||
item_copy_data.send(sender=self.event, source=self.cleaned_data['copy_from'], target=instance)
|
item_copy_data.send(sender=self.event, source=self.cleaned_data['copy_from'], target=instance)
|
||||||
|
|
||||||
|
|||||||
@@ -82,7 +82,11 @@ def test_full_clone_same_organizer():
|
|||||||
assert item1.meta_data
|
assert item1.meta_data
|
||||||
ItemProgramTime.objects.create(item=item1,
|
ItemProgramTime.objects.create(item=item1,
|
||||||
start=datetime.datetime(2017, 12, 27, 0, 0, 0, tzinfo=datetime.timezone.utc),
|
start=datetime.datetime(2017, 12, 27, 0, 0, 0, tzinfo=datetime.timezone.utc),
|
||||||
end=datetime.datetime(2017, 12, 28, 0, 0, 0, tzinfo=datetime.timezone.utc))
|
end=datetime.datetime(2017, 12, 28, 0, 0, 0, tzinfo=datetime.timezone.utc),
|
||||||
|
location={
|
||||||
|
"en": "Testlocation",
|
||||||
|
"de": "Testort"
|
||||||
|
})
|
||||||
assert item1.program_times
|
assert item1.program_times
|
||||||
item2 = event.items.create(category=category, tax_rule=tax_rule, name="T-shirt", default_price=15,
|
item2 = event.items.create(category=category, tax_rule=tax_rule, name="T-shirt", default_price=15,
|
||||||
hidden_if_item_available=item1)
|
hidden_if_item_available=item1)
|
||||||
@@ -169,6 +173,7 @@ def test_full_clone_same_organizer():
|
|||||||
assert copied_item1.meta_data == item1.meta_data
|
assert copied_item1.meta_data == item1.meta_data
|
||||||
assert copied_item1.program_times.first().start == item1.program_times.first().start
|
assert copied_item1.program_times.first().start == item1.program_times.first().start
|
||||||
assert copied_item1.program_times.first().end == item1.program_times.first().end
|
assert copied_item1.program_times.first().end == item1.program_times.first().end
|
||||||
|
assert copied_item1.program_times.first().location == item1.program_times.first().location
|
||||||
assert copied_item2.variations.get().meta_data == item2v.meta_data
|
assert copied_item2.variations.get().meta_data == item2v.meta_data
|
||||||
assert copied_item1.hidden_if_available == copied_q2
|
assert copied_item1.hidden_if_available == copied_q2
|
||||||
assert copied_item1.grant_membership_type == membership_type
|
assert copied_item1.grant_membership_type == membership_type
|
||||||
|
|||||||
@@ -692,7 +692,8 @@ class ItemsTest(ItemFormTest):
|
|||||||
self.item2.program_times.create(start=datetime.datetime(2017, 12, 27, 0, 0, 0,
|
self.item2.program_times.create(start=datetime.datetime(2017, 12, 27, 0, 0, 0,
|
||||||
tzinfo=datetime.timezone.utc),
|
tzinfo=datetime.timezone.utc),
|
||||||
end=datetime.datetime(2017, 12, 28, 0, 0, 0,
|
end=datetime.datetime(2017, 12, 28, 0, 0, 0,
|
||||||
tzinfo=datetime.timezone.utc))
|
tzinfo=datetime.timezone.utc),
|
||||||
|
location={"en": "Testlocation", "de": "Testort"})
|
||||||
|
|
||||||
doc = self.get_doc('/control/event/%s/%s/items/add?copy_from=%d' % (self.orga1.slug, self.event1.slug, self.item2.pk))
|
doc = self.get_doc('/control/event/%s/%s/items/add?copy_from=%d' % (self.orga1.slug, self.event1.slug, self.item2.pk))
|
||||||
data = extract_form_fields(doc.select("form")[0])
|
data = extract_form_fields(doc.select("form")[0])
|
||||||
@@ -723,6 +724,7 @@ class ItemsTest(ItemFormTest):
|
|||||||
assert set([str(v.value) for v in i_new.variations.all()]) == set([str(v.value) for v in i_old.variations.all()])
|
assert set([str(v.value) for v in i_new.variations.all()]) == set([str(v.value) for v in i_old.variations.all()])
|
||||||
assert i_old.program_times.first().start == i_new.program_times.first().start
|
assert i_old.program_times.first().start == i_new.program_times.first().start
|
||||||
assert i_old.program_times.first().end == i_new.program_times.first().end
|
assert i_old.program_times.first().end == i_new.program_times.first().end
|
||||||
|
assert i_old.program_times.first().location == i_new.program_times.first().location
|
||||||
|
|
||||||
def test_add_to_existing_quota(self):
|
def test_add_to_existing_quota(self):
|
||||||
with scopes_disabled():
|
with scopes_disabled():
|
||||||
|
|||||||
Reference in New Issue
Block a user