initial commit
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
from django.utils.translation import gettext_lazy
|
||||
|
||||
try:
|
||||
from pretix.base.plugins import PluginConfig
|
||||
except ImportError:
|
||||
raise RuntimeError("Please use pretix 2.7 or above to run this plugin!")
|
||||
|
||||
__version__ = '1.0.0'
|
||||
|
||||
|
||||
class PluginApp(PluginConfig):
|
||||
name = 'pretix_digital_items'
|
||||
verbose_name = 'Digital Items'
|
||||
|
||||
class PretixPluginMeta:
|
||||
name = gettext_lazy('Digital Items')
|
||||
author = '_Bastler'
|
||||
description = gettext_lazy('Sell digital Items by using secrets as tokens. Adds secrets to email placeholders, output secret as simple TXT file.')
|
||||
visible = True
|
||||
version = __version__
|
||||
category = 'FEATURE'
|
||||
compatibility = "pretix>=2.7.0"
|
||||
|
||||
def ready(self):
|
||||
from . import signals # NOQA
|
||||
|
||||
|
||||
default_app_config = 'pretix_digital_items.PluginApp'
|
||||
@@ -0,0 +1,16 @@
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from pretix.base.forms import SettingsForm
|
||||
|
||||
|
||||
class PretixDigitalItemsSettingsForm(SettingsForm):
|
||||
digitalitems_token_mail_format = forms.CharField(
|
||||
label=_("Token mail format"),
|
||||
help_text=_("This text will be included for every token in an email. Available placeholder are {name} for the item name and {secret} for the token code."),
|
||||
widget=forms.TextInput(attrs={'placeholder': '{name}: {secret}'}),
|
||||
required=False)
|
||||
digitalitems_token_export_format = forms.CharField(
|
||||
label=_("Token export format"),
|
||||
help_text=_("This text will be included for every token in a TXT export. Available placeholder are {name} for the item name and {secret} for the token code."),
|
||||
widget=forms.TextInput(attrs={'placeholder': '{name}: {secret}'}),
|
||||
required=False)
|
||||
@@ -0,0 +1,40 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-03-07 19:01+0100\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: _Bastler\n"
|
||||
"Language-Team: \n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
# title
|
||||
msgid "Digital Items"
|
||||
msgstr "Digitale Items"
|
||||
|
||||
# description
|
||||
msgid ""
|
||||
"Sell digital Items by using secrets as tokens. Adds secrets to email placeholders, output secret as simple TXT file."
|
||||
msgstr "Verkauf digitaler Items indem die Token-Codes der Tickets als einzulösendes Token verwendet werden. Token-Codes sind als E-Mail Platzhalter verfügbar, Exportfunktion als einfache TXT-Datei."
|
||||
|
||||
#: pretix_digital_items/forms.py:8
|
||||
msgid "Token mail format"
|
||||
msgstr "Token E-Mail Format"
|
||||
|
||||
#: pretix_digital_items/forms.py:9
|
||||
msgid ""
|
||||
"This text will be included for every token in an email. Available placeholder are {name} for the item name and {secret} for the token code."
|
||||
msgstr "Dieser Text wird für jedes Token in einer E-Mail eingefügt. Verfügbare Platzhalter sind {name} für den Item-Namen und {secret} für den Token-Code."
|
||||
|
||||
#: pretix_digital_items/forms.py:
|
||||
msgid "Token export format"
|
||||
msgstr "Token Export Format"
|
||||
|
||||
#: pretix_digital_items/forms.py:
|
||||
msgid ""
|
||||
"This text will be included for every token in a TXT export. Available placeholder are {name} for the item name and {secret} for the token code."
|
||||
msgstr "Dieser Text wird für jedes Token in einem TXT Export eingefügt. Verfügbare Platzhalter sind {name} für den Item-Namen und {secret} für den Token-Code."
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-03-07 19:01+0100\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: _Bastler\n"
|
||||
"Language-Team: \n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
# title
|
||||
msgid "Digital Items"
|
||||
msgstr "Digitale Items"
|
||||
|
||||
# description
|
||||
msgid ""
|
||||
"Sell digital Items by using secrets as tokens. Adds secrets to email placeholders, output secret as simple TXT file."
|
||||
msgstr "Verkauf digitaler Items indem die Token-Codes der Tickets als einzulösendes Token verwendet werden. Token-Codes sind als E-Mail Platzhalter verfügbar, Exportfunktion als einfache TXT-Datei."
|
||||
|
||||
#: pretix_digital_items/forms.py:8
|
||||
msgid "Token mail format"
|
||||
msgstr "Token E-Mail Format"
|
||||
|
||||
#: pretix_digital_items/forms.py:9
|
||||
msgid ""
|
||||
"This text will be included for every token in an email. Available placeholder are {name} for the item name and {secret} for the token code."
|
||||
msgstr "Dieser Text wird für jedes Token in einer E-Mail eingefügt. Verfügbare Platzhalter sind {name} für den Item-Namen und {secret} für den Token-Code."
|
||||
|
||||
#: pretix_digital_items/forms.py:
|
||||
msgid "Token export format"
|
||||
msgstr "Token Export Format"
|
||||
|
||||
#: pretix_digital_items/forms.py:
|
||||
msgid ""
|
||||
"This text will be included for every token in a TXT export. Available placeholder are {name} for the item name and {secret} for the token code."
|
||||
msgstr "Dieser Text wird für jedes Token in einem TXT Export eingefügt. Verfügbare Platzhalter sind {name} für den Item-Namen und {secret} für den Token-Code."
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
from django.dispatch import receiver
|
||||
from django.urls import resolve, reverse
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
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")
|
||||
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()), '\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')
|
||||
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',
|
||||
}]
|
||||
@@ -0,0 +1,16 @@
|
||||
{% extends "pretixcontrol/event/settings_base.html" %}
|
||||
{% load i18n %}
|
||||
{% load bootstrap3 %}
|
||||
{% block inside %}
|
||||
<h1>{% trans "Digital Items" %}</h1>
|
||||
<form action="" method="post" class="form-horizontal">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form_errors form %}
|
||||
{% bootstrap_form form layout="horizontal" %}
|
||||
<div class="form-group submit-group">
|
||||
<button type="submit" class="btn btn-primary btn-save">
|
||||
{% trans "Save" %}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,18 @@
|
||||
from pretix.base.ticketoutput import BaseTicketOutput
|
||||
|
||||
class TextTicketOutput(BaseTicketOutput):
|
||||
identifier = 'tokens'
|
||||
verbose_name = 'Download token as in simple textfile'
|
||||
download_button_text = 'Download Token'
|
||||
|
||||
def generate(self, position):
|
||||
token_export_format = "{name}: {secret}"
|
||||
if position.event.settings.digitalitems_token_export_format:
|
||||
token_export_format = position.event.settings.digitalitems_token_export_format
|
||||
return 'token.txt', 'text/plain', token_export_format.format(secret = position.secret, name = str(position.item.name))
|
||||
|
||||
def generate_order(self, order):
|
||||
token_export_format = "{name}: {secret}"
|
||||
if order.event.settings.digitalitems_token_export_format:
|
||||
token_export_format = order.event.settings.digitalitems_token_export_format
|
||||
return 'tokens.txt', 'text/plain', '\n'.join(token_export_format.format(secret = position.secret, name = str(position.item.name)) for position in order.positions.all())
|
||||
@@ -0,0 +1,11 @@
|
||||
from django.conf.urls import url
|
||||
|
||||
from .views import SettingsView
|
||||
|
||||
urlpatterns = [
|
||||
url(
|
||||
r"^control/event/(?P<organizer>[^/]+)/(?P<event>[^/]+)/pretix_digital_items/settings",
|
||||
SettingsView.as_view(),
|
||||
name="settings",
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,23 @@
|
||||
from django.urls import reverse
|
||||
from pretix.control.views.event import EventSettingsFormView, EventSettingsViewMixin
|
||||
from pretix.base.models.event import Event
|
||||
from .forms import PretixDigitalItemsSettingsForm
|
||||
|
||||
from pretix.presale.style import regenerate_css
|
||||
from django.contrib import messages
|
||||
|
||||
|
||||
class SettingsView(EventSettingsViewMixin, EventSettingsFormView):
|
||||
model = Event
|
||||
permission = "can_change_settings"
|
||||
form_class = PretixDigitalItemsSettingsForm
|
||||
template_name = "pretix_digital_items/settings.html"
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
return reverse(
|
||||
"plugins:pretix_digital_items:settings",
|
||||
kwargs={
|
||||
"organizer": self.request.event.organizer.slug,
|
||||
"event": self.request.event.slug,
|
||||
},
|
||||
)
|
||||
Reference in New Issue
Block a user