Fixed #29 -- "Shop is live" flag

This commit is contained in:
Raphael Michel
2016-02-22 21:53:08 +01:00
parent 28c8cd8461
commit e29f19e96b
15 changed files with 530 additions and 152 deletions

View File

@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.2 on 2016-02-22 20:02
from __future__ import unicode_literals
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('pretixbase', '0008_invoiceaddress'),
]
operations = [
migrations.AddField(
model_name='event',
name='live',
field=models.BooleanField(default=False, verbose_name='Shop is live'),
),
migrations.AlterField(
model_name='invoiceaddress',
name='order',
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='invoice_address', to='pretixbase.Order'),
),
]

View File

@@ -32,6 +32,8 @@ class Event(LoggedModel):
:param slug: A short, alphanumeric, all-lowercase name for use in URLs. The slug has to
be unique among the events of the same organizer.
:type slug: str
:param live: Whether or not the shop is publicly accessible
:type live: bool
:param currency: The currency of all prices and payments of this event
:type currency: str
:param date_from: The datetime this event starts
@@ -65,6 +67,7 @@ class Event(LoggedModel):
],
verbose_name=_("Slug"),
)
live = models.BooleanField(default=False, verbose_name=_("Shop is live"))
permitted = models.ManyToManyField(User, through='EventPermission',
related_name="events", )
currency = models.CharField(max_length=10,

View File

@@ -1,5 +1,6 @@
{% extends "pretixcontrol/base.html" %}
{% load i18n %}
{% block title %}{{ request.event.name }}{% endblock %}
{% block nav %}
<li>

View File

@@ -0,0 +1,49 @@
{% extends "pretixcontrol/event/base.html" %}
{% load i18n %}
{% load bootstrap3 %}
{% block content %}
<h1>{% trans "Shop status" %}</h1>
{% if request.event.live %}
<p>
{% trans "Your shop is currently live. If you take it down, it will only be visible to you and your team." %}
</p>
<form action="" method="post">
{% csrf_token %}
<input type="hidden" name="live" value="false">
<div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save">
{% trans "Go offline" %}
</button>
</div>
</form>
{% else %}
<p>
{% trans "Your ticket shop is currently not live. It is thus only visible to you and your team, not to any visitors." %}
</p>
{% if issues|length > 0 %}
<p>
{% trans "To publish your ticket shop, you first need to resolve the following issues:" %}
</p>
<ul>
{% for issue in issues %}
<li>{{ issue }}</li>
{% endfor %}
</ul>
{% else %}
<p>
{% trans "If you want to, you can publish your ticket shop now." %}
</p>
<form action="" method="post">
{% csrf_token %}
<input type="hidden" name="live" value="true">
<div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save">
{% trans "Go live" %}
</button>
</div>
</form>
{% endif %}
{% endif %}
{% endblock %}

View File

@@ -21,6 +21,7 @@ urlpatterns = [
url(r'^event/(?P<organizer>[^/]+)/add', main.EventCreate.as_view(), name='events.create'),
url(r'^event/(?P<organizer>[^/]+)/(?P<event>[^/]+)/', include([
url(r'^$', event_dashboard.index, name='event.index'),
url(r'^live/$', event.EventLive.as_view(), name='event.live'),
url(r'^settings/$', event.EventUpdate.as_view(), name='event.settings'),
url(r'^settings/plugins$', event.EventPlugins.as_view(), name='event.settings.plugins'),
url(r'^settings/permissions$', event.EventPermissions.as_view(), name='event.settings.permissions'),

View File

@@ -13,7 +13,9 @@ from django.views.generic.base import TemplateView
from django.views.generic.detail import SingleObjectMixin
from pretix.base.forms import I18nModelForm
from pretix.base.models import Event, EventPermission, User
from pretix.base.models import (
Event, EventPermission, Item, ItemVariation, User,
)
from pretix.base.signals import (
register_payment_providers, register_ticket_outputs,
)
@@ -423,3 +425,51 @@ class EventPermissions(EventPermissionRequiredMixin, TemplateView):
'organizer': self.request.event.organizer.slug,
'event': self.request.event.slug
})
class EventLive(EventPermissionRequiredMixin, TemplateView):
permission = 'can_change_settings'
template_name = 'pretixcontrol/event/live.html'
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
ctx['issues'] = self.issues
return ctx
@cached_property
def issues(self):
issues = []
has_paid_things = (
Item.objects.filter(event=self.request.event, default_price__gt=0).exists()
or ItemVariation.objects.filter(item__event=self.request.event, default_price__gt=0).exists()
)
has_payment_provider = False
responses = register_payment_providers.send(self.request.event)
for receiver, response in responses:
provider = response(self.request.event)
if provider.is_enabled:
has_payment_provider = True
break
if has_paid_things and not has_payment_provider:
issues.append(_('You have configured at least one paid product but have not enabled any payment methods.'))
return issues
def post(self, request, *args, **kwargs):
if request.POST.get("live") == "true" and not self.issues:
request.event.live = True
request.event.save()
messages.success(self.request, _('Your shop is live now!'))
elif request.POST.get("live") == "false":
request.event.live = False
request.event.save()
messages.success(self.request, _('We\'ve taken your shop down. You can re-enable it whenever you want!'))
return redirect(self.get_success_url())
def get_success_url(self) -> str:
return reverse('control:event.live', kwargs={
'organizer': self.request.event.organizer.slug,
'event': self.request.event.slug
})

View File

@@ -88,6 +88,24 @@ def quota_widgets(sender, **kwargs):
return widgets
@receiver(signal=event_dashboard_widgets)
def shop_state_widget(sender, **kwargs):
return [{
'width': 3,
'priority': 1000,
'content': '<div class="shopstate">{t1}<br><span class="{cls}"><span class="fa {icon}"></span> {state}</span>{t2}</div>'.format(
t1=_('Your ticket shop is'), t2=_('Click here to change'),
state=_('live') if sender.live else _('not yet public'),
icon='fa-check-circle' if sender.live else 'fa-times-circle',
cls='live' if sender.live else 'off'
),
'url': reverse('control:event.live', kwargs={
'event': sender.slug,
'organizer': sender.organizer.slug
})
}]
def index(request, organizer, event):
widgets = []
for r, result in event_dashboard_widgets.send(sender=request.event):

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-02-22 15:29+0000\n"
"PO-Revision-Date: 2016-02-22 16:30+0100\n"
"POT-Creation-Date: 2016-02-22 20:48+0000\n"
"PO-Revision-Date: 2016-02-22 21:52+0100\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: Raphael Michel <michel@rami.io>\n"
"Language: de\n"
@@ -135,7 +135,7 @@ msgstr "Zeitzone"
#: pretix/control/templates/pretixcontrol/event/permissions.html:15
#: pretix/control/templates/pretixcontrol/order/index.html:69
#: pretix/control/templates/pretixcontrol/orders/index.html:43
#: pretix/control/views/event.py:344
#: pretix/control/views/event.py:346 tests/base/test_mail.py:68
msgid "User"
msgstr "Benutzer"
@@ -148,7 +148,7 @@ msgstr "Benutzer"
msgid "%(family)s, %(given)s"
msgstr "%(family)s, %(given)s"
#: pretix/base/models/event.py:53 pretix/base/models/items.py:417
#: pretix/base/models/event.py:55 pretix/base/models/items.py:417
#: pretix/base/models/orders.py:471 pretix/base/models/organizer.py:25
#: pretix/control/templates/pretixcontrol/order/index.html:190
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:77
@@ -157,7 +157,7 @@ msgstr "%(family)s, %(given)s"
msgid "Name"
msgstr "Name"
#: pretix/base/models/event.py:58 pretix/base/models/organizer.py:29
#: pretix/base/models/event.py:60 pretix/base/models/organizer.py:29
msgid ""
"Should be short, only contain lowercase letters and numbers, and must be "
"unique among your events. This is being used in addresses and bank transfer "
@@ -167,32 +167,36 @@ msgstr ""
"unter Ihren Veranstaltungen einmalig sein. Wird in URLs und "
"Verwendungszwecken für Banküberweisungen benutzt."
#: pretix/base/models/event.py:63 pretix/base/models/organizer.py:34
#: pretix/base/models/event.py:65 pretix/base/models/organizer.py:34
msgid "The slug may only contain letters, numbers, dots and dashes."
msgstr ""
"Der Kurzname darf nur Buchstaben, Zahlen, Punkte und Bindestriche enthalten"
#: pretix/base/models/event.py:66 pretix/base/models/organizer.py:37
#: pretix/base/models/event.py:68 pretix/base/models/organizer.py:37
msgid "Slug"
msgstr "Kurzform"
#: pretix/base/models/event.py:71
#: pretix/base/models/event.py:70
msgid "Shop is live"
msgstr "Shop ist live"
#: pretix/base/models/event.py:74
msgid "Default currency"
msgstr "Standardwährung"
#: pretix/base/models/event.py:73
#: pretix/base/models/event.py:76
msgid "Event start time"
msgstr "Veranstaltungsbeginn"
#: pretix/base/models/event.py:75
#: pretix/base/models/event.py:78
msgid "Event end time"
msgstr "Veranstaltungsende"
#: pretix/base/models/event.py:77
#: pretix/base/models/event.py:80
msgid "Visible in public lists"
msgstr "Öffentlich sichtbar"
#: pretix/base/models/event.py:78
#: pretix/base/models/event.py:81
msgid ""
"If selected, this event may show up on the ticket system's start page or an "
"organization profile."
@@ -201,81 +205,81 @@ msgstr ""
"dieses Vorverkaufssystem oder auf der Profilseite eines Veranstalters "
"aufgelistet werden."
#: pretix/base/models/event.py:82
#: pretix/base/models/event.py:85
msgid "End of presale"
msgstr "Ende des Vorverkaufs"
#: pretix/base/models/event.py:83
#: pretix/base/models/event.py:86
msgid "No products will be sold after this date."
msgstr "Es werden nach diesem Termin keine Produkte mehr verkauft."
#: pretix/base/models/event.py:87
#: pretix/base/models/event.py:90
msgid "Start of presale"
msgstr "Beginn des Vorverkaufs"
#: pretix/base/models/event.py:88
#: pretix/base/models/event.py:91
msgid "No products will be sold before this date."
msgstr "Es werden vor diesem Termin keine Produkte verkauft."
#: pretix/base/models/event.py:92
#: pretix/control/templates/pretixcontrol/event/base.html:36
#: pretix/base/models/event.py:95
#: pretix/control/templates/pretixcontrol/event/base.html:37
msgid "Plugins"
msgstr "Erweiterungen"
#: pretix/base/models/event.py:96 pretix/base/models/items.py:109
#: pretix/base/models/event.py:99 pretix/base/models/items.py:109
#: pretix/base/models/items.py:413 pretix/base/models/orders.py:90
#: pretix/base/models/orders.py:433 pretix/base/models/vouchers.py:25
msgid "Event"
msgstr "Veranstaltung"
#: pretix/base/models/event.py:97
#: pretix/control/templates/pretixcontrol/base.html:99
#: pretix/base/models/event.py:100
#: pretix/control/templates/pretixcontrol/base.html:98
#: pretix/control/templates/pretixcontrol/events/index.html:3
#: pretix/control/templates/pretixcontrol/events/index.html:5
msgid "Events"
msgstr "Veranstaltungen"
#: pretix/base/models/event.py:110
#: pretix/base/models/event.py:113
msgid "The end of the presale period has to be later than it's start."
msgstr "Das Ende des Vorverkaufs muss nach seinem Beginn liegen."
#: pretix/base/models/event.py:112
#: pretix/base/models/event.py:115
msgid "The end of the event has to be later than it's start."
msgstr "Das Ende der Veranstaltung muss nach ihrem Beginn liegen."
#: pretix/base/models/event.py:222
#: pretix/base/models/event.py:225
msgid "Can change event settings"
msgstr "Kann Veranstaltungseinstellungen ändern"
#: pretix/base/models/event.py:226
#: pretix/base/models/event.py:229
msgid "Can change product settings"
msgstr "Kann Produkte ändern"
#: pretix/base/models/event.py:230
#: pretix/base/models/event.py:233
msgid "Can view orders"
msgstr "Kann Bestellungen einsehen"
#: pretix/base/models/event.py:234
#: pretix/base/models/event.py:237
msgid "Can change permissions"
msgstr "Kann Berechtigungen verändern"
#: pretix/base/models/event.py:238
#: pretix/base/models/event.py:241
msgid "Can change orders"
msgstr "Kann Bestellungen verändern"
#: pretix/base/models/event.py:242
#: pretix/base/models/event.py:245
msgid "Can change vouchers"
msgstr "Kann Gutscheine verändern"
#: pretix/base/models/event.py:246
#: pretix/base/models/event.py:249
msgid "Event permission"
msgstr "Veranstaltungs-Berechtigung"
#: pretix/base/models/event.py:247
#: pretix/base/models/event.py:250
msgid "Event permissions"
msgstr "Veranstaltungs-Berechtigungen"
#: pretix/base/models/event.py:250 pretix/base/models/organizer.py:100
#: pretix/base/models/event.py:253 pretix/base/models/organizer.py:100
#, python-format
msgid "%(name)s on %(object)s"
msgstr "%(name)s für %(object)s"
@@ -365,8 +369,8 @@ msgid "Product"
msgstr "Produkt"
#: pretix/base/models/items.py:169 pretix/base/models/items.py:335
#: pretix/control/templates/pretixcontrol/event/base.html:67
#: pretix/control/templates/pretixcontrol/event/base.html:74
#: pretix/control/templates/pretixcontrol/event/base.html:68
#: pretix/control/templates/pretixcontrol/event/base.html:75
#: pretix/control/templates/pretixcontrol/items/base.html:3
#: pretix/control/templates/pretixcontrol/items/index.html:3
#: pretix/control/templates/pretixcontrol/items/index.html:5
@@ -426,7 +430,7 @@ msgid "This question will be asked to buyers of the selected products"
msgstr "Diese Frage wird allen Käufern der ausgewählten Produkte gestellt"
#: pretix/base/models/items.py:342
#: pretix/control/templates/pretixcontrol/event/base.html:91
#: pretix/control/templates/pretixcontrol/event/base.html:92
#: pretix/control/templates/pretixcontrol/items/questions.html:3
#: pretix/control/templates/pretixcontrol/items/questions.html:5
msgid "Questions"
@@ -457,7 +461,7 @@ msgid "Quota"
msgstr "Kontingent"
#: pretix/base/models/items.py:439
#: pretix/control/templates/pretixcontrol/event/base.html:79
#: pretix/control/templates/pretixcontrol/event/base.html:80
#: pretix/control/templates/pretixcontrol/items/quotas.html:3
#: pretix/control/templates/pretixcontrol/items/quotas.html:5
msgid "Quotas"
@@ -548,7 +552,7 @@ msgid "Order"
msgstr "Bestellung"
#: pretix/base/models/orders.py:136
#: pretix/control/templates/pretixcontrol/event/base.html:101
#: pretix/control/templates/pretixcontrol/event/base.html:102
#: pretix/control/templates/pretixcontrol/orders/index.html:3
#: pretix/control/templates/pretixcontrol/orders/index.html:5
msgid "Orders"
@@ -654,7 +658,7 @@ msgid "Organizer"
msgstr "Veranstalter"
#: pretix/base/models/organizer.py:44
#: pretix/control/templates/pretixcontrol/base.html:105
#: pretix/control/templates/pretixcontrol/base.html:104
#: pretix/control/templates/pretixcontrol/organizers/index.html:3
#: pretix/control/templates/pretixcontrol/organizers/index.html:5
msgid "Organizers"
@@ -734,7 +738,7 @@ msgid "Voucher"
msgstr "Gutschein"
#: pretix/base/models/vouchers.py:69
#: pretix/control/templates/pretixcontrol/event/base.html:131
#: pretix/control/templates/pretixcontrol/event/base.html:132
#: pretix/control/templates/pretixcontrol/vouchers/index.html:3
#: pretix/control/templates/pretixcontrol/vouchers/index.html:5
msgid "Vouchers"
@@ -1052,7 +1056,7 @@ msgid "We are preparing your file for download…"
msgstr "Wir bereiten Ihre Datei zum Download vor…"
#: pretix/base/templates/pretixbase/cachedfiles/pending.html:21
#: pretix/presale/templates/pretixpresale/base.html:43
#: pretix/presale/templates/pretixpresale/base.html:45
#: pretix/presale/templates/pretixpresale/waiting.html:24
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
@@ -1437,8 +1441,8 @@ msgid "You do not have permission to view this content."
msgstr "Sie haben keine Berechtigung, diese Inhalte aufzurufen."
#: pretix/control/templates/pretixcontrol/auth/base.html:29
#: pretix/control/templates/pretixcontrol/base.html:127
#: pretix/presale/templates/pretixpresale/base.html:31
#: pretix/control/templates/pretixcontrol/base.html:126
#: pretix/presale/templates/pretixpresale/base.html:33
#, python-format
msgid "powered by <a %(a_attr)s>pretix</a>"
msgstr "powered by <a %(a_attr)s>pretix</a>"
@@ -1497,24 +1501,24 @@ msgstr "Neuen Benutzer erstellen"
msgid "Login"
msgstr "Login"
#: pretix/control/templates/pretixcontrol/base.html:31
#: pretix/control/templates/pretixcontrol/base.html:30
msgid "Toggle navigation"
msgstr "Navigation umschalten"
#: pretix/control/templates/pretixcontrol/base.html:50
#: pretix/control/templates/pretixcontrol/base.html:77
#: pretix/control/templates/pretixcontrol/base.html:49
#: pretix/control/templates/pretixcontrol/base.html:76
msgid "Event overview"
msgstr "Überblick"
#: pretix/control/templates/pretixcontrol/base.html:68
#: pretix/control/templates/pretixcontrol/base.html:70
#: pretix/control/templates/pretixcontrol/base.html:67
#: pretix/control/templates/pretixcontrol/base.html:69
msgid "Log out"
msgstr "Abmelden"
#: pretix/control/templates/pretixcontrol/base.html:93
#: pretix/control/templates/pretixcontrol/base.html:92
#: pretix/control/templates/pretixcontrol/dashboard.html:3
#: pretix/control/templates/pretixcontrol/dashboard.html:5
#: pretix/control/templates/pretixcontrol/event/base.html:9
#: pretix/control/templates/pretixcontrol/event/base.html:10
msgid "Dashboard"
msgstr "Übersicht"
@@ -1541,52 +1545,91 @@ msgstr ""
"Viele Grüße,\n"
"Ihr pretix Team\n"
#: pretix/control/templates/pretixcontrol/event/base.html:16
#: pretix/control/templates/pretixcontrol/event/base.html:17
#: pretix/control/templates/pretixcontrol/event/settings_base.html:6
msgid "Settings"
msgstr "Einstellungen"
#: pretix/control/templates/pretixcontrol/event/base.html:24
#: pretix/control/templates/pretixcontrol/event/base.html:25
msgid "General"
msgstr "Allgemeines"
#: pretix/control/templates/pretixcontrol/event/base.html:30
#: pretix/control/templates/pretixcontrol/event/base.html:31
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:51
#: pretix/presale/templates/pretixpresale/event/order.html:31
#: pretix/presale/templates/pretixpresale/event/order.html:148
msgid "Payment"
msgstr "Zahlung"
#: pretix/control/templates/pretixcontrol/event/base.html:42
#: pretix/control/templates/pretixcontrol/event/base.html:43
msgid "Tickets"
msgstr "Tickets"
#: pretix/control/templates/pretixcontrol/event/base.html:48
#: pretix/control/templates/pretixcontrol/event/base.html:49
msgid "Email"
msgstr "E-Mail"
#: pretix/control/templates/pretixcontrol/event/base.html:56
#: pretix/control/templates/pretixcontrol/event/base.html:57
#: pretix/control/templates/pretixcontrol/event/permissions.html:8
msgid "Permissions"
msgstr "Berechtigungen"
#: pretix/control/templates/pretixcontrol/event/base.html:85
#: pretix/control/templates/pretixcontrol/event/base.html:86
msgid "Categories"
msgstr "Kategorien"
#: pretix/control/templates/pretixcontrol/event/base.html:108
#: pretix/control/templates/pretixcontrol/event/base.html:109
#: pretix/control/templates/pretixcontrol/orders/index.html:18
msgid "All orders"
msgstr "Alle Bestellungen"
#: pretix/control/templates/pretixcontrol/event/base.html:114
#: pretix/control/templates/pretixcontrol/event/base.html:115
msgid "Overview"
msgstr "Überblick"
#: pretix/control/templates/pretixcontrol/event/base.html:120
#: pretix/control/templates/pretixcontrol/event/base.html:121
msgid "Export"
msgstr "Export"
#: pretix/control/templates/pretixcontrol/event/live.html:5
msgid "Shop status"
msgstr "Shop-Status"
#: pretix/control/templates/pretixcontrol/event/live.html:8
msgid ""
"Your shop is currently live. If you take it down, it will only be visible to "
"you and your team."
msgstr ""
"Dein Shop ist aktuell öffentlich verfügbar. Wenn du ihn ausschaltest, ist er "
"nur für dich und dein Team sichtbar."
#: pretix/control/templates/pretixcontrol/event/live.html:16
msgid "Go offline"
msgstr "Shop ausschalten"
#: pretix/control/templates/pretixcontrol/event/live.html:22
msgid ""
"Your ticket shop is currently not live. It is thus only visible to you and "
"your team, not to any visitors."
msgstr ""
"Dein Ticket-Shop ist zur Zeit offline und daher nur für dich und dein Team "
"verfügbar und nicht für Besucher."
#: pretix/control/templates/pretixcontrol/event/live.html:26
msgid ""
"To publish your ticket shop, you first need to resolve the following issues:"
msgstr ""
"Um deinen Ticket-Shop zu veröffentlichen, musst du zuerst die folgenden "
"Probleme beheben:"
#: pretix/control/templates/pretixcontrol/event/live.html:35
msgid "If you want to, you can publish your ticket shop now."
msgstr "Du kannst deinen Ticket-Shop jederzeit veröffentlichen."
#: pretix/control/templates/pretixcontrol/event/live.html:43
msgid "Go live"
msgstr "Shop veröffentlichen"
#: pretix/control/templates/pretixcontrol/event/mail.html:9
msgid "E-mail settings"
msgstr "E-Mail-Einstellungen"
@@ -1649,9 +1692,9 @@ msgid "Installed plugins"
msgstr "Installierte Erweiterungen"
#: pretix/control/templates/pretixcontrol/event/plugins.html:11
#: pretix/control/views/event.py:66 pretix/control/views/event.py:123
#: pretix/control/views/event.py:192 pretix/control/views/event.py:249
#: pretix/control/views/event.py:305 pretix/control/views/event.py:415
#: pretix/control/views/event.py:68 pretix/control/views/event.py:125
#: pretix/control/views/event.py:194 pretix/control/views/event.py:251
#: pretix/control/views/event.py:307 pretix/control/views/event.py:417
#: pretix/control/views/item.py:137 pretix/control/views/item.py:296
#: pretix/control/views/item.py:425 pretix/control/views/item.py:506
#: pretix/control/views/item.py:535 pretix/control/views/item.py:596
@@ -2323,12 +2366,12 @@ msgstr ""
msgid "You can now login using your new password."
msgstr "Sie können sich nun mit Ihrem neuen Passwort anmelden."
#: pretix/control/views/event.py:242
#: pretix/control/views/event.py:244
#, python-format
msgid "An error occured while contacting the SMTP server: %s"
msgstr "Ein Fehler trat auf beim Versuch, den SMTP-Server zu erreichen: %s"
#: pretix/control/views/event.py:244
#: pretix/control/views/event.py:246
msgid ""
"Your changes have been saved and the connection attempt to your SMTP server "
"was successful."
@@ -2336,23 +2379,41 @@ msgstr ""
"Ihre Änderungen wurden gespeichert und die Verbindung zum SMTP-Server war "
"erfolgreich."
#: pretix/control/views/event.py:385
#: pretix/control/views/event.py:387
msgid "There is no user with the email address you entered."
msgstr ""
"Es existiert kein Benutzer mit der E-Mail-Adresse, die Sie eingegeben haben."
#: pretix/control/views/event.py:390
#: pretix/control/views/event.py:392
msgid "This user already has permissions for this event."
msgstr "Dieser Benutzer hat bereits Zugriff auf diese Veranstaltung."
#: pretix/control/views/event.py:411
#: pretix/control/views/event.py:413
msgid "You cannot remove your own permission to view this page."
msgstr "Sie können Ihre eigene Berechtigung nicht entfernen."
#: pretix/control/views/event.py:418
#: pretix/control/views/event.py:420
msgid "Your changes could not be saved."
msgstr "Die Änderungen konnten nicht gespeichert werden."
#: pretix/control/views/event.py:456
msgid ""
"You have configured at least one paid product but have not enabled any "
"payment methods."
msgstr ""
"Du hast mindestens ein kostenpflichtiges Produkt konfiguriert aber noch "
"keine Zahlungsmethoden aktiviert."
#: pretix/control/views/event.py:464
msgid "Your shop is live now!"
msgstr "Dein Shop ist nun online!"
#: pretix/control/views/event.py:468
msgid "We've taken your shop down. You can re-enable it whenever you want!"
msgstr ""
"Wir haben deinen Shop ausgeschaltet. Du kannst ihn hier jederzeit wieder "
"einschalten."
#: pretix/control/views/event_dashboard.py:38
msgid "Attendees (ordered)"
msgstr "Teilnehmer (bestellt)"
@@ -2375,6 +2436,22 @@ msgstr "Aktive Produkte"
msgid "{quota} left"
msgstr "{quota} übrig"
#: pretix/control/views/event_dashboard.py:97
msgid "Your ticket shop is"
msgstr "Dein Ticket-Shop ist"
#: pretix/control/views/event_dashboard.py:97
msgid "Click here to change"
msgstr "Hier klicken zum Ändern"
#: pretix/control/views/event_dashboard.py:98
msgid "live"
msgstr "online"
#: pretix/control/views/event_dashboard.py:98
msgid "not yet public"
msgstr "deaktiviert"
#: pretix/control/views/item.py:53 pretix/control/views/item.py:635
msgid "The requested product does not exist."
msgstr "Das ausgewählte Produkt existiert nicht."
@@ -3382,27 +3459,39 @@ msgstr "Straße und Hausnummer"
msgid "You need to provide either a company name or your name."
msgstr "Sie müssen entweder einen Firmennamen oder Ihren Namen eingeben."
#: pretix/presale/middleware.py:25
#: pretix/presale/middleware.py:26
msgid "The selected event was not found."
msgstr "Die ausgewählte Veranstaltung wurde nicht gefunden."
#: pretix/presale/middleware.py:58
#: pretix/presale/middleware.py:61
msgid "The selected ticket shop is currently not available."
msgstr "Der ausgewählte Ticket-Shop ist im Moment nicht verfügbar."
#: pretix/presale/middleware.py:64
msgid "The selected event or organizer was not found."
msgstr ""
"Die ausgewählte Veranstaltung oder der gesuchte Veranstalter wurde nicht "
"gefunden."
#: pretix/presale/templates/pretixpresale/base.html:37
#: pretix/presale/templates/pretixpresale/base.html:41
#: pretix/presale/templates/pretixpresale/base.html:39
#: pretix/presale/templates/pretixpresale/base.html:43
#: pretix/presale/templates/pretixpresale/waiting.html:21
msgid "We are processing your request…"
msgstr "Wir verarbeiten Ihre Anfrage…"
#: pretix/presale/templates/pretixpresale/event/base.html:41
#: pretix/presale/templates/pretixpresale/event/base.html:13
msgid "This shop is currently only visible to you and your team."
msgstr "Dieser Shop ist aktuell nur für dich und dein Team sichtbar."
#: pretix/presale/templates/pretixpresale/event/base.html:15
msgid "Take it live now"
msgstr "Jetzt veröffentlichen"
#: pretix/presale/templates/pretixpresale/event/base.html:55
msgid "Contact event organizer"
msgstr "Veranstalter kontaktieren"
#: pretix/presale/templates/pretixpresale/event/base.html:44
#: pretix/presale/templates/pretixpresale/event/base.html:58
msgid "Imprint"
msgstr "Impressum"

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-02-22 15:29+0000\n"
"PO-Revision-Date: 2016-02-22 16:30+0100\n"
"POT-Creation-Date: 2016-02-22 20:48+0000\n"
"PO-Revision-Date: 2016-02-22 21:51+0100\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: Raphael Michel <michel@rami.io>\n"
"Language: de\n"
@@ -135,7 +135,7 @@ msgstr "Zeitzone"
#: pretix/control/templates/pretixcontrol/event/permissions.html:15
#: pretix/control/templates/pretixcontrol/order/index.html:69
#: pretix/control/templates/pretixcontrol/orders/index.html:43
#: pretix/control/views/event.py:344
#: pretix/control/views/event.py:346 tests/base/test_mail.py:68
msgid "User"
msgstr "Benutzer"
@@ -148,7 +148,7 @@ msgstr "Benutzer"
msgid "%(family)s, %(given)s"
msgstr "%(family)s, %(given)s"
#: pretix/base/models/event.py:53 pretix/base/models/items.py:417
#: pretix/base/models/event.py:55 pretix/base/models/items.py:417
#: pretix/base/models/orders.py:471 pretix/base/models/organizer.py:25
#: pretix/control/templates/pretixcontrol/order/index.html:190
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:77
@@ -157,7 +157,7 @@ msgstr "%(family)s, %(given)s"
msgid "Name"
msgstr "Name"
#: pretix/base/models/event.py:58 pretix/base/models/organizer.py:29
#: pretix/base/models/event.py:60 pretix/base/models/organizer.py:29
msgid ""
"Should be short, only contain lowercase letters and numbers, and must be "
"unique among your events. This is being used in addresses and bank transfer "
@@ -167,32 +167,36 @@ msgstr ""
"unter deinen Veranstaltungen einmalig sein. Wird in URLs und "
"Verwendungszwecken für Banküberweisungen benutzt."
#: pretix/base/models/event.py:63 pretix/base/models/organizer.py:34
#: pretix/base/models/event.py:65 pretix/base/models/organizer.py:34
msgid "The slug may only contain letters, numbers, dots and dashes."
msgstr ""
"Der Kurzname darf nur Buchstaben, Zahlen, Punkte und Bindestriche enthalten"
#: pretix/base/models/event.py:66 pretix/base/models/organizer.py:37
#: pretix/base/models/event.py:68 pretix/base/models/organizer.py:37
msgid "Slug"
msgstr "Kurzform"
#: pretix/base/models/event.py:71
#: pretix/base/models/event.py:70
msgid "Shop is live"
msgstr "Shop ist live"
#: pretix/base/models/event.py:74
msgid "Default currency"
msgstr "Standardwährung"
#: pretix/base/models/event.py:73
#: pretix/base/models/event.py:76
msgid "Event start time"
msgstr "Veranstaltungsbeginn"
#: pretix/base/models/event.py:75
#: pretix/base/models/event.py:78
msgid "Event end time"
msgstr "Veranstaltungsende"
#: pretix/base/models/event.py:77
#: pretix/base/models/event.py:80
msgid "Visible in public lists"
msgstr "Öffentlich sichtbar"
#: pretix/base/models/event.py:78
#: pretix/base/models/event.py:81
msgid ""
"If selected, this event may show up on the ticket system's start page or an "
"organization profile."
@@ -201,81 +205,81 @@ msgstr ""
"dieses Vorverkaufssystem oder auf der Profilseite eines Veranstalters "
"aufgelistet werden."
#: pretix/base/models/event.py:82
#: pretix/base/models/event.py:85
msgid "End of presale"
msgstr "Ende des Vorverkaufs"
#: pretix/base/models/event.py:83
#: pretix/base/models/event.py:86
msgid "No products will be sold after this date."
msgstr "Es werden nach diesem Termin keine Produkte mehr verkauft."
#: pretix/base/models/event.py:87
#: pretix/base/models/event.py:90
msgid "Start of presale"
msgstr "Beginn des Vorverkaufs"
#: pretix/base/models/event.py:88
#: pretix/base/models/event.py:91
msgid "No products will be sold before this date."
msgstr "Es werden vor diesem Termin keine Produkte verkauft."
#: pretix/base/models/event.py:92
#: pretix/control/templates/pretixcontrol/event/base.html:36
#: pretix/base/models/event.py:95
#: pretix/control/templates/pretixcontrol/event/base.html:37
msgid "Plugins"
msgstr "Erweiterungen"
#: pretix/base/models/event.py:96 pretix/base/models/items.py:109
#: pretix/base/models/event.py:99 pretix/base/models/items.py:109
#: pretix/base/models/items.py:413 pretix/base/models/orders.py:90
#: pretix/base/models/orders.py:433 pretix/base/models/vouchers.py:25
msgid "Event"
msgstr "Veranstaltung"
#: pretix/base/models/event.py:97
#: pretix/control/templates/pretixcontrol/base.html:99
#: pretix/base/models/event.py:100
#: pretix/control/templates/pretixcontrol/base.html:98
#: pretix/control/templates/pretixcontrol/events/index.html:3
#: pretix/control/templates/pretixcontrol/events/index.html:5
msgid "Events"
msgstr "Veranstaltungen"
#: pretix/base/models/event.py:110
#: pretix/base/models/event.py:113
msgid "The end of the presale period has to be later than it's start."
msgstr "Das Ende des Vorverkaufs muss nach seinem Beginn liegen."
#: pretix/base/models/event.py:112
#: pretix/base/models/event.py:115
msgid "The end of the event has to be later than it's start."
msgstr "Das Ende der Veranstaltung muss nach ihrem Beginn liegen."
#: pretix/base/models/event.py:222
#: pretix/base/models/event.py:225
msgid "Can change event settings"
msgstr "Kann Veranstaltungseinstellungen ändern"
#: pretix/base/models/event.py:226
#: pretix/base/models/event.py:229
msgid "Can change product settings"
msgstr "Kann Produkte ändern"
#: pretix/base/models/event.py:230
#: pretix/base/models/event.py:233
msgid "Can view orders"
msgstr "Kann Bestellungen einsehen"
#: pretix/base/models/event.py:234
#: pretix/base/models/event.py:237
msgid "Can change permissions"
msgstr "Kann Berechtigungen verändern"
#: pretix/base/models/event.py:238
#: pretix/base/models/event.py:241
msgid "Can change orders"
msgstr "Kann Bestellungen verändern"
#: pretix/base/models/event.py:242
#: pretix/base/models/event.py:245
msgid "Can change vouchers"
msgstr "Kann Gutscheine verändern"
#: pretix/base/models/event.py:246
#: pretix/base/models/event.py:249
msgid "Event permission"
msgstr "Veranstaltungs-Berechtigung"
#: pretix/base/models/event.py:247
#: pretix/base/models/event.py:250
msgid "Event permissions"
msgstr "Veranstaltungs-Berechtigungen"
#: pretix/base/models/event.py:250 pretix/base/models/organizer.py:100
#: pretix/base/models/event.py:253 pretix/base/models/organizer.py:100
#, python-format
msgid "%(name)s on %(object)s"
msgstr "%(name)s für %(object)s"
@@ -365,8 +369,8 @@ msgid "Product"
msgstr "Produkt"
#: pretix/base/models/items.py:169 pretix/base/models/items.py:335
#: pretix/control/templates/pretixcontrol/event/base.html:67
#: pretix/control/templates/pretixcontrol/event/base.html:74
#: pretix/control/templates/pretixcontrol/event/base.html:68
#: pretix/control/templates/pretixcontrol/event/base.html:75
#: pretix/control/templates/pretixcontrol/items/base.html:3
#: pretix/control/templates/pretixcontrol/items/index.html:3
#: pretix/control/templates/pretixcontrol/items/index.html:5
@@ -426,7 +430,7 @@ msgid "This question will be asked to buyers of the selected products"
msgstr "Diese Frage wird allen Käufern der ausgewählten Produkte gestellt"
#: pretix/base/models/items.py:342
#: pretix/control/templates/pretixcontrol/event/base.html:91
#: pretix/control/templates/pretixcontrol/event/base.html:92
#: pretix/control/templates/pretixcontrol/items/questions.html:3
#: pretix/control/templates/pretixcontrol/items/questions.html:5
msgid "Questions"
@@ -457,7 +461,7 @@ msgid "Quota"
msgstr "Kontingent"
#: pretix/base/models/items.py:439
#: pretix/control/templates/pretixcontrol/event/base.html:79
#: pretix/control/templates/pretixcontrol/event/base.html:80
#: pretix/control/templates/pretixcontrol/items/quotas.html:3
#: pretix/control/templates/pretixcontrol/items/quotas.html:5
msgid "Quotas"
@@ -548,7 +552,7 @@ msgid "Order"
msgstr "Bestellung"
#: pretix/base/models/orders.py:136
#: pretix/control/templates/pretixcontrol/event/base.html:101
#: pretix/control/templates/pretixcontrol/event/base.html:102
#: pretix/control/templates/pretixcontrol/orders/index.html:3
#: pretix/control/templates/pretixcontrol/orders/index.html:5
msgid "Orders"
@@ -654,7 +658,7 @@ msgid "Organizer"
msgstr "Veranstalter"
#: pretix/base/models/organizer.py:44
#: pretix/control/templates/pretixcontrol/base.html:105
#: pretix/control/templates/pretixcontrol/base.html:104
#: pretix/control/templates/pretixcontrol/organizers/index.html:3
#: pretix/control/templates/pretixcontrol/organizers/index.html:5
msgid "Organizers"
@@ -734,7 +738,7 @@ msgid "Voucher"
msgstr "Gutschein"
#: pretix/base/models/vouchers.py:69
#: pretix/control/templates/pretixcontrol/event/base.html:131
#: pretix/control/templates/pretixcontrol/event/base.html:132
#: pretix/control/templates/pretixcontrol/vouchers/index.html:3
#: pretix/control/templates/pretixcontrol/vouchers/index.html:5
msgid "Vouchers"
@@ -1050,7 +1054,7 @@ msgid "We are preparing your file for download…"
msgstr "Wir bereiten deine Datei zum Download vor…"
#: pretix/base/templates/pretixbase/cachedfiles/pending.html:21
#: pretix/presale/templates/pretixpresale/base.html:43
#: pretix/presale/templates/pretixpresale/base.html:45
#: pretix/presale/templates/pretixpresale/waiting.html:24
msgid "If this takes longer than a few minutes, please contact us."
msgstr "Wenn dies länger als ein paar Minuten dauert, kontaktiere uns bitte."
@@ -1431,8 +1435,8 @@ msgid "You do not have permission to view this content."
msgstr "Du has keine Berechtigung, diese Inhalte aufzurufen."
#: pretix/control/templates/pretixcontrol/auth/base.html:29
#: pretix/control/templates/pretixcontrol/base.html:127
#: pretix/presale/templates/pretixpresale/base.html:31
#: pretix/control/templates/pretixcontrol/base.html:126
#: pretix/presale/templates/pretixpresale/base.html:33
#, python-format
msgid "powered by <a %(a_attr)s>pretix</a>"
msgstr "powered by <a %(a_attr)s>pretix</a>"
@@ -1491,24 +1495,24 @@ msgstr "Neuen Benutzer erstellen"
msgid "Login"
msgstr "Login"
#: pretix/control/templates/pretixcontrol/base.html:31
#: pretix/control/templates/pretixcontrol/base.html:30
msgid "Toggle navigation"
msgstr "Navigation umschalten"
#: pretix/control/templates/pretixcontrol/base.html:50
#: pretix/control/templates/pretixcontrol/base.html:77
#: pretix/control/templates/pretixcontrol/base.html:49
#: pretix/control/templates/pretixcontrol/base.html:76
msgid "Event overview"
msgstr "Überblick"
#: pretix/control/templates/pretixcontrol/base.html:68
#: pretix/control/templates/pretixcontrol/base.html:70
#: pretix/control/templates/pretixcontrol/base.html:67
#: pretix/control/templates/pretixcontrol/base.html:69
msgid "Log out"
msgstr "Abmelden"
#: pretix/control/templates/pretixcontrol/base.html:93
#: pretix/control/templates/pretixcontrol/base.html:92
#: pretix/control/templates/pretixcontrol/dashboard.html:3
#: pretix/control/templates/pretixcontrol/dashboard.html:5
#: pretix/control/templates/pretixcontrol/event/base.html:9
#: pretix/control/templates/pretixcontrol/event/base.html:10
msgid "Dashboard"
msgstr "Übersicht"
@@ -1535,52 +1539,91 @@ msgstr ""
"Viele Grüße,\n"
"Dein pretix Team\n"
#: pretix/control/templates/pretixcontrol/event/base.html:16
#: pretix/control/templates/pretixcontrol/event/base.html:17
#: pretix/control/templates/pretixcontrol/event/settings_base.html:6
msgid "Settings"
msgstr "Einstellungen"
#: pretix/control/templates/pretixcontrol/event/base.html:24
#: pretix/control/templates/pretixcontrol/event/base.html:25
msgid "General"
msgstr "Allgemeines"
#: pretix/control/templates/pretixcontrol/event/base.html:30
#: pretix/control/templates/pretixcontrol/event/base.html:31
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:51
#: pretix/presale/templates/pretixpresale/event/order.html:31
#: pretix/presale/templates/pretixpresale/event/order.html:148
msgid "Payment"
msgstr "Zahlung"
#: pretix/control/templates/pretixcontrol/event/base.html:42
#: pretix/control/templates/pretixcontrol/event/base.html:43
msgid "Tickets"
msgstr "Tickets"
#: pretix/control/templates/pretixcontrol/event/base.html:48
#: pretix/control/templates/pretixcontrol/event/base.html:49
msgid "Email"
msgstr "E-Mail"
#: pretix/control/templates/pretixcontrol/event/base.html:56
#: pretix/control/templates/pretixcontrol/event/base.html:57
#: pretix/control/templates/pretixcontrol/event/permissions.html:8
msgid "Permissions"
msgstr "Berechtigungen"
#: pretix/control/templates/pretixcontrol/event/base.html:85
#: pretix/control/templates/pretixcontrol/event/base.html:86
msgid "Categories"
msgstr "Kategorien"
#: pretix/control/templates/pretixcontrol/event/base.html:108
#: pretix/control/templates/pretixcontrol/event/base.html:109
#: pretix/control/templates/pretixcontrol/orders/index.html:18
msgid "All orders"
msgstr "Alle Bestellungen"
#: pretix/control/templates/pretixcontrol/event/base.html:114
#: pretix/control/templates/pretixcontrol/event/base.html:115
msgid "Overview"
msgstr "Überblick"
#: pretix/control/templates/pretixcontrol/event/base.html:120
#: pretix/control/templates/pretixcontrol/event/base.html:121
msgid "Export"
msgstr "Export"
#: pretix/control/templates/pretixcontrol/event/live.html:5
msgid "Shop status"
msgstr "Shop-Status"
#: pretix/control/templates/pretixcontrol/event/live.html:8
msgid ""
"Your shop is currently live. If you take it down, it will only be visible to "
"you and your team."
msgstr ""
"Ihr Shop ist aktuell öffentlich verfügbar. Wenn Sie ihn ausschalten, ist er "
"nur für Sie und Ihr Team sichtbar."
#: pretix/control/templates/pretixcontrol/event/live.html:16
msgid "Go offline"
msgstr "Shop ausschalten"
#: pretix/control/templates/pretixcontrol/event/live.html:22
msgid ""
"Your ticket shop is currently not live. It is thus only visible to you and "
"your team, not to any visitors."
msgstr ""
"Ihr Ticket-Shop ist zur Zeit offline und daher nur für Sie und Ihr Team "
"verfügbar und nicht für Besucher."
#: pretix/control/templates/pretixcontrol/event/live.html:26
msgid ""
"To publish your ticket shop, you first need to resolve the following issues:"
msgstr ""
"Um Ihren Ticket-Shop zu veröffentlichen, müssen Sie zuerst die folgenden "
"Probleme beheben:"
#: pretix/control/templates/pretixcontrol/event/live.html:35
msgid "If you want to, you can publish your ticket shop now."
msgstr "Sie können Ihren Ticket-Shop jederzeit veröffentlichen."
#: pretix/control/templates/pretixcontrol/event/live.html:43
msgid "Go live"
msgstr "Shop veröffentlichen"
#: pretix/control/templates/pretixcontrol/event/mail.html:9
msgid "E-mail settings"
msgstr "E-Mail-Einstellungen"
@@ -1643,9 +1686,9 @@ msgid "Installed plugins"
msgstr "Installierte Erweiterungen"
#: pretix/control/templates/pretixcontrol/event/plugins.html:11
#: pretix/control/views/event.py:66 pretix/control/views/event.py:123
#: pretix/control/views/event.py:192 pretix/control/views/event.py:249
#: pretix/control/views/event.py:305 pretix/control/views/event.py:415
#: pretix/control/views/event.py:68 pretix/control/views/event.py:125
#: pretix/control/views/event.py:194 pretix/control/views/event.py:251
#: pretix/control/views/event.py:307 pretix/control/views/event.py:417
#: pretix/control/views/item.py:137 pretix/control/views/item.py:296
#: pretix/control/views/item.py:425 pretix/control/views/item.py:506
#: pretix/control/views/item.py:535 pretix/control/views/item.py:596
@@ -2316,12 +2359,12 @@ msgstr ""
msgid "You can now login using your new password."
msgstr "Du kannst dich nun mit Ihrem neuen Passwort anmelden."
#: pretix/control/views/event.py:242
#: pretix/control/views/event.py:244
#, python-format
msgid "An error occured while contacting the SMTP server: %s"
msgstr "Ein Fehler trat auf beim Versuch, den SMTP-Server zu erreichen: %s"
#: pretix/control/views/event.py:244
#: pretix/control/views/event.py:246
msgid ""
"Your changes have been saved and the connection attempt to your SMTP server "
"was successful."
@@ -2329,23 +2372,41 @@ msgstr ""
"Deine Änderungen wurden gespeichert und die Verbindung zum SMTP-Server war "
"erfolgreich."
#: pretix/control/views/event.py:385
#: pretix/control/views/event.py:387
msgid "There is no user with the email address you entered."
msgstr ""
"Es existiert kein Benutzer mit der E-Mail-Adresse, die du eingegeben hast."
#: pretix/control/views/event.py:390
#: pretix/control/views/event.py:392
msgid "This user already has permissions for this event."
msgstr "Dieser Benutzer hat bereits Zugriff auf diese Veranstaltung."
#: pretix/control/views/event.py:411
#: pretix/control/views/event.py:413
msgid "You cannot remove your own permission to view this page."
msgstr "Du kannst deine eigene Berechtigung nicht entfernen."
#: pretix/control/views/event.py:418
#: pretix/control/views/event.py:420
msgid "Your changes could not be saved."
msgstr "Die Änderungen konnten nicht gespeichert werden."
#: pretix/control/views/event.py:456
msgid ""
"You have configured at least one paid product but have not enabled any "
"payment methods."
msgstr ""
"Sie haben mindestens ein kostenpflichtiges Produkt konfiguriert aber noch "
"keine Zahlungsmethoden aktiviert."
#: pretix/control/views/event.py:464
msgid "Your shop is live now!"
msgstr "Ihr Shop ist nun online!"
#: pretix/control/views/event.py:468
msgid "We've taken your shop down. You can re-enable it whenever you want!"
msgstr ""
"Wir haben Ihren Shop ausgeschaltet. Sie können ihn hier jederzeit wieder "
"einschalten."
#: pretix/control/views/event_dashboard.py:38
msgid "Attendees (ordered)"
msgstr "Teilnehmer (bestellt)"
@@ -2368,6 +2429,22 @@ msgstr "Aktive Produkte"
msgid "{quota} left"
msgstr "{quota} übrig"
#: pretix/control/views/event_dashboard.py:97
msgid "Your ticket shop is"
msgstr "Ihr Ticket-Shop ist"
#: pretix/control/views/event_dashboard.py:97
msgid "Click here to change"
msgstr "Hier klicken zum Ändern"
#: pretix/control/views/event_dashboard.py:98
msgid "live"
msgstr "online"
#: pretix/control/views/event_dashboard.py:98
msgid "not yet public"
msgstr "deaktiviert"
#: pretix/control/views/item.py:53 pretix/control/views/item.py:635
msgid "The requested product does not exist."
msgstr "Das ausgewählte Produkt existiert nicht."
@@ -3372,27 +3449,39 @@ msgstr "Straße und Hausnummer"
msgid "You need to provide either a company name or your name."
msgstr "Du musst entweder einen Firmennamen oder deinen Namen eingeben."
#: pretix/presale/middleware.py:25
#: pretix/presale/middleware.py:26
msgid "The selected event was not found."
msgstr "Die ausgewählte Veranstaltung wurde nicht gefunden."
#: pretix/presale/middleware.py:58
#: pretix/presale/middleware.py:61
msgid "The selected ticket shop is currently not available."
msgstr "Der ausgewählte Ticket-Shop ist im Moment nicht verfügbar."
#: pretix/presale/middleware.py:64
msgid "The selected event or organizer was not found."
msgstr ""
"Die ausgewählte Veranstaltung oder der gesuchte Veranstalter wurde nicht "
"gefunden."
#: pretix/presale/templates/pretixpresale/base.html:37
#: pretix/presale/templates/pretixpresale/base.html:41
#: pretix/presale/templates/pretixpresale/base.html:39
#: pretix/presale/templates/pretixpresale/base.html:43
#: pretix/presale/templates/pretixpresale/waiting.html:21
msgid "We are processing your request…"
msgstr "Wir verarbeiten deine Anfrage…"
#: pretix/presale/templates/pretixpresale/event/base.html:41
#: pretix/presale/templates/pretixpresale/event/base.html:13
msgid "This shop is currently only visible to you and your team."
msgstr "Dieser Shop ist aktuell nur für Sie und Ihr Team sichtbar."
#: pretix/presale/templates/pretixpresale/event/base.html:15
msgid "Take it live now"
msgstr "Jetzt veröffentlichen"
#: pretix/presale/templates/pretixpresale/event/base.html:55
msgid "Contact event organizer"
msgstr "Veranstalter kontaktieren"
#: pretix/presale/templates/pretixpresale/event/base.html:44
#: pretix/presale/templates/pretixpresale/event/base.html:58
msgid "Imprint"
msgstr "Impressum"

View File

@@ -1,3 +1,4 @@
from django.conf import settings
from django.core.urlresolvers import Resolver404, resolve
from .signals import html_head
@@ -21,5 +22,6 @@ def contextprocessor(request):
for receiver, response in html_head.send(request.event, request=request):
_html_head.append(response)
ctx['html_head'] = "".join(_html_head)
ctx['site_url'] = settings.SITE_URL
return ctx

View File

@@ -1,11 +1,12 @@
from urllib.parse import urljoin
from django.core.exceptions import PermissionDenied
from django.core.urlresolvers import resolve
from django.http import Http404
from django.shortcuts import redirect
from django.utils.translation import ugettext_lazy as _
from pretix.base.models import Event, Organizer
from pretix.base.models import Event, EventPermission, Organizer
from pretix.multidomain.urlreverse import get_domain
@@ -54,6 +55,11 @@ class EventMiddleware:
path = request.get_full_path().split("/", 2)[-1]
return redirect(urljoin('%s://%s' % (request.scheme, domain), path))
if not request.event.live:
if not request.user.is_authenticated() or not EventPermission.objects.filter(
event=request.event, user=request.user).exists():
raise PermissionDenied(_('The selected ticket shop is currently not available.'))
except IndexError:
raise Http404(_('The selected event or organizer was not found.'))

View File

@@ -20,6 +20,8 @@
<link rel="icon" href="{% static "pretixbase/img/favicon.ico" %}">
</head>
<body>
{% block above %}
{% endblock %}
<div class="container">
{% block page %}
{% endblock %}

View File

@@ -5,11 +5,25 @@
{% block thetitle %}
{% block title %}{% endblock %}{% if url_name != "event.index" %} :: {% endif %}{{ event.name }}
{% endblock %}
{% block above %}
{% if not event.live %}
<div class="offline-banner">
<div class="container">
<span class="fa fa-user-secret"></span>
{% trans "This shop is currently only visible to you and your team." %}
<a href="{{ site_url }}{% url "control:event.live" event=event.slug organizer=event.organizer.slug %}">
{% trans "Take it live now" %}
</a>
</div>
</div>
{% endif %}
{% endblock %}
{% block page %}
<div class="page-header">
<h1 class="pull-left">
<a href="{% eventurl event "presale:event.index" %}">{{ event.name }}</a>
<small>{{ event.date_from|date:"DATE_FORMAT" }}{% if event.settings.show_date_to %} {{ event.date_to|date:"DATE_FORMAT" }}{% endif %}</small>
<small>{{ event.date_from|date:"DATE_FORMAT" }}{% if event.settings.show_date_to %}
{{ event.date_to|date:"DATE_FORMAT" }}{% endif %}</small>
</h1>
<div class="pull-right loginbox">
{% if request.event.settings.locales|length > 1 %}
@@ -17,7 +31,7 @@
{% for l in request.event.settings.locales %}
{% if l != request.LANGUAGE_CODE %}
<a href="{% url "presale:locale.set" %}?locale={{ l }}&next={{ request.path }}%3F{{ request.META.QUERY_STRING|urlencode }}">
<img src="{% static "pretixbase/img/flags" %}/{{ l }}.png" />
<img src="{% static "pretixbase/img/flags" %}/{{ l }}.png"/>
</a>
{% endif %}
{% endfor %}

View File

@@ -112,3 +112,19 @@ nav.navbar {
font-size: 20px;
}
}
.dashboard .shopstate {
text-align: center;
padding: 36px 0;
span.live, span.off {
display: block;
font-size: 20px;
padding: 10px 0;
}
span.live {
color: @brand-success;
}
span.off {
color: @brand-danger;
}
}

View File

@@ -79,6 +79,18 @@
.checkout-button-row {
padding: 15px 0;
}
.offline-banner {
background: @brand-danger;
color: white;
width: 100%;
padding: 5px;
text-align: center;
a {
text-decoration: underline;
color: white;
}
}
@media (max-width: @screen-sm-max) {
.checkout-button-row div {
margin-bottom: 10px;