forked from CGM_Public/pretix_original
Compare commits
30 Commits
utils
...
manual-ins
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
702563a9e4 | ||
|
|
827e127568 | ||
|
|
ce0e0d7fd1 | ||
|
|
152a956dc5 | ||
|
|
68e2c355e6 | ||
|
|
171615558f | ||
|
|
a1765910ea | ||
|
|
417277958b | ||
|
|
0d50494e89 | ||
|
|
c6f634ce72 | ||
|
|
adc78c14ab | ||
|
|
b4ca2bdbb4 | ||
|
|
9a7ff592af | ||
|
|
548b54cca6 | ||
|
|
e736791446 | ||
|
|
7bd945b2e6 | ||
|
|
a07d5aaf05 | ||
|
|
0cf1a32902 | ||
|
|
be6aae8577 | ||
|
|
fe80f5fb78 | ||
|
|
a2c15ad89e | ||
|
|
cab0f37830 | ||
|
|
0423980058 | ||
|
|
63983b1b68 | ||
|
|
61241c2a1e | ||
|
|
4069c61054 | ||
|
|
9bf4fb2d0f | ||
|
|
ff910f293f | ||
|
|
74f7bec617 | ||
|
|
467a35e353 |
@@ -66,7 +66,7 @@ To build and run pretix, you will need the following debian packages::
|
|||||||
|
|
||||||
# apt-get install git build-essential python3-dev python3-venv python3 python3-pip \
|
# apt-get install git build-essential python3-dev python3-venv python3 python3-pip \
|
||||||
libxml2-dev libxslt1-dev libffi-dev zlib1g-dev libssl-dev \
|
libxml2-dev libxslt1-dev libffi-dev zlib1g-dev libssl-dev \
|
||||||
gettext libpq-dev libjpeg-dev libopenjp2-7-dev
|
gettext libpq-dev libjpeg-dev libopenjp2-7-dev 2to3
|
||||||
|
|
||||||
Config file
|
Config file
|
||||||
-----------
|
-----------
|
||||||
|
|||||||
@@ -80,18 +80,18 @@ dependencies = [
|
|||||||
"psycopg2-binary",
|
"psycopg2-binary",
|
||||||
"pycountry",
|
"pycountry",
|
||||||
"pycparser==2.22",
|
"pycparser==2.22",
|
||||||
"pycryptodome==3.20.*",
|
"pycryptodome==3.21.*",
|
||||||
"pypdf==5.0.*",
|
"pypdf==5.0.*",
|
||||||
"python-bidi==0.6.*", # Support for Arabic in reportlab
|
"python-bidi==0.6.*", # Support for Arabic in reportlab
|
||||||
"python-dateutil==2.9.*",
|
"python-dateutil==2.9.*",
|
||||||
"pytz",
|
"pytz",
|
||||||
"pytz-deprecation-shim==0.1.*",
|
"pytz-deprecation-shim==0.1.*",
|
||||||
"pyuca",
|
"pyuca",
|
||||||
"qrcode==7.4.*",
|
"qrcode==8.0",
|
||||||
"redis==5.0.*",
|
"redis==5.1.*",
|
||||||
"reportlab==4.2.*",
|
"reportlab==4.2.*",
|
||||||
"requests==2.31.*",
|
"requests==2.31.*",
|
||||||
"sentry-sdk==2.14.*",
|
"sentry-sdk==2.15.*",
|
||||||
"sepaxml==2.6.*",
|
"sepaxml==2.6.*",
|
||||||
"slimit",
|
"slimit",
|
||||||
"stripe==7.9.*",
|
"stripe==7.9.*",
|
||||||
|
|||||||
@@ -19,4 +19,4 @@
|
|||||||
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
|
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
|
||||||
# <https://www.gnu.org/licenses/>.
|
# <https://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
__version__ = "2024.9.0.dev0"
|
__version__ = "2024.10.0.dev0"
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ class Command(BaseCommand):
|
|||||||
def add_arguments(self, parser):
|
def add_arguments(self, parser):
|
||||||
parser.add_argument('--tasks', action='store', type=str, help='Only execute the tasks with this name '
|
parser.add_argument('--tasks', action='store', type=str, help='Only execute the tasks with this name '
|
||||||
'(dotted path, comma separation)')
|
'(dotted path, comma separation)')
|
||||||
|
parser.add_argument('--list-tasks', action='store_true', help='Only list all tasks')
|
||||||
parser.add_argument('--exclude', action='store', type=str, help='Exclude the tasks with this name '
|
parser.add_argument('--exclude', action='store', type=str, help='Exclude the tasks with this name '
|
||||||
'(dotted path, comma separation)')
|
'(dotted path, comma separation)')
|
||||||
|
|
||||||
@@ -61,6 +62,9 @@ class Command(BaseCommand):
|
|||||||
|
|
||||||
for receiver in periodic_task._live_receivers(self):
|
for receiver in periodic_task._live_receivers(self):
|
||||||
name = f'{receiver.__module__}.{receiver.__name__}'
|
name = f'{receiver.__module__}.{receiver.__name__}'
|
||||||
|
if options['list_tasks']:
|
||||||
|
print(name)
|
||||||
|
continue
|
||||||
if options.get('tasks'):
|
if options.get('tasks'):
|
||||||
if name not in options.get('tasks').split(','):
|
if name not in options.get('tasks').split(','):
|
||||||
continue
|
continue
|
||||||
|
|||||||
@@ -2835,6 +2835,14 @@ class OrderPosition(AbstractPosition):
|
|||||||
(self.order.event.settings.change_allow_user_addons and ItemAddOn.objects.filter(base_item_id__in=[op.item_id for op in positions]).exists())
|
(self.order.event.settings.change_allow_user_addons and ItemAddOn.objects.filter(base_item_id__in=[op.item_id for op in positions]).exists())
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def code(self):
|
||||||
|
"""
|
||||||
|
A ticket code which is unique among all events of a single organizer,
|
||||||
|
built by the order code and the position number.
|
||||||
|
"""
|
||||||
|
return '{order_code}-{position}'.format(order_code=self.order.code, position=self.positionid)
|
||||||
|
|
||||||
|
|
||||||
class Transaction(models.Model):
|
class Transaction(models.Model):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -1182,10 +1182,11 @@ def process_exit_all(sender, **kwargs):
|
|||||||
positions = cl.positions_inside_query(ignore_status=True, at_time=cl.exit_all_at)
|
positions = cl.positions_inside_query(ignore_status=True, at_time=cl.exit_all_at)
|
||||||
for p in positions:
|
for p in positions:
|
||||||
with scope(organizer=cl.event.organizer):
|
with scope(organizer=cl.event.organizer):
|
||||||
ci = Checkin.objects.create(
|
ci, created = Checkin.objects.get_or_create(
|
||||||
position=p, list=cl, auto_checked_in=True, type=Checkin.TYPE_EXIT, datetime=cl.exit_all_at
|
position=p, list=cl, auto_checked_in=True, type=Checkin.TYPE_EXIT, datetime=cl.exit_all_at
|
||||||
)
|
)
|
||||||
checkin_created.send(cl.event, checkin=ci)
|
if created:
|
||||||
|
checkin_created.send(cl.event, checkin=ci)
|
||||||
d = cl.exit_all_at.astimezone(cl.event.timezone)
|
d = cl.exit_all_at.astimezone(cl.event.timezone)
|
||||||
if cl.event.settings.get(f'autocheckin_dst_hack_{cl.pk}'): # move time back if yesterday was DST switch
|
if cl.event.settings.get(f'autocheckin_dst_hack_{cl.pk}'): # move time back if yesterday was DST switch
|
||||||
d -= timedelta(hours=1)
|
d -= timedelta(hours=1)
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ def timeline_for_event(event, subevent=None):
|
|||||||
tl.append(TimelineEvent(
|
tl.append(TimelineEvent(
|
||||||
event=event, subevent=subevent,
|
event=event, subevent=subevent,
|
||||||
datetime=rd.datetime(ev),
|
datetime=rd.datetime(ev),
|
||||||
description=pgettext_lazy('timeline', 'Customers can no longer modify their orders'),
|
description=pgettext_lazy('timeline', 'Customers can no longer modify their order information'),
|
||||||
edit_url=ev_edit_url
|
edit_url=ev_edit_url
|
||||||
))
|
))
|
||||||
|
|
||||||
@@ -159,6 +159,18 @@ def timeline_for_event(event, subevent=None):
|
|||||||
})
|
})
|
||||||
))
|
))
|
||||||
|
|
||||||
|
rd = event.settings.get('change_allow_user_until', as_type=RelativeDateWrapper)
|
||||||
|
if rd and event.settings.change_allow_user_until:
|
||||||
|
tl.append(TimelineEvent(
|
||||||
|
event=event, subevent=subevent,
|
||||||
|
datetime=rd.datetime(ev),
|
||||||
|
description=pgettext_lazy('timeline', 'Customers can no longer make changes to their orders'),
|
||||||
|
edit_url=reverse('control:event.settings.cancel', kwargs={
|
||||||
|
'event': event.slug,
|
||||||
|
'organizer': event.organizer.slug
|
||||||
|
})
|
||||||
|
))
|
||||||
|
|
||||||
rd = event.settings.get('waiting_list_auto_disable', as_type=RelativeDateWrapper)
|
rd = event.settings.get('waiting_list_auto_disable', as_type=RelativeDateWrapper)
|
||||||
if rd and event.settings.waiting_list_enabled:
|
if rd and event.settings.waiting_list_enabled:
|
||||||
tl.append(TimelineEvent(
|
tl.append(TimelineEvent(
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
{% bootstrap_field form.eu_reverse_charge layout="control" %}
|
{% bootstrap_field form.eu_reverse_charge layout="control" %}
|
||||||
{% bootstrap_field form.home_country layout="control" %}
|
{% bootstrap_field form.home_country layout="control" %}
|
||||||
{% bootstrap_field form.keep_gross_if_rate_changes layout="control" %}
|
{% bootstrap_field form.keep_gross_if_rate_changes layout="control" %}
|
||||||
<h3>{% trans "Custom taxation rules" %}</h3>
|
<h3>{% trans "Custom rules" %}</h3>
|
||||||
<div class="alert alert-warning">
|
<div class="alert alert-warning">
|
||||||
{% blocktrans trimmed %}
|
{% blocktrans trimmed %}
|
||||||
These settings are intended for professional users with very specific taxation situations.
|
These settings are intended for professional users with very specific taxation situations.
|
||||||
|
|||||||
@@ -133,7 +133,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{{ i.default_price|money:request.event.currency }}
|
{{ i.default_price|money:request.event.currency }}
|
||||||
{% if i.original_price %}<strike class="text-muted">{{ i.original_price|money:request.event.currency }}</strike>{% endif %}
|
{% if i.original_price %}<strike class="text-muted">{{ i.original_price|money:request.event.currency }}</strike>{% endif %}
|
||||||
{% if i.tax_rule and i.default_price %}
|
{% if i.tax_rule %}
|
||||||
<br/>
|
<br/>
|
||||||
<small class="text-muted">
|
<small class="text-muted">
|
||||||
{% if not i.tax_rule.price_includes_tax %}
|
{% if not i.tax_rule.price_includes_tax %}
|
||||||
|
|||||||
@@ -21,6 +21,11 @@
|
|||||||
{% trans "The waiting list is no longer active for this event. The waiting list no longer affects quotas and no longer notifies waiting users." %}
|
{% trans "The waiting list is no longer active for this event. The waiting list no longer affects quotas and no longer notifies waiting users." %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if request.event.settings.hide_sold_out %}
|
||||||
|
<div class="alert alert-warning">
|
||||||
|
{% trans "According to your event settings, sold out products are hidden from customers. This way, customers will not be able to discovere the waiting list." %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
{% if 'can_change_orders' in request.eventpermset %}
|
{% if 'can_change_orders' in request.eventpermset %}
|
||||||
<form method="post" class="col-md-6"
|
<form method="post" class="col-md-6"
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -4,6 +4,7 @@ AES
|
|||||||
Absenderadresse
|
Absenderadresse
|
||||||
Absenderinformation
|
Absenderinformation
|
||||||
Absendername
|
Absendername
|
||||||
|
ABGEKÜNDIGT
|
||||||
Admin
|
Admin
|
||||||
Adminbereich
|
Adminbereich
|
||||||
Affirm
|
Affirm
|
||||||
@@ -25,6 +26,7 @@ Ausgangsscans
|
|||||||
ausgeklappt
|
ausgeklappt
|
||||||
ausgecheckt
|
ausgecheckt
|
||||||
auswahl
|
auswahl
|
||||||
|
Auth
|
||||||
Authentication
|
Authentication
|
||||||
Authenticator
|
Authenticator
|
||||||
Authentifizierungsmechanismus
|
Authentifizierungsmechanismus
|
||||||
@@ -36,6 +38,7 @@ Bancontact
|
|||||||
BankID
|
BankID
|
||||||
Banking
|
Banking
|
||||||
barcodes
|
barcodes
|
||||||
|
Baskisch
|
||||||
Bcc
|
Bcc
|
||||||
BCC
|
BCC
|
||||||
Beispielevent
|
Beispielevent
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -4,6 +4,7 @@ AES
|
|||||||
Absenderadresse
|
Absenderadresse
|
||||||
Absenderinformation
|
Absenderinformation
|
||||||
Absendername
|
Absendername
|
||||||
|
ABGEKÜNDIGT
|
||||||
Admin
|
Admin
|
||||||
Adminbereich
|
Adminbereich
|
||||||
Affirm
|
Affirm
|
||||||
@@ -25,6 +26,7 @@ Ausgangsscans
|
|||||||
ausgeklappt
|
ausgeklappt
|
||||||
ausgecheckt
|
ausgecheckt
|
||||||
auswahl
|
auswahl
|
||||||
|
Auth
|
||||||
Authentication
|
Authentication
|
||||||
Authenticator
|
Authenticator
|
||||||
Authentifizierungsmechanismus
|
Authentifizierungsmechanismus
|
||||||
@@ -36,6 +38,7 @@ Bancontact
|
|||||||
BankID
|
BankID
|
||||||
Banking
|
Banking
|
||||||
barcodes
|
barcodes
|
||||||
|
Baskisch
|
||||||
Bcc
|
Bcc
|
||||||
BCC
|
BCC
|
||||||
Beispielevent
|
Beispielevent
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-08-27 13:34+0000\n"
|
"POT-Creation-Date: 2024-09-26 11:23+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1061
src/pretix/locale/et/LC_MESSAGES/djangojs.po
Normal file
1061
src/pretix/locale/et/LC_MESSAGES/djangojs.po
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-08-27 13:34+0000\n"
|
"POT-Creation-Date: 2024-09-26 11:23+0000\n"
|
||||||
"PO-Revision-Date: 2024-09-06 08:47+0000\n"
|
"PO-Revision-Date: 2024-09-06 08:47+0000\n"
|
||||||
"Last-Translator: Albizuri <oier@puntu.eus>\n"
|
"Last-Translator: Albizuri <oier@puntu.eus>\n"
|
||||||
"Language-Team: Basque <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
"Language-Team: Basque <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
||||||
@@ -557,17 +557,14 @@ msgid "absent"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:171
|
#: pretix/static/pretixcontrol/js/ui/editor.js:171
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:72
|
|
||||||
msgid "Check-in QR"
|
msgid "Check-in QR"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:543
|
#: pretix/static/pretixcontrol/js/ui/editor.js:543
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:387
|
|
||||||
msgid "The PDF background file could not be loaded for the following reason:"
|
msgid "The PDF background file could not be loaded for the following reason:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:894
|
#: pretix/static/pretixcontrol/js/ui/editor.js:894
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:656
|
|
||||||
msgid "Group of objects"
|
msgid "Group of objects"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -580,44 +577,35 @@ msgid "Text box"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:903
|
#: pretix/static/pretixcontrol/js/ui/editor.js:903
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:663
|
|
||||||
msgid "Barcode area"
|
msgid "Barcode area"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:905
|
#: pretix/static/pretixcontrol/js/ui/editor.js:905
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:665
|
|
||||||
msgid "Image area"
|
msgid "Image area"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:907
|
#: pretix/static/pretixcontrol/js/ui/editor.js:907
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:667
|
|
||||||
msgid "Powered by pretix"
|
msgid "Powered by pretix"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:909
|
#: pretix/static/pretixcontrol/js/ui/editor.js:909
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:669
|
|
||||||
msgid "Object"
|
msgid "Object"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:913
|
#: pretix/static/pretixcontrol/js/ui/editor.js:913
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:673
|
|
||||||
msgid "Ticket design"
|
msgid "Ticket design"
|
||||||
msgstr "Sarrera diseinua"
|
msgstr "Sarrera diseinua"
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:1250
|
#: pretix/static/pretixcontrol/js/ui/editor.js:1250
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:972
|
|
||||||
msgid "Saving failed."
|
msgid "Saving failed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:1319
|
#: pretix/static/pretixcontrol/js/ui/editor.js:1319
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:1370
|
#: pretix/static/pretixcontrol/js/ui/editor.js:1370
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:1041
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:1091
|
|
||||||
msgid "Error while uploading your PDF file, please try again."
|
msgid "Error while uploading your PDF file, please try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:1353
|
#: pretix/static/pretixcontrol/js/ui/editor.js:1353
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:1074
|
|
||||||
msgid "Do you really want to leave the editor without saving your changes?"
|
msgid "Do you really want to leave the editor without saving your changes?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -634,17 +622,14 @@ msgid "Unknown error."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:318
|
#: pretix/static/pretixcontrol/js/ui/main.js:318
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:313
|
|
||||||
msgid "Your color has great contrast and is very easy to read!"
|
msgid "Your color has great contrast and is very easy to read!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:322
|
#: pretix/static/pretixcontrol/js/ui/main.js:322
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:317
|
|
||||||
msgid "Your color has decent contrast and is probably good-enough to read!"
|
msgid "Your color has decent contrast and is probably good-enough to read!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:326
|
#: pretix/static/pretixcontrol/js/ui/main.js:326
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:321
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your color has bad contrast for text on white background, please choose a "
|
"Your color has bad contrast for text on white background, please choose a "
|
||||||
"darker shade."
|
"darker shade."
|
||||||
@@ -652,48 +637,38 @@ msgstr ""
|
|||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:491
|
#: pretix/static/pretixcontrol/js/ui/main.js:491
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:511
|
#: pretix/static/pretixcontrol/js/ui/main.js:511
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:475
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:495
|
|
||||||
msgid "Search query"
|
msgid "Search query"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:509
|
#: pretix/static/pretixcontrol/js/ui/main.js:509
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:493
|
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Guztiak"
|
msgstr "Guztiak"
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:510
|
#: pretix/static/pretixcontrol/js/ui/main.js:510
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:494
|
|
||||||
msgid "None"
|
msgid "None"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:514
|
#: pretix/static/pretixcontrol/js/ui/main.js:514
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:498
|
|
||||||
msgid "Selected only"
|
msgid "Selected only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:847
|
#: pretix/static/pretixcontrol/js/ui/main.js:847
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:828
|
|
||||||
msgid "Enter page number between 1 and %(max)s."
|
msgid "Enter page number between 1 and %(max)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:850
|
#: pretix/static/pretixcontrol/js/ui/main.js:850
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:831
|
|
||||||
msgid "Invalid page number."
|
msgid "Invalid page number."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:1008
|
#: pretix/static/pretixcontrol/js/ui/main.js:1008
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:989
|
|
||||||
msgid "Use a different name internally"
|
msgid "Use a different name internally"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:1048
|
#: pretix/static/pretixcontrol/js/ui/main.js:1048
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:1029
|
|
||||||
msgid "Click to close"
|
msgid "Click to close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:1123
|
#: pretix/static/pretixcontrol/js/ui/main.js:1123
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:1104
|
|
||||||
msgid "You have unsaved changes!"
|
msgid "You have unsaved changes!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -731,7 +706,8 @@ msgstr "Saskia iraungita"
|
|||||||
msgid "The items in your cart are reserved for you for one minute."
|
msgid "The items in your cart are reserved for you for one minute."
|
||||||
msgid_plural "The items in your cart are reserved for you for {num} minutes."
|
msgid_plural "The items in your cart are reserved for you for {num} minutes."
|
||||||
msgstr[0] "Zure saskiko produktuak minutu -ez erreserbatuta daude zuretzat."
|
msgstr[0] "Zure saskiko produktuak minutu -ez erreserbatuta daude zuretzat."
|
||||||
msgstr[1] "Zure saskiko produktuak {num} minutuz erreserbatuta daude zuretzat."
|
msgstr[1] ""
|
||||||
|
"Zure saskiko produktuak {num} minutuz erreserbatuta daude zuretzat."
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:203
|
#: pretix/static/pretixpresale/js/ui/main.js:203
|
||||||
msgid "The organizer keeps %(currency)s %(amount)s"
|
msgid "The organizer keeps %(currency)s %(amount)s"
|
||||||
@@ -1099,7 +1075,3 @@ msgstr ""
|
|||||||
#: pretix/static/pretixpresale/js/widget/widget.js:89
|
#: pretix/static/pretixpresale/js/widget/widget.js:89
|
||||||
msgid "December"
|
msgid "December"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:661
|
|
||||||
msgid "Text object"
|
|
||||||
msgstr ""
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -8,16 +8,16 @@ msgstr ""
|
|||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-08-27 13:34+0000\n"
|
"POT-Creation-Date: 2024-08-27 13:34+0000\n"
|
||||||
"PO-Revision-Date: 2020-01-24 08:00+0000\n"
|
"PO-Revision-Date: 2024-10-01 22:52+0000\n"
|
||||||
"Last-Translator: Prokaj Miklós <mixolid0@gmail.com>\n"
|
"Last-Translator: Patrick Chilton <chpatrick@gmail.com>\n"
|
||||||
"Language-Team: Hungarian <https://translate.pretix.eu/projects/pretix/pretix-"
|
"Language-Team: Hungarian <https://translate.pretix.eu/projects/pretix/"
|
||||||
"js/hu/>\n"
|
"pretix-js/hu/>\n"
|
||||||
"Language: hu\n"
|
"Language: hu\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 3.5.1\n"
|
"X-Generator: Weblate 5.7.2\n"
|
||||||
|
|
||||||
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
|
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
|
||||||
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
|
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
|
||||||
@@ -134,9 +134,6 @@ msgstr ""
|
|||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
|
||||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
|
||||||
#, fuzzy
|
|
||||||
#| msgctxt "widget"
|
|
||||||
#| msgid "Continue"
|
|
||||||
msgid "Continue"
|
msgid "Continue"
|
||||||
msgstr "Folytatás"
|
msgstr "Folytatás"
|
||||||
|
|
||||||
@@ -173,7 +170,7 @@ msgstr "Kapcsolatfelvétel Stripe-pal…"
|
|||||||
|
|
||||||
#: pretix/plugins/stripe/static/pretixplugins/stripe/pretix-stripe.js:72
|
#: pretix/plugins/stripe/static/pretixplugins/stripe/pretix-stripe.js:72
|
||||||
msgid "Total"
|
msgid "Total"
|
||||||
msgstr "Teljes"
|
msgstr "Összeg"
|
||||||
|
|
||||||
#: pretix/plugins/stripe/static/pretixplugins/stripe/pretix-stripe.js:291
|
#: pretix/plugins/stripe/static/pretixplugins/stripe/pretix-stripe.js:291
|
||||||
msgid "Contacting your bank …"
|
msgid "Contacting your bank …"
|
||||||
@@ -241,7 +238,7 @@ msgstr ""
|
|||||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:44
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:44
|
||||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:45
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:45
|
||||||
msgid "Canceled"
|
msgid "Canceled"
|
||||||
msgstr ""
|
msgstr "Lemondva"
|
||||||
|
|
||||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:46
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:46
|
||||||
msgid "Confirmed"
|
msgid "Confirmed"
|
||||||
@@ -249,7 +246,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:47
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:47
|
||||||
msgid "Approval pending"
|
msgid "Approval pending"
|
||||||
msgstr ""
|
msgstr "Engedélyre vár"
|
||||||
|
|
||||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:48
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:48
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -260,7 +257,7 @@ msgstr "Beváltás"
|
|||||||
|
|
||||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:49
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:49
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr "Lemondás"
|
||||||
|
|
||||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:51
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:51
|
||||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:60
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:60
|
||||||
@@ -273,7 +270,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:53
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:53
|
||||||
msgid "Additional information required"
|
msgid "Additional information required"
|
||||||
msgstr ""
|
msgstr "Több információ szükséges"
|
||||||
|
|
||||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:54
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:54
|
||||||
msgid "Valid ticket"
|
msgid "Valid ticket"
|
||||||
@@ -289,7 +286,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:57
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:57
|
||||||
msgid "Information required"
|
msgid "Information required"
|
||||||
msgstr ""
|
msgstr "Információ szükséges"
|
||||||
|
|
||||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:58
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:58
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -471,7 +468,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:99
|
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:99
|
||||||
msgid "Product"
|
msgid "Product"
|
||||||
msgstr ""
|
msgstr "Termék"
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:103
|
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:103
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -730,12 +727,12 @@ msgstr[0] "(még egy időpont)"
|
|||||||
msgstr[1] "(még {num} időpont)"
|
msgstr[1] "(még {num} időpont)"
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:43
|
#: pretix/static/pretixpresale/js/ui/cart.js:43
|
||||||
#, fuzzy
|
|
||||||
#| msgid "The items in your cart are no longer reserved for you."
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The items in your cart are no longer reserved for you. You can still "
|
"The items in your cart are no longer reserved for you. You can still "
|
||||||
"complete your order as long as they’re available."
|
"complete your order as long as they’re available."
|
||||||
msgstr "A kosárba helyezett termékek tovább nincsenek tovább foglalva."
|
msgstr ""
|
||||||
|
"A kosárba helyezett tételek tovább már nincsenek lefoglalva. Még "
|
||||||
|
"megpróbálhatod befejezni a rendelést, ha még elérhetőek."
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:45
|
#: pretix/static/pretixpresale/js/ui/cart.js:45
|
||||||
msgid "Cart expired"
|
msgid "Cart expired"
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -9,6 +9,7 @@ acceptor
|
|||||||
analytics
|
analytics
|
||||||
anonymize
|
anonymize
|
||||||
anonymized
|
anonymized
|
||||||
|
Auth
|
||||||
authenticator
|
authenticator
|
||||||
automatical
|
automatical
|
||||||
availabilities
|
availabilities
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -31,6 +31,8 @@
|
|||||||
# Unless required by applicable law or agreed to in writing, software distributed under the Apache License 2.0 is
|
# Unless required by applicable law or agreed to in writing, software distributed under the Apache License 2.0 is
|
||||||
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
# License for the specific language governing permissions and limitations under the License.
|
# License for the specific language governing permissions and limitations under the License.
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
from django.db.models import Exists, OuterRef, Q
|
from django.db.models import Exists, OuterRef, Q
|
||||||
from i18nfield.strings import LazyI18nString
|
from i18nfield.strings import LazyI18nString
|
||||||
|
|
||||||
@@ -45,6 +47,7 @@ from pretix.helpers.format import format_map
|
|||||||
|
|
||||||
@app.task(base=ProfiledEventTask, acks_late=True)
|
@app.task(base=ProfiledEventTask, acks_late=True)
|
||||||
def send_mails_to_orders(event: Event, user: int, subject: dict, message: dict, objects: list, items: list,
|
def send_mails_to_orders(event: Event, user: int, subject: dict, message: dict, objects: list, items: list,
|
||||||
|
subevent: int, subevents_from: datetime, subevents_to: datetime,
|
||||||
recipients: str, filter_checkins: bool, not_checked_in: bool, checkin_lists: list,
|
recipients: str, filter_checkins: bool, not_checked_in: bool, checkin_lists: list,
|
||||||
attachments: list = None, attach_tickets: bool = False,
|
attachments: list = None, attach_tickets: bool = False,
|
||||||
attach_ical: bool = False) -> None:
|
attach_ical: bool = False) -> None:
|
||||||
@@ -76,7 +79,7 @@ def send_mails_to_orders(event: Event, user: int, subject: dict, message: dict,
|
|||||||
list_id__in=checkin_lists or []
|
list_id__in=checkin_lists or []
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
).prefetch_related('addons'):
|
).prefetch_related('addons', 'subevent'):
|
||||||
if p.addon_to_id is not None:
|
if p.addon_to_id is not None:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -99,6 +102,15 @@ def send_mails_to_orders(event: Event, user: int, subject: dict, message: dict,
|
|||||||
if p.attendee_email == o.email and send_to_order:
|
if p.attendee_email == o.email and send_to_order:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
if subevent and p.subevent_id != subevent:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if subevents_from and p.subevent.date_from < subevents_from:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if subevents_to and p.subevent.date_from >= subevents_to:
|
||||||
|
continue
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with language(o.locale, event.settings.region):
|
with language(o.locale, event.settings.region):
|
||||||
email_context = get_email_context(event=event, order=o, invoice_address=ia, position=p)
|
email_context = get_email_context(event=event, order=o, invoice_address=ia, position=p)
|
||||||
|
|||||||
@@ -429,6 +429,9 @@ class OrderSendView(BaseSenderView):
|
|||||||
kwargs.update({
|
kwargs.update({
|
||||||
'recipients': form.cleaned_data['recipients'],
|
'recipients': form.cleaned_data['recipients'],
|
||||||
'items': [i.pk for i in form.cleaned_data.get('items')],
|
'items': [i.pk for i in form.cleaned_data.get('items')],
|
||||||
|
'subevent': form.cleaned_data['subevent'].pk if form.cleaned_data.get('subevent') else None,
|
||||||
|
'subevents_from': form.cleaned_data.get('subevents_from'),
|
||||||
|
'subevents_to': form.cleaned_data.get('subevents_to'),
|
||||||
'not_checked_in': form.cleaned_data.get('not_checked_in'),
|
'not_checked_in': form.cleaned_data.get('not_checked_in'),
|
||||||
'checkin_lists': [i.pk for i in form.cleaned_data.get('checkin_lists')],
|
'checkin_lists': [i.pk for i in form.cleaned_data.get('checkin_lists')],
|
||||||
'filter_checkins': form.cleaned_data.get('filter_checkins'),
|
'filter_checkins': form.cleaned_data.get('filter_checkins'),
|
||||||
|
|||||||
@@ -263,6 +263,8 @@ def get_grouped_items(event, *, channel: SalesChannel, subevent=None, voucher=No
|
|||||||
|
|
||||||
quotas_to_compute = []
|
quotas_to_compute = []
|
||||||
for item in items:
|
for item in items:
|
||||||
|
assert item.event_id == event.pk
|
||||||
|
item.event = event # save a database query if this is looked up
|
||||||
if item.has_variations:
|
if item.has_variations:
|
||||||
for v in item.available_variations:
|
for v in item.available_variations:
|
||||||
for q in v._subevent_quotas:
|
for q in v._subevent_quotas:
|
||||||
|
|||||||
@@ -552,6 +552,16 @@ var form_handlers = function (el) {
|
|||||||
language: $("body").attr("data-select2-locale"),
|
language: $("body").attr("data-select2-locale"),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
el.find('[data-model-select2=json_script]').each(function() {
|
||||||
|
const selectedValue = this.value;
|
||||||
|
this.replaceChildren();
|
||||||
|
$(this).select2({
|
||||||
|
theme: "bootstrap",
|
||||||
|
language: $("body").attr("data-select2-locale"),
|
||||||
|
data: JSON.parse($(this.getAttribute('data-select2-src')).text()),
|
||||||
|
}).val(selectedValue).trigger('change');
|
||||||
|
});
|
||||||
|
|
||||||
el.find('input[data-typeahead-url]').each(function () {
|
el.find('input[data-typeahead-url]').each(function () {
|
||||||
var $inp = $(this);
|
var $inp = $(this);
|
||||||
if ($inp.data("ttTypeahead") || $inp.hasClass("tt-hint")) {
|
if ($inp.data("ttTypeahead") || $inp.hasClass("tt-hint")) {
|
||||||
|
|||||||
@@ -406,6 +406,79 @@ def test_sendmail_attendee_product_filter(logged_in_client, sendmail_url, event,
|
|||||||
assert '/order/' not in djmail.outbox[0].body
|
assert '/order/' not in djmail.outbox[0].body
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_sendmail_attendee_subevent_filter(logged_in_client, sendmail_url, event, item, order, pos):
|
||||||
|
event.settings.attendee_emails_asked = True
|
||||||
|
event.has_subevents = True
|
||||||
|
event.save()
|
||||||
|
with scopes_disabled():
|
||||||
|
se1 = event.subevents.create(name='Subevent FOO', date_from=now())
|
||||||
|
se2 = event.subevents.create(name='Bar', date_from=now())
|
||||||
|
pos.attendee_email = 'attendee1@dummy.test'
|
||||||
|
pos.subevent = se1
|
||||||
|
pos.save()
|
||||||
|
with scopes_disabled():
|
||||||
|
order.positions.create(
|
||||||
|
item=item, price=0, attendee_email='attendee2@dummy.test', subevent=se2
|
||||||
|
)
|
||||||
|
|
||||||
|
djmail.outbox = []
|
||||||
|
response = logged_in_client.post(sendmail_url + 'orders/',
|
||||||
|
{'sendto': 'na',
|
||||||
|
'action': 'send',
|
||||||
|
'recipients': 'attendees',
|
||||||
|
'items': item.pk,
|
||||||
|
'subject_0': 'Test subject',
|
||||||
|
'message_0': 'This is a test file for sending mails.',
|
||||||
|
'subevent': se2.pk,
|
||||||
|
},
|
||||||
|
follow=True)
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert 'alert-success' in response.rendered_content
|
||||||
|
assert len(djmail.outbox) == 1
|
||||||
|
assert djmail.outbox[0].to == ['attendee2@dummy.test']
|
||||||
|
assert '/ticket/' in djmail.outbox[0].body
|
||||||
|
assert '/order/' not in djmail.outbox[0].body
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_sendmail_attendee_subevent_range_filter(logged_in_client, sendmail_url, event, item, order, pos):
|
||||||
|
event.settings.attendee_emails_asked = True
|
||||||
|
event.has_subevents = True
|
||||||
|
event.save()
|
||||||
|
with scopes_disabled():
|
||||||
|
se1 = event.subevents.create(name='Subevent FOO', date_from=datetime.datetime(2023, 7, 6, 1, 2, 3, tzinfo=event.timezone))
|
||||||
|
se2 = event.subevents.create(name='Bar', date_from=datetime.datetime(2023, 8, 9, 1, 2, 3, tzinfo=event.timezone))
|
||||||
|
pos.attendee_email = 'attendee1@dummy.test'
|
||||||
|
pos.subevent = se1
|
||||||
|
pos.save()
|
||||||
|
with scopes_disabled():
|
||||||
|
order.positions.create(
|
||||||
|
item=item, price=0, attendee_email='attendee2@dummy.test', subevent=se2
|
||||||
|
)
|
||||||
|
|
||||||
|
djmail.outbox = []
|
||||||
|
response = logged_in_client.post(sendmail_url + 'orders/',
|
||||||
|
{'sendto': 'na',
|
||||||
|
'action': 'send',
|
||||||
|
'recipients': 'attendees',
|
||||||
|
'items': item.pk,
|
||||||
|
'subject_0': 'Test subject',
|
||||||
|
'message_0': 'This is a test file for sending mails.',
|
||||||
|
'subevents_from_0': '2023-07-01',
|
||||||
|
'subevents_from_1': '00:00:00',
|
||||||
|
'subevents_to_0': '2023-08-01',
|
||||||
|
'subevents_to_1': '00:00:00',
|
||||||
|
},
|
||||||
|
follow=True)
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert 'alert-success' in response.rendered_content
|
||||||
|
assert len(djmail.outbox) == 1
|
||||||
|
assert djmail.outbox[0].to == ['attendee1@dummy.test']
|
||||||
|
assert '/ticket/' in djmail.outbox[0].body
|
||||||
|
assert '/order/' not in djmail.outbox[0].body
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_sendmail_attendee_checkin_filter(logged_in_client, sendmail_url, event, order, checkin_list, item, pos):
|
def test_sendmail_attendee_checkin_filter(logged_in_client, sendmail_url, event, order, checkin_list, item, pos):
|
||||||
event.settings.attendee_emails_asked = True
|
event.settings.attendee_emails_asked = True
|
||||||
|
|||||||
Reference in New Issue
Block a user