upgrade to new pretix, remove download, add page links

This commit is contained in:
_Bastler
2023-12-15 22:09:23 +01:00
parent f106e3ce4f
commit d1bd82080a
25 changed files with 528 additions and 137 deletions
+93 -20
View File
@@ -1,32 +1,105 @@
from django.dispatch import receiver
from django.urls import resolve, reverse
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from pretix.base.signals import (register_mail_placeholders, register_ticket_outputs)
from pretix.base.models import Order
from pretix.base.signals import register_mail_placeholders, register_ticket_outputs
from pretix.base.email import SimpleFunctionalMailTextPlaceholder
from pretix.control.signals import nav_event_settings
from pretix.presale.signals import order_info_top
from django.template.loader import get_template
from pretix.base.signals import register_mail_placeholders, register_ticket_outputs
from pretix.base.email import SimpleFunctionalMailTextPlaceholder
from pretix.control.signals import nav_event_settings
@receiver(register_mail_placeholders, dispatch_uid="pretix_digital_items_mail_placeholder")
@receiver(
register_mail_placeholders, dispatch_uid="pretix_digital_items_mail_placeholder"
)
def register_mail_secrets(sender, **kwargs):
token_mail_format = "{name}: {secret}"
if sender.settings.digitalitems_token_mail_format:
token_mail_format = sender.settings.digitalitems_token_mail_format
return SimpleFunctionalMailTextPlaceholder('secrets', ['order'], lambda order: '\n' + '\n\n'.join(token_mail_format.format(secret = position.secret, name = str(position.item.name)) for position in order.positions.all() if position.item.admission), '\nej7f73xs8vfmwvkk2p73yeve4fueq849\n\np8yct9752a897rpsmqzf7beby34a2w25\n\nwwqxtw6guy5s8c5tdarfhyez2ft2juap')
token_mail_format = "{name}: {secret}"
if sender.settings.digitalitems_token_mail_format:
token_mail_format = sender.settings.digitalitems_token_mail_format
return SimpleFunctionalMailTextPlaceholder(
"secrets",
["order"],
lambda order: "\n"
+ "\n\n".join(
token_mail_format.format(
secret=position.secret, name=str(position.item.name)
)
for position in order.positions.all()
if position.item.admission
),
"\nej7f73xs8vfmwvkk2p73yeve4fueq849\n\np8yct9752a897rpsmqzf7beby34a2w25\n\nwwqxtw6guy5s8c5tdarfhyez2ft2juap",
)
@receiver(register_ticket_outputs, dispatch_uid="pretix_digital_items_ticket_output")
def register_ticket_outputs(sender, **kwargs):
from .textticketoutput import TextTicketOutput
return TextTicketOutput
@receiver(nav_event_settings, dispatch_uid='pretix_digital_items_nav_settings')
# @receiver(register_ticket_outputs, dispatch_uid="pretix_digital_items_ticket_output")
# def register_ticket_outputs(sender, **kwargs):
# from .textticketoutput import TextTicketOutput
#
# return TextTicketOutput
@receiver(nav_event_settings, dispatch_uid="pretix_digital_items_nav_settings")
def navbar_settings(sender, request, **kwargs):
url = resolve(request.path_info)
return [{
'label': _('Digital Items'),
'url': reverse('plugins:pretix_digital_items:settings', kwargs={
'event': request.event.slug,
'organizer': request.organizer.slug,
}),
'active': url.namespace == 'plugins:pretix_digital_items' and url.url_name == 'settings',
}]
return [
{
"label": _("Digital Items"),
"url": reverse(
"plugins:pretix_digital_items:settings",
kwargs={
"event": request.event.slug,
"organizer": request.organizer.slug,
},
),
"active": url.namespace == "plugins:pretix_digital_items"
and url.url_name == "settings",
}
]
@receiver(order_info_top, dispatch_uid="pretix_digital_items_order_tokens")
def list_tokens(sender, request, order: Order, **kwargs):
if (order.status != Order.STATUS_PAID) or not order.positions.exists():
return
positions = [
p for p in order.positions.filter(item__admission=True, addon_to__isnull=True)
]
if not positions:
return
token_url_format = "http://localhost?token={secret}"
if sender.settings.digitalitems_token_url_format:
token_url_format = sender.settings.digitalitems_token_url_format
tokenUrls = list(
map(
lambda position: token_url_format.format(
secret=position.secret, name=str(position.item.name)
),
positions,
)
)
checkins = list(
map(
lambda position: position.checkins.count() != 0,
positions,
)
)
data = zip(positions, tokenUrls, checkins)
template = get_template("pretix_digital_items/tokens.html")
ctx = {
"data": data,
}
return template.render(ctx, request=request)