Add full attendee address as PDF variable

This commit is contained in:
Raphael Michel
2020-05-27 12:36:43 +02:00
parent 9e93560f7c
commit 435b32a6b8
2 changed files with 33 additions and 0 deletions

View File

@@ -1165,6 +1165,33 @@ class AbstractPosition(models.Model):
scheme = PERSON_NAME_SCHEMES[self.event.settings.name_scheme]
return scheme['concatenation'](self.attendee_name_parts).strip()
@property
def state_name(self):
sd = pycountry.subdivisions.get(code='{}-{}'.format(self.country, self.state))
if sd:
return sd.name
return self.state
@property
def state_for_address(self):
from pretix.base.settings import COUNTRIES_WITH_STATE_IN_ADDRESS
if not self.state or str(self.country) not in COUNTRIES_WITH_STATE_IN_ADDRESS:
return ""
if COUNTRIES_WITH_STATE_IN_ADDRESS[str(self.country)][1] == 'long':
return self.state_name
return self.state
def address_format(self):
lines = [
self.attendee_name,
self.company,
self.street,
self.zipcode + ' ' + (self.city or '') + ' ' + (self.state_for_address or ''),
self.country.name
]
lines = [r.strip() for r in lines if r]
return '\n'.join(lines).strip()
class OrderPayment(models.Model):
"""

View File

@@ -114,6 +114,12 @@ DEFAULT_VARIABLES = OrderedDict((
"editor_sample": _("Sample company"),
"evaluate": lambda op, order, ev: op.company or (op.addon_to.company if op.addon_to else '')
}),
('shipping_address', {
'label': _('Full attendee address'),
'editor_sample': _('John Doe\nSample company\nSesame Street 42\n12345 Any City\nAtlantis'),
'evaluate': lambda op, order, event: order.shipping_address.format() if hasattr(
order, 'shipping_address') else ''
}),
("attendee_country", {
"label": _("Attendee country"),
"editor_sample": 'Atlantis',