mirror of
https://github.com/pretix/pretix.git
synced 2026-05-10 16:04:02 +00:00
change existing views
This commit is contained in:
@@ -182,12 +182,12 @@ def get_event_navigation(request: HttpRequest):
|
|||||||
'active': 'event.items.categories' in url.url_name,
|
'active': 'event.items.categories' in url.url_name,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'label': _('Questions'),
|
'label': _('Questionnaires'),
|
||||||
'url': reverse('control:event.items.questions', kwargs={
|
'url': reverse('control:event.items.questionnaires', kwargs={
|
||||||
'event': request.event.slug,
|
'event': request.event.slug,
|
||||||
'organizer': request.event.organizer.slug,
|
'organizer': request.event.organizer.slug,
|
||||||
}),
|
}),
|
||||||
'active': 'event.items.questions' in url.url_name,
|
'active': 'event.items.questionnaires' in url.url_name or 'event.items.questions' in url.url_name,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'label': _('Discounts'),
|
'label': _('Discounts'),
|
||||||
|
|||||||
@@ -12,26 +12,15 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block inside %}
|
{% block inside %}
|
||||||
{% if question %}
|
{% if question %}
|
||||||
<h1>{% blocktrans with name=question.question %}Question: {{ name }}{% endblocktrans %}</h1>
|
<h1>{% blocktrans with name=question.question %}Data field: {{ name }}{% endblocktrans %}</h1>
|
||||||
{% else %}
|
{% else %}
|
||||||
<h1>{% trans "Question" %}</h1>
|
<h1>{% trans "Data field" %}</h1>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<form action="" method="post" class="form-horizontal">
|
<form action="" method="post" class="form-horizontal">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{% bootstrap_form_errors form %}
|
{% bootstrap_form_errors form %}
|
||||||
<div class="tabbed-form">
|
|
||||||
<fieldset>
|
|
||||||
<legend>{% trans "General" %}</legend>
|
|
||||||
{% bootstrap_field form.question layout="control" %}
|
{% bootstrap_field form.question layout="control" %}
|
||||||
{% bootstrap_field form.type layout="control" %}
|
{% bootstrap_field form.type layout="control" %}
|
||||||
{% bootstrap_field form.items layout="control" %}
|
|
||||||
{% bootstrap_field form.required layout="control" %}
|
|
||||||
<div class="alert alert-info alert-required-boolean">
|
|
||||||
{% blocktrans trimmed %}
|
|
||||||
If you mark a Yes/No question as required, it means that the user has to select Yes and No is not
|
|
||||||
accepted. If you want to allow both options, do not make this field required.
|
|
||||||
{% endblocktrans %}
|
|
||||||
</div>
|
|
||||||
<div id="valid-number">
|
<div id="valid-number">
|
||||||
{% bootstrap_field form.valid_number_min layout="control" %}
|
{% bootstrap_field form.valid_number_min layout="control" %}
|
||||||
{% bootstrap_field form.valid_number_max layout="control" %}
|
{% bootstrap_field form.valid_number_max layout="control" %}
|
||||||
@@ -123,31 +112,13 @@
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
|
||||||
<fieldset>
|
|
||||||
<legend>{% trans "Advanced" %}</legend>
|
|
||||||
{% bootstrap_field form.help_text layout="control" %}
|
|
||||||
{% bootstrap_field form.identifier layout="control" %}
|
{% bootstrap_field form.identifier layout="control" %}
|
||||||
{% bootstrap_field form.ask_during_checkin layout="control" %}
|
{% bootstrap_field form.ask_during_checkin layout="control" %}
|
||||||
{% bootstrap_field form.show_during_checkin layout="control" %}
|
{% bootstrap_field form.show_during_checkin layout="control" %}
|
||||||
{% bootstrap_field form.hidden layout="control" %}
|
{% bootstrap_field form.hidden layout="control" %}
|
||||||
{% bootstrap_field form.print_on_invoice layout="control" %}
|
{% bootstrap_field form.print_on_invoice layout="control" %}
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-md-3 control-label" for="id_dependency_question">
|
|
||||||
{% trans "Question dependency" %}
|
|
||||||
<br><span class="optional">{% trans "Optional" context "form" %}</span>
|
|
||||||
</label>
|
|
||||||
<div class="col-md-4">
|
|
||||||
{% bootstrap_field form.dependency_question layout="inline" form_group_class="inner" %}
|
|
||||||
</div>
|
|
||||||
<div class="col-md-5">
|
|
||||||
<script type="text/plain" id="dependency_value_val">{{ form.instance.dependency_values|escapejson_dumps }}</script>
|
|
||||||
{% bootstrap_field form.dependency_values layout="inline" form_group_class="inner" %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
<div class="form-group submit-group">
|
<div class="form-group submit-group">
|
||||||
<button type="submit" class="btn btn-primary btn-save">
|
<button type="submit" class="btn btn-primary btn-save">
|
||||||
{% trans "Save" %}
|
{% trans "Save" %}
|
||||||
|
|||||||
@@ -2,14 +2,17 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% load bootstrap3 %}
|
{% load bootstrap3 %}
|
||||||
{% load static %}
|
{% load static %}
|
||||||
|
{% load icon %}
|
||||||
{% load compress %}
|
{% load compress %}
|
||||||
{% load vite %}
|
{% load vite %}
|
||||||
|
|
||||||
|
|
||||||
{% block title %}
|
{% block title %}
|
||||||
{% trans "Questionnaires" %}
|
{% trans "Questionnaires" %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block inside %}
|
{% block inside %}
|
||||||
|
<a href="{% url "control:event.items.questions" organizer=request.event.organizer.slug event=request.event.slug %}" class="btn btn-default pull-right">
|
||||||
|
{% icon "wrench" %} {% trans "Manage data fields" %}
|
||||||
|
</a>
|
||||||
<h1>{% trans "Questionnaires" %}</h1>
|
<h1>{% trans "Questionnaires" %}</h1>
|
||||||
<p>
|
<p>
|
||||||
{% blocktrans trimmed %}
|
{% blocktrans trimmed %}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{% extends "pretixcontrol/items/base.html" %}
|
{% extends "pretixcontrol/items/base.html" %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% block title %}{% trans "Questions" %}{% endblock %}
|
{% block title %}{% trans "Data fields" %}{% endblock %}
|
||||||
{% block inside %}
|
{% block inside %}
|
||||||
<h1>{% trans "Questions" %}</h1>
|
<h1>{% trans "Data fields" %}</h1>
|
||||||
<p>
|
<p>
|
||||||
{% blocktrans trimmed %}
|
{% blocktrans trimmed %}
|
||||||
Questions allow your attendees to fill in additional data about their ticket. If you provide food, one
|
Questions allow your attendees to fill in additional data about their ticket. If you provide food, one
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{% if 'event.items:write' in request.eventpermset %}
|
{% if 'event.items:write' in request.eventpermset %}
|
||||||
<p>
|
<p>
|
||||||
<a href="{% url "control:event.items.questions.add" organizer=request.event.organizer.slug event=request.event.slug %}" class="btn btn-default"><i class="fa fa-plus"></i> {% trans "Create a new question" %}
|
<a href="{% url "control:event.items.questions.add" organizer=request.event.organizer.slug event=request.event.slug %}" class="btn btn-default"><i class="fa fa-plus"></i> {% trans "Create a new data field" %}
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -20,39 +20,27 @@
|
|||||||
<table class="table table-hover table-quotas">
|
<table class="table table-hover table-quotas">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{% trans "Question" %}</th>
|
<th>{% trans "Internal name" %}</th>
|
||||||
<th>{% trans "Type" %}</th>
|
<th>{% trans "Type" %}</th>
|
||||||
<th class="iconcol"></th>
|
<th class="iconcol"></th>
|
||||||
<th class="iconcol"></th>
|
<th class="iconcol"></th>
|
||||||
<th class="iconcol"></th>
|
<th class="iconcol"></th>
|
||||||
<th>{% trans "Products" %}</th>
|
|
||||||
{% if 'event.items:write' in request.eventpermset %}
|
|
||||||
<th class="action-col-2"></th>
|
|
||||||
{% endif %}
|
|
||||||
<th class="action-col-2"></th>
|
<th class="action-col-2"></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody data-dnd-url="{% url "control:event.items.questions.reorder" organizer=request.event.organizer.slug event=request.event.slug %}">
|
<tbody>
|
||||||
{% for q in questions %}
|
{% for q in questions %}
|
||||||
<tr data-dnd-id="{{ q.id }}">
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<strong>
|
<strong>
|
||||||
{% if q.pk %}
|
|
||||||
<a href="{% url "control:event.items.questions.show" organizer=request.event.organizer.slug event=request.event.slug question=q.id %}">
|
<a href="{% url "control:event.items.questions.show" organizer=request.event.organizer.slug event=request.event.slug question=q.id %}">
|
||||||
{% endif %}
|
|
||||||
{{ q.question }}
|
{{ q.question }}
|
||||||
{% if q.pk %}
|
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
|
||||||
</strong><br>
|
</strong><br>
|
||||||
<small class="text-muted">{{ q.identifier }}</small>
|
<small class="text-muted">{{ q.identifier }}</small>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{% if q.pk %}
|
|
||||||
{{ q.get_type_display }}
|
{{ q.get_type_display }}
|
||||||
{% else %}
|
|
||||||
{% trans "System question" %}
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{% if q.required %}
|
{% if q.required %}
|
||||||
@@ -63,43 +51,18 @@
|
|||||||
{% if q.pk and q.ask_during_checkin %}
|
{% if q.pk and q.ask_during_checkin %}
|
||||||
<span class="fa fa-check-square text-muted" data-toggle="tooltip" title="{% trans "Ask during check-in" %}"></span>
|
<span class="fa fa-check-square text-muted" data-toggle="tooltip" title="{% trans "Ask during check-in" %}"></span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{% if q.pk and q.hidden %}
|
{% if q.pk and q.hidden %}
|
||||||
<span class="fa fa-eye-slash text-muted" data-toggle="tooltip" title="{% trans "Hidden question" %}"></span>
|
<span class="fa fa-eye-slash text-muted" data-toggle="tooltip" title="{% trans "Hidden question" %}"></span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
|
||||||
{% if q.pk %}
|
|
||||||
<ul>
|
|
||||||
{% for item in q.items.all %}
|
|
||||||
<li>
|
|
||||||
<a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=item.id %}">{{ item }}</a>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
{% else %}
|
|
||||||
<small>{% trans "All personalized products" %}</small>
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
{% if 'event.items:write' in request.eventpermset %}
|
|
||||||
<td class="dnd-container">
|
|
||||||
</td>
|
|
||||||
{% endif %}
|
|
||||||
<td class="text-right flip">
|
<td class="text-right flip">
|
||||||
{% if q.pk %}
|
|
||||||
<a href="{% url "control:event.items.questions.show" organizer=request.event.organizer.slug event=request.event.slug question=q.id %}" class="btn btn-default btn-sm"><i class="fa fa-bar-chart"></i></a>
|
<a href="{% url "control:event.items.questions.show" organizer=request.event.organizer.slug event=request.event.slug question=q.id %}" class="btn btn-default btn-sm"><i class="fa fa-bar-chart"></i></a>
|
||||||
{% if 'event.items:write' in request.eventpermset %}
|
{% if 'event.items:write' in request.eventpermset %}
|
||||||
<a href="{% url "control:event.items.questions.edit" organizer=request.event.organizer.slug event=request.event.slug question=q.id %}" class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
|
<a href="{% url "control:event.items.questions.edit" organizer=request.event.organizer.slug event=request.event.slug question=q.id %}" class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
|
||||||
<a href="{% url "control:event.items.questions.delete" organizer=request.event.organizer.slug event=request.event.slug question=q.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
|
<a href="{% url "control:event.items.questions.delete" organizer=request.event.organizer.slug event=request.event.slug question=q.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
|
||||||
{% if 'event.settings.general:write' in request.eventpermset %}
|
|
||||||
<a href="{% url "control:event.settings" organizer=request.event.organizer.slug event=request.event.slug %}#tab-0-2-open"
|
|
||||||
class="btn btn-default btn-sm"><i class="fa fa-wrench"></i></a>
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
@@ -435,87 +435,7 @@ class QuestionList(ListView):
|
|||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
ctx = super().get_context_data(**kwargs)
|
ctx = super().get_context_data(**kwargs)
|
||||||
questions = []
|
questions = list(ctx['questions'])
|
||||||
|
|
||||||
if self.request.event.settings.attendee_names_asked:
|
|
||||||
questions.append(
|
|
||||||
FakeQuestion(
|
|
||||||
id='attendee_name_parts',
|
|
||||||
question=_('Attendee name'),
|
|
||||||
position=self.request.event.settings.system_question_order.get(
|
|
||||||
'attendee_name_parts', 0
|
|
||||||
),
|
|
||||||
required=self.request.event.settings.attendee_names_required,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
if self.request.event.settings.attendee_emails_asked:
|
|
||||||
questions.append(
|
|
||||||
FakeQuestion(
|
|
||||||
id='attendee_email',
|
|
||||||
question=_('Attendee email'),
|
|
||||||
position=self.request.event.settings.system_question_order.get(
|
|
||||||
'attendee_email', 0
|
|
||||||
),
|
|
||||||
required=self.request.event.settings.attendee_emails_required,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
if self.request.event.settings.attendee_company_asked:
|
|
||||||
questions.append(
|
|
||||||
FakeQuestion(
|
|
||||||
id='company',
|
|
||||||
question=_('Company'),
|
|
||||||
position=self.request.event.settings.system_question_order.get(
|
|
||||||
'company', 0
|
|
||||||
),
|
|
||||||
required=self.request.event.settings.attendee_company_required,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
if self.request.event.settings.attendee_addresses_asked:
|
|
||||||
questions.append(
|
|
||||||
FakeQuestion(
|
|
||||||
id='street',
|
|
||||||
question=_('Street'),
|
|
||||||
position=self.request.event.settings.system_question_order.get(
|
|
||||||
'street', 0
|
|
||||||
),
|
|
||||||
required=self.request.event.settings.attendee_addresses_required,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
questions.append(
|
|
||||||
FakeQuestion(
|
|
||||||
id='zipcode',
|
|
||||||
question=_('ZIP code'),
|
|
||||||
position=self.request.event.settings.system_question_order.get(
|
|
||||||
'zipcode', 0
|
|
||||||
),
|
|
||||||
required=self.request.event.settings.attendee_addresses_required,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
questions.append(
|
|
||||||
FakeQuestion(
|
|
||||||
id='city',
|
|
||||||
question=_('City'),
|
|
||||||
position=self.request.event.settings.system_question_order.get(
|
|
||||||
'city', 0
|
|
||||||
),
|
|
||||||
required=self.request.event.settings.attendee_addresses_required,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
questions.append(
|
|
||||||
FakeQuestion(
|
|
||||||
id='country',
|
|
||||||
question=_('Country'),
|
|
||||||
position=self.request.event.settings.system_question_order.get(
|
|
||||||
'country', 0
|
|
||||||
),
|
|
||||||
required=self.request.event.settings.attendee_addresses_required,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
questions += list(ctx['questions'])
|
|
||||||
questions.sort(key=lambda q: q.position)
|
questions.sort(key=lambda q: q.position)
|
||||||
ctx['questions'] = questions
|
ctx['questions'] = questions
|
||||||
return ctx
|
return ctx
|
||||||
|
|||||||
Reference in New Issue
Block a user