def base_data(self): user_orders = [{ 'code': 'F8VVL', 'secret': '6zzjnumtsx136ddy' }, { 'code': 'HIDHK', 'secret': '98kusd8ofsj8dnkd' }, { 'code': 'OPKSB', 'secret': '09pjdksflosk3njd' }] orders = [ ' - {} - {}'.format( self.generate_order_fullname(self.request.event.slug, order['code']), self.generate_order_url(order['code'], order['secret'])) for order in user_orders ] return { 'event': self.request.event.name, 'total': 42.23, 'total_with_currency': LazyCurrencyNumber(42.23, self.request.event.currency), 'currency': self.request.event.currency, 'url': self.generate_order_url(user_orders[0]['code'], user_orders[0]['secret']), 'orders': '\n'.join(orders), 'hours': self.request.event.settings.waiting_list_hours, 'product': _('Sample Admission Ticket'), 'code': '68CYU2H6ZTP3WLK5', 'invoice_name': _('John Doe'), 'invoice_company': _('Sample Corporation'), 'payment_info': _('Please transfer money to this bank account: 9999-9999-9999-9999' ) }
def base_placeholders(sender, **kwargs): from pretix.base.models import InvoiceAddress from pretix.multidomain.urlreverse import build_absolute_uri ph = [ SimpleFunctionalMailTextPlaceholder('event', ['event'], lambda event: event.name, lambda event: event.name), SimpleFunctionalMailTextPlaceholder( 'event', ['event_or_subevent'], lambda event_or_subevent: event_or_subevent.name, lambda event_or_subevent: event_or_subevent.name), SimpleFunctionalMailTextPlaceholder('event_slug', ['event'], lambda event: event.slug, lambda event: event.slug), SimpleFunctionalMailTextPlaceholder('code', ['order'], lambda order: order.code, 'F8VVL'), SimpleFunctionalMailTextPlaceholder( 'total', ['order'], lambda order: LazyNumber(order.total), lambda event: LazyNumber(Decimal('42.23'))), SimpleFunctionalMailTextPlaceholder('currency', ['event'], lambda event: event.currency, lambda event: event.currency), SimpleFunctionalMailTextPlaceholder( 'refund_amount', ['event_or_subevent', 'refund_amount'], lambda event_or_subevent, refund_amount: LazyCurrencyNumber( refund_amount, event_or_subevent.currency), lambda event_or_subevent: LazyCurrencyNumber( Decimal('42.23'), event_or_subevent.currency)), SimpleFunctionalMailTextPlaceholder( 'total_with_currency', ['event', 'order'], lambda event, order: LazyCurrencyNumber( order.total, event.currency), lambda event: LazyCurrencyNumber( Decimal('42.23'), event.currency)), SimpleFunctionalMailTextPlaceholder( 'expire_date', ['event', 'order'], lambda event, order: LazyDate( order.expires.astimezone(event.timezone)), lambda event: LazyDate(now() + timedelta(days=15)) # TODO: This used to be "date" in some placeholders, add a migration! ), SimpleFunctionalMailTextPlaceholder( 'url', ['order', 'event'], lambda order, event: build_absolute_uri( event, 'presale:event.order.open', kwargs={ 'order': order.code, 'secret': order.secret, 'hash': order.email_confirm_hash() }), lambda event: build_absolute_uri(event, 'presale:event.order.open', kwargs={ 'order': 'F8VVL', 'secret': '6zzjnumtsx136ddy', 'hash': '98kusd8ofsj8dnkd' }), ), SimpleFunctionalMailTextPlaceholder( 'url_info_change', ['order', 'event'], lambda order, event: build_absolute_uri( event, 'presale:event.order.modify', kwargs={ 'order': order.code, 'secret': order.secret, }), lambda event: build_absolute_uri(event, 'presale:event.order.modify', kwargs={ 'order': 'F8VVL', 'secret': '6zzjnumtsx136ddy', }), ), SimpleFunctionalMailTextPlaceholder( 'url_products_change', ['order', 'event'], lambda order, event: build_absolute_uri( event, 'presale:event.order.change', kwargs={ 'order': order.code, 'secret': order.secret, }), lambda event: build_absolute_uri(event, 'presale:event.order.change', kwargs={ 'order': 'F8VVL', 'secret': '6zzjnumtsx136ddy', }), ), SimpleFunctionalMailTextPlaceholder( 'url_cancel', ['order', 'event'], lambda order, event: build_absolute_uri( event, 'presale:event.order.cancel', kwargs={ 'order': order.code, 'secret': order.secret, }), lambda event: build_absolute_uri(event, 'presale:event.order.cancel', kwargs={ 'order': 'F8VVL', 'secret': '6zzjnumtsx136ddy', }), ), SimpleFunctionalMailTextPlaceholder( 'url', ['event', 'position'], lambda event, position: build_absolute_uri( event, 'presale:event.order.position', kwargs={ 'order': position.order.code, 'secret': position.web_secret, 'position': position.positionid }), lambda event: build_absolute_uri(event, 'presale:event.order.position', kwargs={ 'order': 'F8VVL', 'secret': '6zzjnumtsx136ddy', 'position': '123' }), ), SimpleFunctionalMailTextPlaceholder( 'url', ['waiting_list_entry', 'event'], lambda waiting_list_entry, event: build_absolute_uri( event, 'presale:event.redeem') + '?voucher=' + waiting_list_entry.voucher.code, lambda event: build_absolute_uri( event, 'presale:event.redeem', ) + '?voucher=68CYU2H6ZTP3WLK5', ), SimpleFunctionalMailTextPlaceholder( 'invoice_name', ['invoice_address'], lambda invoice_address: invoice_address.name or '', _('John Doe')), SimpleFunctionalMailTextPlaceholder( 'invoice_company', ['invoice_address'], lambda invoice_address: invoice_address.company or '', _('Sample Corporation')), SimpleFunctionalMailTextPlaceholder( 'orders', ['event', 'orders'], lambda event, orders: '\n' + '\n\n'.join('* {} - {}'.format( order.full_code, build_absolute_uri(event, 'presale:event.order', kwargs={ 'event': event.slug, 'organizer': event.organizer.slug, 'order': order.code, 'secret': order.secret }), ) for order in orders), lambda event: '\n' + '\n\n'.join('* {} - {}'.format( '{}-{}'.format(event.slug.upper(), order['code']), build_absolute_uri(event, 'presale:event.order', kwargs={ 'event': event.slug, 'organizer': event.organizer.slug, 'order': order['code'], 'secret': order['secret'] }), ) for order in [{ 'code': 'F8VVL', 'secret': '6zzjnumtsx136ddy' }, { 'code': 'HIDHK', 'secret': '98kusd8ofsj8dnkd' }, { 'code': 'OPKSB', 'secret': '09pjdksflosk3njd' }]), ), SimpleFunctionalMailTextPlaceholder( 'hours', ['event', 'waiting_list_entry'], lambda event, waiting_list_entry: event.settings.waiting_list_hours, lambda event: event.settings.waiting_list_hours), SimpleFunctionalMailTextPlaceholder( 'product', ['waiting_list_entry'], lambda waiting_list_entry: waiting_list_entry.item.name, _('Sample Admission Ticket')), SimpleFunctionalMailTextPlaceholder( 'code', ['waiting_list_entry'], lambda waiting_list_entry: waiting_list_entry.voucher.code, '68CYU2H6ZTP3WLK5'), SimpleFunctionalMailTextPlaceholder( 'voucher_list', ['voucher_list'], lambda voucher_list: '\n'.join(voucher_list), ' 68CYU2H6ZTP3WLK5\n 7MB94KKPVEPSMVF2'), SimpleFunctionalMailTextPlaceholder( 'url', ['event', 'voucher_list'], lambda event, voucher_list: build_absolute_uri(event, 'presale:event.index', kwargs={ 'event': event.slug, 'organizer': event.organizer.slug, }), lambda event: build_absolute_uri( event, 'presale:event.index', kwargs={ 'event': event.slug, 'organizer': event.organizer.slug, })), SimpleFunctionalMailTextPlaceholder('name', ['name'], lambda name: name, _('John Doe')), SimpleFunctionalMailTextPlaceholder( 'comment', ['comment'], lambda comment: comment, _('An individual text with a reason can be inserted here.'), ), SimpleFunctionalMailTextPlaceholder( 'payment_info', ['order', 'payment'], _placeholder_payment, _('The amount has been charged to your card.'), ), SimpleFunctionalMailTextPlaceholder( 'payment_info', ['payment_info'], lambda payment_info: payment_info, _('Please transfer money to this bank account: 9999-9999-9999-9999' ), ), SimpleFunctionalMailTextPlaceholder( 'attendee_name', ['position'], lambda position: position.attendee_name, _('John Doe'), ), SimpleFunctionalMailTextPlaceholder( 'name', ['position_or_address'], lambda position_or_address: (position_or_address.name if isinstance(position_or_address, InvoiceAddress) else position_or_address.attendee_name), _('John Doe'), ), ] name_scheme = PERSON_NAME_SCHEMES[sender.settings.name_scheme] for f, l, w in name_scheme['fields']: if f == 'full_name': continue ph.append( SimpleFunctionalMailTextPlaceholder( 'attendee_name_%s' % f, ['position'], lambda position, f=f: position.attendee_name_parts.get(f, ''), name_scheme['sample'][f])) ph.append( SimpleFunctionalMailTextPlaceholder( 'name_%s' % f, ['position_or_address'], lambda position_or_address, f=f: (position_or_address.name_parts.get(f, '') if isinstance(position_or_address, InvoiceAddress) else position_or_address.attendee_name_parts.get(f, '')), name_scheme['sample'][f])) for k, v in sender.meta_data.items(): ph.append( SimpleFunctionalMailTextPlaceholder( 'meta_%s' % k, ['event'], lambda event, k=k: event.meta_data[k], v)) return ph
def base_placeholders(sender, **kwargs): from pretix.multidomain.urlreverse import build_absolute_uri ph = [ SimpleFunctionalMailTextPlaceholder('event', ['event'], lambda event: event.name, lambda event: event.name), SimpleFunctionalMailTextPlaceholder( 'event', ['event_or_subevent'], lambda event_or_subevent: event_or_subevent.name, lambda event_or_subevent: event_or_subevent.name), SimpleFunctionalMailTextPlaceholder('event_slug', ['event'], lambda event: event.slug, lambda event: event.slug), SimpleFunctionalMailTextPlaceholder('code', ['order'], lambda order: order.code, 'F8VVL'), SimpleFunctionalMailTextPlaceholder( 'total', ['order'], lambda order: LazyNumber(order.total), lambda event: LazyNumber(Decimal('42.23'))), SimpleFunctionalMailTextPlaceholder('currency', ['event'], lambda event: event.currency, lambda event: event.currency), SimpleFunctionalMailTextPlaceholder( 'refund_amount', ['event_or_subevent', 'refund_amount'], lambda event_or_subevent, refund_amount: LazyCurrencyNumber( refund_amount, event_or_subevent.currency), lambda event_or_subevent: LazyCurrencyNumber( Decimal('42.23'), event_or_subevent.currency)), SimpleFunctionalMailTextPlaceholder( 'total_with_currency', ['event', 'order'], lambda event, order: LazyCurrencyNumber( order.total, event.currency), lambda event: LazyCurrencyNumber( Decimal('42.23'), event.currency)), SimpleFunctionalMailTextPlaceholder( 'expire_date', ['event', 'order'], lambda event, order: LazyExpiresDate( order.expires.astimezone(event.timezone)), lambda event: LazyDate(now() + timedelta(days=15))), SimpleFunctionalMailTextPlaceholder( 'url', ['order', 'event'], lambda order, event: build_absolute_uri( event, 'presale:event.order.open', kwargs={ 'order': order.code, 'secret': order.secret, 'hash': order.email_confirm_hash() }), lambda event: build_absolute_uri(event, 'presale:event.order.open', kwargs={ 'order': 'F8VVL', 'secret': '6zzjnumtsx136ddy', 'hash': '98kusd8ofsj8dnkd' }), ), SimpleFunctionalMailTextPlaceholder( 'url_info_change', ['order', 'event'], lambda order, event: build_absolute_uri( event, 'presale:event.order.modify', kwargs={ 'order': order.code, 'secret': order.secret, }), lambda event: build_absolute_uri(event, 'presale:event.order.modify', kwargs={ 'order': 'F8VVL', 'secret': '6zzjnumtsx136ddy', }), ), SimpleFunctionalMailTextPlaceholder( 'url_products_change', ['order', 'event'], lambda order, event: build_absolute_uri( event, 'presale:event.order.change', kwargs={ 'order': order.code, 'secret': order.secret, }), lambda event: build_absolute_uri(event, 'presale:event.order.change', kwargs={ 'order': 'F8VVL', 'secret': '6zzjnumtsx136ddy', }), ), SimpleFunctionalMailTextPlaceholder( 'url_cancel', ['order', 'event'], lambda order, event: build_absolute_uri( event, 'presale:event.order.cancel', kwargs={ 'order': order.code, 'secret': order.secret, }), lambda event: build_absolute_uri(event, 'presale:event.order.cancel', kwargs={ 'order': 'F8VVL', 'secret': '6zzjnumtsx136ddy', }), ), SimpleFunctionalMailTextPlaceholder( 'url', ['event', 'position'], lambda event, position: build_absolute_uri( event, 'presale:event.order.position', kwargs={ 'order': position.order.code, 'secret': position.web_secret, 'position': position.positionid }), lambda event: build_absolute_uri(event, 'presale:event.order.position', kwargs={ 'order': 'F8VVL', 'secret': '6zzjnumtsx136ddy', 'position': '123' }), ), SimpleFunctionalMailTextPlaceholder( 'event_location', ['event_or_subevent'], lambda event_or_subevent: str(event_or_subevent.location or ''), lambda event: str(event.location or ''), ), SimpleFunctionalMailTextPlaceholder( 'event_admission_time', ['event_or_subevent'], lambda event_or_subevent: date_format( event_or_subevent.date_admission, 'TIME_FORMAT') if event_or_subevent.date_admission else '', lambda event: date_format(event.date_admission, 'TIME_FORMAT') if event.date_admission else '', ), SimpleFunctionalMailTextPlaceholder( 'subevent', ['waiting_list_entry', 'event'], lambda waiting_list_entry, event: str(waiting_list_entry.subevent or event), lambda event: str(event if not event.has_subevents or not event.subevents .exists() else event.subevents.first())), SimpleFunctionalMailTextPlaceholder( 'subevent_date_from', ['waiting_list_entry', 'event'], lambda waiting_list_entry, event: (waiting_list_entry.subevent or event).get_date_from_display(), lambda event: (event if not event.has_subevents or not event.subevents.exists() else event.subevents.first()).get_date_from_display()), SimpleFunctionalMailTextPlaceholder( 'url_remove', ['waiting_list_entry', 'event'], lambda waiting_list_entry, event: build_absolute_uri( event, 'presale:event.waitinglist.remove') + '?voucher=' + waiting_list_entry.voucher.code, lambda event: build_absolute_uri( event, 'presale:event.waitinglist.remove', ) + '?voucher=68CYU2H6ZTP3WLK5', ), SimpleFunctionalMailTextPlaceholder( 'url', ['waiting_list_entry', 'event'], lambda waiting_list_entry, event: build_absolute_uri( event, 'presale:event.redeem') + '?voucher=' + waiting_list_entry.voucher.code, lambda event: build_absolute_uri( event, 'presale:event.redeem', ) + '?voucher=68CYU2H6ZTP3WLK5', ), SimpleFunctionalMailTextPlaceholder( 'invoice_name', ['invoice_address'], lambda invoice_address: invoice_address.name or '', _('John Doe')), SimpleFunctionalMailTextPlaceholder( 'invoice_company', ['invoice_address'], lambda invoice_address: invoice_address.company or '', _('Sample Corporation')), SimpleFunctionalMailTextPlaceholder( 'orders', ['event', 'orders'], lambda event, orders: '\n' + '\n\n'.join('* {} - {}'.format( order.full_code, build_absolute_uri(event, 'presale:event.order.open', kwargs={ 'event': event.slug, 'organizer': event.organizer.slug, 'order': order.code, 'secret': order.secret, 'hash': order.email_confirm_hash(), }), ) for order in orders), lambda event: '\n' + '\n\n'.join('* {} - {}'.format( '{}-{}'.format(event.slug.upper(), order['code']), build_absolute_uri(event, 'presale:event.order.open', kwargs={ 'event': event.slug, 'organizer': event.organizer.slug, 'order': order['code'], 'secret': order['secret'], 'hash': order['hash'], }), ) for order in [{ 'code': 'F8VVL', 'secret': '6zzjnumtsx136ddy', 'hash': 'abcdefghi' }, { 'code': 'HIDHK', 'secret': '98kusd8ofsj8dnkd', 'hash': 'jklmnopqr' }, { 'code': 'OPKSB', 'secret': '09pjdksflosk3njd', 'hash': 'stuvwxy2z' }]), ), SimpleFunctionalMailTextPlaceholder( 'hours', ['event', 'waiting_list_entry'], lambda event, waiting_list_entry: event.settings.waiting_list_hours, lambda event: event.settings.waiting_list_hours), SimpleFunctionalMailTextPlaceholder( 'product', ['waiting_list_entry'], lambda waiting_list_entry: waiting_list_entry.item.name, _('Sample Admission Ticket')), SimpleFunctionalMailTextPlaceholder( 'code', ['waiting_list_entry'], lambda waiting_list_entry: waiting_list_entry.voucher.code, '68CYU2H6ZTP3WLK5'), SimpleFunctionalMailTextPlaceholder( # join vouchers with two spaces at end of line so markdown-parser inserts a <br> 'voucher_list', ['voucher_list'], lambda voucher_list: ' \n'.join(voucher_list), ' 68CYU2H6ZTP3WLK5\n 7MB94KKPVEPSMVF2'), SimpleFunctionalMailTextPlaceholder( # join vouchers with two spaces at end of line so markdown-parser inserts a <br> 'voucher_url_list', ['event', 'voucher_list'], lambda event, voucher_list: ' \n'.join([ build_absolute_uri(event, 'presale:event.redeem') + '?voucher=' + c for c in voucher_list ]), lambda event: ' \n'.join([ build_absolute_uri(event, 'presale:event.redeem') + '?voucher=' + c for c in ['68CYU2H6ZTP3WLK5', '7MB94KKPVEPSMVF2'] ]), ), SimpleFunctionalMailTextPlaceholder( 'url', ['event', 'voucher_list'], lambda event, voucher_list: build_absolute_uri(event, 'presale:event.index', kwargs={ 'event': event.slug, 'organizer': event.organizer.slug, }), lambda event: build_absolute_uri( event, 'presale:event.index', kwargs={ 'event': event.slug, 'organizer': event.organizer.slug, })), SimpleFunctionalMailTextPlaceholder('name', ['name'], lambda name: name, _('John Doe')), SimpleFunctionalMailTextPlaceholder( 'comment', ['comment'], lambda comment: comment, _('An individual text with a reason can be inserted here.'), ), SimpleFunctionalMailTextPlaceholder( 'payment_info', ['order', 'payment'], _placeholder_payment, _('The amount has been charged to your card.'), ), SimpleFunctionalMailTextPlaceholder( 'payment_info', ['payment_info'], lambda payment_info: payment_info, _('Please transfer money to this bank account: 9999-9999-9999-9999' ), ), SimpleFunctionalMailTextPlaceholder( 'attendee_name', ['position'], lambda position: position.attendee_name, _('John Doe'), ), SimpleFunctionalMailTextPlaceholder( 'name', ['position_or_address'], get_best_name, _('John Doe'), ), ] name_scheme = PERSON_NAME_SCHEMES[sender.settings.name_scheme] if "concatenation_for_salutation" in name_scheme: concatenation_for_salutation = name_scheme[ "concatenation_for_salutation"] else: concatenation_for_salutation = name_scheme["concatenation"] ph.append( SimpleFunctionalMailTextPlaceholder( "name_for_salutation", ["position_or_address"], lambda position_or_address: concatenation_for_salutation( get_best_name(position_or_address, parts=True)), _("Mr Doe"), )) for f, l, w in name_scheme['fields']: if f == 'full_name': continue ph.append( SimpleFunctionalMailTextPlaceholder( 'attendee_name_%s' % f, ['position'], lambda position, f=f: get_name_parts_localized( position.attendee_name_parts, f), name_scheme['sample'][f])) ph.append( SimpleFunctionalMailTextPlaceholder( 'name_%s' % f, ['position_or_address'], lambda position_or_address, f=f: get_name_parts_localized( get_best_name(position_or_address, parts=True), f), name_scheme['sample'][f])) for k, v in sender.meta_data.items(): ph.append( SimpleFunctionalMailTextPlaceholder( 'meta_%s' % k, ['event'], lambda event, k=k: event.meta_data[k], v)) ph.append( SimpleFunctionalMailTextPlaceholder( 'meta_%s' % k, ['event_or_subevent'], lambda event_or_subevent, k=k: event_or_subevent.meta_data[k], v)) return ph