forked from CGM_Public/pretix_original
add test cases
This commit is contained in:
@@ -44,7 +44,7 @@ from datetime import datetime, time, timedelta
|
||||
from decimal import Decimal
|
||||
from functools import reduce
|
||||
from time import sleep
|
||||
from typing import Any, Dict, List, Union, Iterable
|
||||
from typing import Any, Dict, Iterable, List, Union
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
import dateutil
|
||||
@@ -79,7 +79,7 @@ from pretix.base.i18n import language
|
||||
from pretix.base.models import Customer, User
|
||||
from pretix.base.reldate import RelativeDateWrapper
|
||||
from pretix.base.settings import PERSON_NAME_SCHEMES
|
||||
from pretix.base.signals import order_gracefully_delete, allow_ticket_download
|
||||
from pretix.base.signals import allow_ticket_download, order_gracefully_delete
|
||||
|
||||
from ...helpers import OF_SELF
|
||||
from ...helpers.countries import CachedCountries, FastCountryField
|
||||
@@ -1209,7 +1209,6 @@ class Order(LockModel, LoggedModel):
|
||||
return create
|
||||
|
||||
|
||||
|
||||
def answerfile_name(instance, filename: str) -> str:
|
||||
secret = get_random_string(length=32, allowed_chars=string.ascii_letters + string.digits)
|
||||
event = (instance.cartposition if instance.cartposition else instance.orderposition.order).event
|
||||
|
||||
@@ -98,10 +98,9 @@ from pretix.base.services.pricing import (
|
||||
from pretix.base.services.quotas import QuotaAvailability
|
||||
from pretix.base.services.tasks import ProfiledEventTask, ProfiledTask
|
||||
from pretix.base.signals import (
|
||||
allow_ticket_download, order_approved, order_canceled, order_changed,
|
||||
order_denied, order_expired, order_fee_calculation, order_paid,
|
||||
order_placed, order_split, order_valid_if_pending, periodic_task,
|
||||
validate_order,
|
||||
order_approved, order_canceled, order_changed, order_denied, order_expired,
|
||||
order_fee_calculation, order_paid, order_placed, order_split,
|
||||
order_valid_if_pending, periodic_task, validate_order,
|
||||
)
|
||||
from pretix.celery_app import app
|
||||
from pretix.helpers import OF_SELF
|
||||
@@ -1409,7 +1408,7 @@ def send_download_reminders(sender, **kwargs):
|
||||
# Race condition
|
||||
continue
|
||||
positions = o.positions_with_tickets
|
||||
if not positions:
|
||||
if not list(positions):
|
||||
continue
|
||||
|
||||
if not o.ticket_download_available:
|
||||
@@ -1435,10 +1434,7 @@ def send_download_reminders(sender, **kwargs):
|
||||
logger.exception('Reminder email could not be sent')
|
||||
|
||||
if event.settings.mail_send_download_reminder_attendee:
|
||||
for p in o.positions.all():
|
||||
if not p.generate_ticket:
|
||||
continue
|
||||
|
||||
for p in o.positions_with_tickets:
|
||||
if p.subevent_id:
|
||||
reminder_date = (p.subevent.date_from - timedelta(days=days)).replace(
|
||||
hour=0, minute=0, second=0, microsecond=0
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
#
|
||||
import logging
|
||||
import os
|
||||
from typing import Iterable
|
||||
|
||||
from django.core.files.base import ContentFile
|
||||
from django.utils.timezone import now
|
||||
@@ -35,7 +34,7 @@ from pretix.base.models import (
|
||||
)
|
||||
from pretix.base.services.tasks import EventTask, ProfiledTask
|
||||
from pretix.base.settings import PERSON_NAME_SCHEMES
|
||||
from pretix.base.signals import allow_ticket_download, register_ticket_outputs
|
||||
from pretix.base.signals import register_ticket_outputs
|
||||
from pretix.celery_app import app
|
||||
from pretix.helpers.database import rolledback_transaction
|
||||
|
||||
@@ -125,8 +124,8 @@ def preview(event: int, provider: str):
|
||||
|
||||
|
||||
def get_tickets_for_order(order, base_position=None):
|
||||
positions_with_ticket = order.positions_with_tickets
|
||||
if not positions_with_ticket:
|
||||
positions = list(order.positions_with_tickets)
|
||||
if not positions:
|
||||
return []
|
||||
if not order.ticket_download_available:
|
||||
return []
|
||||
@@ -136,10 +135,8 @@ def get_tickets_for_order(order, base_position=None):
|
||||
for receiver, response
|
||||
in register_ticket_outputs.send(order.event)
|
||||
]
|
||||
|
||||
tickets = []
|
||||
|
||||
positions = list(positions_with_ticket)
|
||||
if base_position:
|
||||
# Only the given position and its children
|
||||
positions = [
|
||||
@@ -203,7 +200,6 @@ def get_tickets_for_order(order, base_position=None):
|
||||
))
|
||||
except:
|
||||
logger.exception('Failed to generate ticket.')
|
||||
|
||||
return tickets
|
||||
|
||||
|
||||
|
||||
@@ -3733,6 +3733,7 @@ class SettingsSandbox:
|
||||
del self._event.settings[self._convert_key(key)]
|
||||
|
||||
def get(self, key: str, default: Any = None, as_type: type = str, binary_file: bool = False):
|
||||
print(self._convert_key(key))
|
||||
return self._event.settings.get(
|
||||
self._convert_key(key), default=default, as_type=as_type, binary_file=binary_file
|
||||
)
|
||||
|
||||
@@ -116,7 +116,6 @@ class PdfTicketOutput(BaseTicketOutput):
|
||||
merger = PdfWriter()
|
||||
with language(order.locale, self.event.settings.region):
|
||||
for op in self.get_tickets_to_print(order):
|
||||
print("generating ticket ",op)
|
||||
layout = override_layout.send_chained(
|
||||
order.event, 'layout', orderposition=op, layout=self.layout_map.get(
|
||||
(op.item_id, self.override_channel or order.sales_channel),
|
||||
|
||||
@@ -80,9 +80,7 @@ from pretix.base.services.orders import (
|
||||
)
|
||||
from pretix.base.services.pricing import get_price
|
||||
from pretix.base.services.tickets import generate, invalidate_cache
|
||||
from pretix.base.signals import (
|
||||
allow_ticket_download, order_modified, register_ticket_outputs,
|
||||
)
|
||||
from pretix.base.signals import order_modified, register_ticket_outputs
|
||||
from pretix.base.templatetags.money import money_filter
|
||||
from pretix.base.views.mixins import OrderQuestionsViewMixin
|
||||
from pretix.base.views.tasks import AsyncAction
|
||||
|
||||
@@ -55,6 +55,7 @@ from pretix.base.services.orders import (
|
||||
send_expiry_warnings,
|
||||
)
|
||||
from pretix.plugins.banktransfer.payment import BankTransfer
|
||||
from pretix.testutils.mock import mocker_context
|
||||
from pretix.testutils.scope import classscope
|
||||
|
||||
|
||||
@@ -820,7 +821,7 @@ class DownloadReminderTests(TestCase):
|
||||
self.event = Event.objects.create(
|
||||
organizer=self.o, name='Dummy', slug='dummy',
|
||||
date_from=now() + timedelta(days=2),
|
||||
plugins='pretix.plugins.banktransfer'
|
||||
plugins='pretix.plugins.banktransfer,tests.testdummy'
|
||||
)
|
||||
self.order = Order.objects.create(
|
||||
code='FOO', event=self.event, email='dummy@dummy.test',
|
||||
@@ -853,6 +854,58 @@ class DownloadReminderTests(TestCase):
|
||||
send_download_reminders(sender=self.event)
|
||||
assert len(djmail.outbox) == 0
|
||||
|
||||
@classscope(attr='o')
|
||||
def test_downloads_disabled_by_plugin(self):
|
||||
with mocker_context() as mocker:
|
||||
self.event.settings.mail_days_download_reminder = 2
|
||||
|
||||
from pretix.base.signals import allow_ticket_download
|
||||
mocker.patch('pretix.base.signals.allow_ticket_download.send')
|
||||
allow_ticket_download.send.return_value = [(None, [])]
|
||||
|
||||
send_download_reminders(sender=self.event)
|
||||
assert len(djmail.outbox) == 0
|
||||
|
||||
@classscope(attr='o')
|
||||
def test_downloads_all_allowed_by_plugin(self):
|
||||
with mocker_context() as mocker:
|
||||
self.event.settings.mail_days_download_reminder = 2
|
||||
self.event.settings.mail_attach_tickets = True
|
||||
self.event.settings.ticketoutput_testdummy__enabled = True
|
||||
|
||||
self.op2 = OrderPosition.objects.create(
|
||||
order=self.order, item=self.ticket, variation=None,
|
||||
price=Decimal("42.00"), attendee_name_parts={"full_name": "Mary"}, positionid=2
|
||||
)
|
||||
|
||||
from pretix.base.signals import allow_ticket_download
|
||||
mocker.patch('pretix.base.signals.allow_ticket_download.send')
|
||||
allow_ticket_download.send.return_value = [(None, True)]
|
||||
|
||||
send_download_reminders(sender=self.event)
|
||||
assert len(djmail.outbox) == 1
|
||||
assert len(djmail.outbox[0].attachments) == 2
|
||||
|
||||
@classscope(attr='o')
|
||||
def test_downloads_partially_disabled_by_plugin(self):
|
||||
with mocker_context() as mocker:
|
||||
self.event.settings.mail_days_download_reminder = 2
|
||||
self.event.settings.mail_attach_tickets = True
|
||||
self.event.settings.ticketoutput_testdummy__enabled = True
|
||||
|
||||
self.op2 = OrderPosition.objects.create(
|
||||
order=self.order, item=self.ticket, variation=None,
|
||||
price=Decimal("42.00"), attendee_name_parts={"full_name": "Mary"}, positionid=2
|
||||
)
|
||||
|
||||
from pretix.base.signals import allow_ticket_download
|
||||
mocker.patch('pretix.base.signals.allow_ticket_download.send')
|
||||
allow_ticket_download.send.return_value = [(None, [self.op2])]
|
||||
|
||||
send_download_reminders(sender=self.event)
|
||||
assert len(djmail.outbox) == 1
|
||||
assert len(djmail.outbox[0].attachments) == 1
|
||||
|
||||
@classscope(attr='o')
|
||||
def test_disabled(self):
|
||||
send_download_reminders(sender=self.event)
|
||||
|
||||
@@ -33,3 +33,7 @@ class DummyTicketOutput(BaseTicketOutput):
|
||||
|
||||
def generate(self, op):
|
||||
return 'test.txt', 'text/plain', str(op.order.id)
|
||||
|
||||
@property
|
||||
def multi_download_enabled(self) -> bool:
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user