Move welcome widget

This commit is contained in:
Raphael Michel
2026-07-27 21:56:42 +02:00
parent 8528b5d943
commit bcb8b0a85a
4 changed files with 22 additions and 56 deletions
@@ -0,0 +1,19 @@
{% load i18n %}
<div class="panel panel-primary">
<div class="panel-heading">
<h2 class="panel-title">{% trans "Welcome to pretix!" %}</h2>
</div>
<div class="panel-body">
<div class="attentionline">{% trans "Get started with our setup tool" %}</div>
<p>
{% blocktrans trimmed %}
To start selling tickets, you need to create products or quotas. The fastest way to create
this is to use our setup tool.
{% endblocktrans %}
</p>
<a href="{% url "control:event.quick" organizer=request.organizer.slug event=request.event.slug %}"
class="btn btn-primary btn-lg">
{% trans "Set up event" %}
</a>
</div>
</div>
@@ -1,12 +0,0 @@
<div class="welcome-wizard">
<h3>{{ title }}</h3>
{% if subtitle %}
<div class="attentionline">{{ subtitle }}</div>
{% endif %}
{% if text %}
<p>{{ text }}</p>
{% endif %}
{% if button_text %}
<p><a href="{{ button_url }}" class="btn btn-primary btn-lg">{{ button_text }}</a></p>
{% endif %}
</div>
@@ -71,7 +71,9 @@
hx-indicator="#warnings_indicator" hx-indicator="#warnings_indicator"
hx-trigger="load"></div> hx-trigger="load"></div>
<div id="warnings_target"></div> {% if not request.event.items.exists %}
{% include "pretixcontrol/event/dashboard_partial_welcome.html" %}
{% endif %}
{% if not request.event.has_subevents %} {% if not request.event.has_subevents %}
{% include "pretixcontrol/event/fragment_timeline.html" %} {% include "pretixcontrol/event/fragment_timeline.html" %}
-43
View File
@@ -46,7 +46,6 @@ from django.db.models.functions import Coalesce, Greatest
from django.dispatch import receiver from django.dispatch import receiver
from django.http import Http404, JsonResponse from django.http import Http404, JsonResponse
from django.shortcuts import render from django.shortcuts import render
from django.template.loader import get_template
from django.urls import reverse from django.urls import reverse
from django.utils.formats import date_format from django.utils.formats import date_format
from django.utils.html import conditional_escape, escape, format_html from django.utils.html import conditional_escape, escape, format_html
@@ -79,13 +78,6 @@ def base_widgets(sender, subevent=None, lazy=False, widgets_override_active=Fals
if widgets_override_active: if widgets_override_active:
return [] return []
if not lazy: if not lazy:
prodc = Item.objects.filter(
event=sender, active=True,
).filter(
(Q(available_until__isnull=True) | Q(available_until__gte=now())) &
(Q(available_from__isnull=True) | Q(available_from__lte=now()))
).count()
if subevent: if subevent:
opqs = OrderPosition.objects.filter(subevent=subevent) opqs = OrderPosition.objects.filter(subevent=subevent)
else: else:
@@ -148,16 +140,6 @@ def base_widgets(sender, subevent=None, lazy=False, widgets_override_active=Fals
'organizer': sender.organizer.slug 'organizer': sender.organizer.slug
}) + ('?subevent={}'.format(subevent.pk) if subevent else '') }) + ('?subevent={}'.format(subevent.pk) if subevent else '')
}, },
{
'content': None if lazy else format_html(NUM_WIDGET, num=prodc, text=_('Active products')),
'lazy': 'active-products',
'display_size': 'small',
'priority': 100,
'url': reverse('control:event.items', kwargs={
'event': sender.slug,
'organizer': sender.organizer.slug
})
},
] ]
@@ -239,31 +221,6 @@ def waitinglist_widgets(sender, subevent=None, lazy=False, **kwargs):
return widgets return widgets
@receiver(signal=event_dashboard_widgets)
def welcome_wizard_widget(sender, **kwargs):
template = get_template('pretixcontrol/event/dashboard_widget_welcome.html')
ctx = {
'title': _('Welcome to pretix!')
}
kwargs = {'event': sender.slug, 'organizer': sender.organizer.slug}
if not sender.items.exists():
ctx.update({
'subtitle': _('Get started with our setup tool'),
'text': _('To start selling tickets, you need to create products or quotas. The fastest way to create '
'this is to use our setup tool.'),
'button_text': _('Set up event'),
'button_url': reverse('control:event.quick', kwargs=kwargs)
})
else:
return []
return [{
'display_size': 'full',
'priority': 2000,
'content': template.render(ctx)
}]
def build_json_response(widgets): def build_json_response(widgets):
for widget in widgets: for widget in widgets:
widget['content'] = conditional_escape(widget['content']) widget['content'] = conditional_escape(widget['content'])