forked from CGM_Public/pretix_original
Merge branch 'django110'
This commit is contained in:
@@ -6,6 +6,7 @@ from django.core.urlresolvers import get_script_prefix
|
||||
from django.http import HttpRequest, HttpResponse
|
||||
from django.utils import timezone, translation
|
||||
from django.utils.cache import patch_vary_headers
|
||||
from django.utils.deprecation import MiddlewareMixin
|
||||
from django.utils.translation import LANGUAGE_SESSION_KEY
|
||||
from django.utils.translation.trans_real import (
|
||||
check_for_language, get_supported_language_variant, language_code_re,
|
||||
@@ -15,7 +16,7 @@ from django.utils.translation.trans_real import (
|
||||
_supported = None
|
||||
|
||||
|
||||
class LocaleMiddleware:
|
||||
class LocaleMiddleware(MiddlewareMixin):
|
||||
|
||||
"""
|
||||
This middleware sets the correct locale and timezone
|
||||
@@ -42,7 +43,7 @@ class LocaleMiddleware:
|
||||
request.LANGUAGE_CODE = translation.get_language()
|
||||
|
||||
tzname = None
|
||||
if request.user.is_authenticated():
|
||||
if request.user.is_authenticated:
|
||||
tzname = request.user.timezone
|
||||
if hasattr(request, 'event'):
|
||||
tzname = request.event.settings.timezone
|
||||
@@ -64,7 +65,7 @@ class LocaleMiddleware:
|
||||
|
||||
|
||||
def get_language_from_user_settings(request: HttpRequest) -> str:
|
||||
if request.user.is_authenticated():
|
||||
if request.user.is_authenticated:
|
||||
lang_code = request.user.locale
|
||||
if lang_code in _supported and lang_code is not None and check_for_language(lang_code):
|
||||
return lang_code
|
||||
@@ -134,7 +135,7 @@ def get_language_from_request(request: HttpRequest) -> str:
|
||||
)
|
||||
|
||||
|
||||
class SecurityMiddleware:
|
||||
class SecurityMiddleware(MiddlewareMixin):
|
||||
|
||||
def _parse_csp(self, header):
|
||||
h = {}
|
||||
|
||||
@@ -5,13 +5,14 @@ from django.contrib.auth import REDIRECT_FIELD_NAME
|
||||
from django.core.urlresolvers import get_script_prefix, resolve
|
||||
from django.http import Http404
|
||||
from django.shortcuts import redirect, resolve_url
|
||||
from django.utils.deprecation import MiddlewareMixin
|
||||
from django.utils.encoding import force_str
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from pretix.base.models import Event, EventPermission, Organizer
|
||||
|
||||
|
||||
class PermissionMiddleware:
|
||||
class PermissionMiddleware(MiddlewareMixin):
|
||||
"""
|
||||
This middleware enforces all requests to the control app to require login.
|
||||
Additionally, it enforces all requests to "control:event." URLs
|
||||
@@ -36,7 +37,7 @@ class PermissionMiddleware:
|
||||
return redirect(urljoin(settings.SITE_URL, request.get_full_path()))
|
||||
if url_name in self.EXCEPTIONS:
|
||||
return
|
||||
if not request.user.is_authenticated():
|
||||
if not request.user.is_authenticated:
|
||||
# Taken from django/contrib/auth/decorators.py
|
||||
path = request.build_absolute_uri()
|
||||
# urlparse chokes on lazy objects in Python 3, force to str
|
||||
|
||||
@@ -11,7 +11,7 @@ def event_permission_required(permission):
|
||||
"""
|
||||
def decorator(function):
|
||||
def wrapper(request, *args, **kw):
|
||||
if not request.user.is_authenticated(): # NOQA
|
||||
if not request.user.is_authenticated: # NOQA
|
||||
# just a double check, should not ever happen
|
||||
raise PermissionDenied()
|
||||
try:
|
||||
@@ -55,7 +55,7 @@ def organizer_permission_required(permission):
|
||||
"""
|
||||
def decorator(function):
|
||||
def wrapper(request, *args, **kw):
|
||||
if not request.user.is_authenticated(): # NOQA
|
||||
if not request.user.is_authenticated: # NOQA
|
||||
# just a double check, should not ever happen
|
||||
raise PermissionDenied()
|
||||
try:
|
||||
|
||||
@@ -24,7 +24,7 @@ def login(request):
|
||||
parameter "next" for redirection after successful login
|
||||
"""
|
||||
ctx = {}
|
||||
if request.user.is_authenticated():
|
||||
if request.user.is_authenticated:
|
||||
return redirect(request.GET.get("next", 'control:index'))
|
||||
if request.method == 'POST':
|
||||
form = LoginForm(data=request.POST)
|
||||
@@ -56,7 +56,7 @@ def register(request):
|
||||
if not settings.PRETIX_REGISTRATION:
|
||||
raise PermissionDenied('Registration is disabled')
|
||||
ctx = {}
|
||||
if request.user.is_authenticated():
|
||||
if request.user.is_authenticated:
|
||||
return redirect(request.GET.get("next", 'control:index'))
|
||||
if request.method == 'POST':
|
||||
form = RegistrationForm(data=request.POST)
|
||||
@@ -85,7 +85,7 @@ class Forgot(TemplateView):
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
if request.user.is_authenticated():
|
||||
if request.user.is_authenticated:
|
||||
return redirect(request.GET.get("next", 'control:index'))
|
||||
return super().get(request, *args, **kwargs)
|
||||
|
||||
@@ -149,7 +149,7 @@ class Recover(TemplateView):
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
if request.user.is_authenticated():
|
||||
if request.user.is_authenticated:
|
||||
return redirect(request.GET.get("next", 'control:index'))
|
||||
try:
|
||||
user = User.objects.get(id=self.request.GET.get('id'))
|
||||
|
||||
@@ -394,7 +394,8 @@ class QuestionView(EventPermissionRequiredMixin, QuestionMixin, ChartContainingV
|
||||
if self.request.GET.get("status", "") != "":
|
||||
s = self.request.GET.get("status", "")
|
||||
if s == 'o':
|
||||
qs = qs.filter(orderposition__order__status=Order.STATUS_PENDING, expires__lt=now().date())
|
||||
qs = qs.filter(orderposition__order__status=Order.STATUS_PENDING,
|
||||
expires__lt=now().replace(hour=0, minute=0, second=0))
|
||||
elif s == 'ne':
|
||||
qs = qs.filter(orderposition__order__status__in=[Order.STATUS_PENDING, Order.STATUS_EXPIRED])
|
||||
else:
|
||||
|
||||
@@ -59,7 +59,7 @@ class OrderList(EventPermissionRequiredMixin, ListView):
|
||||
if self.request.GET.get("status", "") != "":
|
||||
s = self.request.GET.get("status", "")
|
||||
if s == 'o':
|
||||
qs = qs.filter(status=Order.STATUS_PENDING, expires__lt=now().date())
|
||||
qs = qs.filter(status=Order.STATUS_PENDING, expires__lt=now().replace(hour=0, minute=0, second=0))
|
||||
elif s == 'ne':
|
||||
qs = qs.filter(status__in=[Order.STATUS_PENDING, Order.STATUS_EXPIRED])
|
||||
else:
|
||||
|
||||
6
src/pretix/helpers/debug.py
Normal file
6
src/pretix/helpers/debug.py
Normal file
@@ -0,0 +1,6 @@
|
||||
from debug_toolbar.middleware import DebugToolbarMiddleware
|
||||
from django.utils.deprecation import MiddlewareMixin
|
||||
|
||||
|
||||
class DebugMiddlewareCompatibilityShim(MiddlewareMixin, DebugToolbarMiddleware):
|
||||
pass
|
||||
@@ -11,11 +11,11 @@ from pretix.presale.urls import (
|
||||
from pretix.urls import common_patterns
|
||||
|
||||
presale_patterns_main = [
|
||||
url(r'', include(locale_patterns + [
|
||||
url(r'', include((locale_patterns + [
|
||||
url(r'^(?P<organizer>[^/]+)/(?P<event>[^/]+)/', include(event_patterns)),
|
||||
url(r'^(?P<organizer>[^/]+)/', include(organizer_patterns)),
|
||||
url(r'^$', TemplateView.as_view(template_name='pretixpresale/index.html'))
|
||||
], namespace='presale'))
|
||||
], 'presale')))
|
||||
]
|
||||
|
||||
raw_plugin_patterns = []
|
||||
@@ -30,7 +30,7 @@ for app in apps.get_app_configs():
|
||||
single_plugin_patterns.append(url(r'^(?P<organizer>[^/]+)/(?P<event>[^/]+)/',
|
||||
include(urlmod.event_patterns)))
|
||||
raw_plugin_patterns.append(
|
||||
url(r'', include(single_plugin_patterns, namespace=app.label))
|
||||
url(r'', include((single_plugin_patterns, app.label)))
|
||||
)
|
||||
elif importlib.util.find_spec(app.name + '.maindomain_urls'): # noqa
|
||||
warnings.warn('Please put your config in an \'urls\' module using the urlpatterns and event_patterns '
|
||||
@@ -38,11 +38,11 @@ for app in apps.get_app_configs():
|
||||
DeprecationWarning)
|
||||
urlmod = importlib.import_module(app.name + '.maindomain_urls')
|
||||
raw_plugin_patterns.append(
|
||||
url(r'', include(urlmod, namespace=app.label))
|
||||
url(r'', include((urlmod, app.label)))
|
||||
)
|
||||
|
||||
plugin_patterns = [
|
||||
url(r'', include(raw_plugin_patterns, namespace='plugins'))
|
||||
url(r'', include((raw_plugin_patterns, 'plugins')))
|
||||
]
|
||||
|
||||
# The presale namespace comes last, because it contains a wildcard catch
|
||||
|
||||
@@ -9,6 +9,7 @@ from django.core.urlresolvers import set_urlconf
|
||||
from django.http.request import split_domain_port
|
||||
from django.middleware.csrf import CsrfViewMiddleware as BaseCsrfMiddleware
|
||||
from django.utils.cache import patch_vary_headers
|
||||
from django.utils.deprecation import MiddlewareMixin
|
||||
from django.utils.http import cookie_date
|
||||
|
||||
from pretix.multidomain.models import KnownDomain
|
||||
@@ -16,7 +17,7 @@ from pretix.multidomain.models import KnownDomain
|
||||
LOCAL_HOST_NAMES = ('testserver', 'localhost')
|
||||
|
||||
|
||||
class MultiDomainMiddleware:
|
||||
class MultiDomainMiddleware(MiddlewareMixin):
|
||||
def process_request(self, request):
|
||||
# We try three options, in order of decreasing preference.
|
||||
if settings.USE_X_FORWARDED_HOST and ('HTTP_X_FORWARDED_HOST' in request.META):
|
||||
|
||||
@@ -10,10 +10,10 @@ from pretix.presale.urls import (
|
||||
from pretix.urls import common_patterns
|
||||
|
||||
presale_patterns = [
|
||||
url(r'', include(locale_patterns + [
|
||||
url(r'', include((locale_patterns + [
|
||||
url(r'^(?P<event>[^/]+)/', include(event_patterns)),
|
||||
url(r'', include(organizer_patterns))
|
||||
], namespace='presale'))
|
||||
], 'presale')))
|
||||
]
|
||||
|
||||
raw_plugin_patterns = []
|
||||
@@ -23,7 +23,7 @@ for app in apps.get_app_configs():
|
||||
urlmod = importlib.import_module(app.name + '.urls')
|
||||
if hasattr(urlmod, 'event_patterns'):
|
||||
raw_plugin_patterns.append(
|
||||
url(r'^(?P<event>[^/]+)/', include(urlmod.event_patterns, namespace=app.label))
|
||||
url(r'^(?P<event>[^/]+)/', include((urlmod.event_patterns, app.label)))
|
||||
)
|
||||
elif importlib.util.find_spec(app.name + '.subdomain_urls'): # noqa
|
||||
warnings.warn('Please put your config in an \'urls\' module using the event_patterns '
|
||||
@@ -31,11 +31,11 @@ for app in apps.get_app_configs():
|
||||
DeprecationWarning)
|
||||
urlmod = importlib.import_module(app.name + '.subdomain_urls')
|
||||
raw_plugin_patterns.append(
|
||||
url(r'', include(urlmod, namespace=app.label))
|
||||
url(r'', include((urlmod, app.label)))
|
||||
)
|
||||
|
||||
plugin_patterns = [
|
||||
url(r'', include(raw_plugin_patterns, namespace='plugins'))
|
||||
url(r'', include((raw_plugin_patterns, 'plugins')))
|
||||
]
|
||||
|
||||
# The presale namespace comes last, because it contains a wildcard catch
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
from django.core.urlresolvers import resolve
|
||||
from django.utils.deprecation import MiddlewareMixin
|
||||
|
||||
from pretix.presale.signals import process_response
|
||||
|
||||
from .utils import _detect_event
|
||||
|
||||
|
||||
class EventMiddleware:
|
||||
class EventMiddleware(MiddlewareMixin):
|
||||
def process_request(self, request):
|
||||
url = resolve(request.path_info)
|
||||
request._namespace = url.namespace
|
||||
|
||||
@@ -60,7 +60,7 @@ def _detect_event(request):
|
||||
LocaleMiddleware().process_request(request)
|
||||
|
||||
if not request.event.live:
|
||||
if not request.user.is_authenticated() or not EventPermission.objects.filter(
|
||||
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.'))
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ class LocaleSet(View):
|
||||
|
||||
locale = request.GET.get('locale')
|
||||
if locale in [lc for lc, ll in settings.LANGUAGES]:
|
||||
if request.user.is_authenticated():
|
||||
if request.user.is_authenticated:
|
||||
request.user.locale = locale
|
||||
request.user.save()
|
||||
|
||||
|
||||
@@ -193,7 +193,7 @@ CORE_MODULES = {
|
||||
("pretix", "control")
|
||||
}
|
||||
|
||||
MIDDLEWARE_CLASSES = [
|
||||
MIDDLEWARE = [
|
||||
'pretix.multidomain.middlewares.MultiDomainMiddleware',
|
||||
'pretix.multidomain.middlewares.SessionMiddleware',
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
@@ -212,7 +212,7 @@ try:
|
||||
import debug_toolbar # noqa
|
||||
if DEBUG:
|
||||
INSTALLED_APPS.append('debug_toolbar.apps.DebugToolbarConfig')
|
||||
MIDDLEWARE_CLASSES.append('debug_toolbar.middleware.DebugToolbarMiddleware')
|
||||
MIDDLEWARE.append('pretix.helpers.debug.DebugMiddlewareCompatibilityShim')
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ base_patterns = [
|
||||
]
|
||||
|
||||
control_patterns = [
|
||||
url(r'^control/', include(pretix.control.urls, namespace='control')),
|
||||
url(r'^control/', include((pretix.control.urls, 'control'))),
|
||||
]
|
||||
|
||||
debug_patterns = []
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
[pytest]
|
||||
DJANGO_SETTINGS_MODULE=tests.settings
|
||||
addopts =--rerun 3 -rw
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
django-debug-toolbar==1.4
|
||||
django-debug-toolbar==1.5
|
||||
sqlparse==0.1.19 # not yet supported by django-debug-toolbar 1.4
|
||||
# Testing requirements
|
||||
pep8==1.5.7 # exact requirement by flake8 2.4.0
|
||||
@@ -12,3 +12,4 @@ pytest-django
|
||||
isort
|
||||
pytest-mock
|
||||
pytest-rerunfailures
|
||||
pytest-warnings
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# Functional requirements
|
||||
Django>=1.9,<1.10
|
||||
Django>=1.10,<1.11
|
||||
python-dateutil
|
||||
pytz
|
||||
django-bootstrap3>=6.2,<6.3
|
||||
django-bootstrap3>=7.1,<7.2
|
||||
git+https://github.com/pretix/django-formset-js.git@master#egg=django-formset-js
|
||||
django-compressor==2.0
|
||||
django-compressor==2.1
|
||||
reportlab>=3.2,<3.3
|
||||
git+https://github.com/pretix/PyPDF2.git@pretix#egg=PyPDF2
|
||||
easy-thumbnails>=2.2,<3
|
||||
|
||||
@@ -6,12 +6,12 @@ class SoupTest(TestCase):
|
||||
|
||||
def get_doc(self, *args, **kwargs):
|
||||
response = self.client.get(*args, **kwargs)
|
||||
return BeautifulSoup(response.rendered_content)
|
||||
return BeautifulSoup(response.rendered_content, "lxml")
|
||||
|
||||
def post_doc(self, *args, **kwargs):
|
||||
kwargs['follow'] = True
|
||||
response = self.client.post(*args, **kwargs)
|
||||
return BeautifulSoup(response.rendered_content)
|
||||
return BeautifulSoup(response.rendered_content, "lxml")
|
||||
|
||||
|
||||
def extract_form_fields(soup):
|
||||
|
||||
@@ -33,7 +33,7 @@ class CacheTest(TestCase):
|
||||
|
||||
def test_longkey(self):
|
||||
self.cache.set(self.testkey * 100, "foo")
|
||||
self.assertEquals(self.cache.get(self.testkey * 100), "foo")
|
||||
self.assertEqual(self.cache.get(self.testkey * 100), "foo")
|
||||
|
||||
def test_invalidation(self):
|
||||
self.cache.set(self.testkey, "foo")
|
||||
@@ -46,4 +46,4 @@ class CacheTest(TestCase):
|
||||
'b': 'bar',
|
||||
}
|
||||
self.cache.set_many(inp)
|
||||
self.assertEquals(inp, self.cache.get_many(inp.keys()))
|
||||
self.assertEqual(inp, self.cache.get_many(inp.keys()))
|
||||
|
||||
@@ -3,6 +3,7 @@ from decimal import Decimal
|
||||
|
||||
import pytest
|
||||
from django.core import mail
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
from django.utils.timezone import now
|
||||
from tests.base import SoupTest
|
||||
|
||||
@@ -311,13 +312,16 @@ def test_order_download_success(client, env, mocker):
|
||||
tickets.generate.apply_async.assert_any_call(args=(o.id, 'testdummy'))
|
||||
assert 'download' in response['Location']
|
||||
dl = response['Location']
|
||||
assert CachedTicket.objects.filter(order=o, provider='testdummy').exists()
|
||||
|
||||
# test caching
|
||||
tickets.generate.apply_async.reset_mock()
|
||||
mocker.resetall()
|
||||
ct = CachedTicket.objects.get(order=o, provider='testdummy')
|
||||
ct.cachedfile.file.save('foo.jpg', SimpleUploadedFile("sample_invalid_image.jpg", b"file_content",
|
||||
content_type="image/jpeg"))
|
||||
ct.cachedfile.save()
|
||||
response = client.get('/control/event/dummy/dummy/orders/FOO/download/testdummy')
|
||||
assert response.status_code == 302
|
||||
assert tickets.generate.apply_async.assert_not_called()
|
||||
tickets.generate.apply_async.assert_not_called()
|
||||
assert dl == response['Location']
|
||||
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ Buchungstag;Valuta;Buchungstext;Auftraggeber / Empfänger;Verwendungszweck;Betra
|
||||
r = client.post('/control/event/dummy/dummy/banktransfer/import/', {
|
||||
'file': file
|
||||
})
|
||||
doc = BeautifulSoup(r.content)
|
||||
doc = BeautifulSoup(r.content, "lxml")
|
||||
assert r.status_code == 200
|
||||
assert len(doc.select("input[name=date]")) > 0
|
||||
data = {
|
||||
|
||||
@@ -46,7 +46,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('Early-bird', doc.select('.cart .cart-row')[0].select('strong')[0].text)
|
||||
self.assertIn('1', doc.select('.cart .cart-row')[0].select('.count')[0].text)
|
||||
self.assertIn('23', doc.select('.cart .cart-row')[0].select('.price')[0].text)
|
||||
@@ -66,7 +66,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('Early-bird', doc.select('.cart .cart-row')[0].select('strong')[0].text)
|
||||
self.assertIn('1', doc.select('.cart .cart-row')[0].select('.count')[0].text)
|
||||
self.assertIn('24', doc.select('.cart .cart-row')[0].select('.price')[0].text)
|
||||
@@ -86,7 +86,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('Early-bird', doc.select('.cart .cart-row')[0].select('strong')[0].text)
|
||||
self.assertIn('1', doc.select('.cart .cart-row')[0].select('.count')[0].text)
|
||||
self.assertIn('23', doc.select('.cart .cart-row')[0].select('.price')[0].text)
|
||||
@@ -106,7 +106,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('Early-bird', doc.select('.cart .cart-row')[0].select('strong')[0].text)
|
||||
self.assertIn('1', doc.select('.cart .cart-row')[0].select('.count')[0].text)
|
||||
self.assertIn('23', doc.select('.cart .cart-row')[0].select('.price')[0].text)
|
||||
@@ -134,7 +134,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('Shirt', doc.select('.cart .cart-row')[0].select('strong')[0].text)
|
||||
self.assertIn('Red', doc.select('.cart .cart-row')[0].text)
|
||||
self.assertIn('1', doc.select('.cart .cart-row')[0].select('.count')[0].text)
|
||||
@@ -155,7 +155,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('Shirt', doc.select('.cart .cart-row')[0].select('strong')[0].text)
|
||||
self.assertIn('Red', doc.select('.cart .cart-row')[0].text)
|
||||
self.assertIn('1', doc.select('.cart .cart-row')[0].select('.count')[0].text)
|
||||
@@ -173,7 +173,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('Early-bird', doc.select('.cart .cart-row')[0].select('strong')[0].text)
|
||||
self.assertIn('2', doc.select('.cart .cart-row')[0].select('.count')[0].text)
|
||||
self.assertIn('23', doc.select('.cart .cart-row')[0].select('.price')[0].text)
|
||||
@@ -192,7 +192,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('Early-bird', doc.select('.cart')[0].text)
|
||||
self.assertIn('Shirt', doc.select('.cart')[0].text)
|
||||
objs = list(CartPosition.objects.filter(cart_id=self.session_key, event=self.event))
|
||||
@@ -207,7 +207,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('numbers only', doc.select('.alert-danger')[0].text)
|
||||
self.assertFalse(CartPosition.objects.filter(cart_id=self.session_key, event=self.event).exists())
|
||||
|
||||
@@ -216,7 +216,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('numbers only', doc.select('.alert-danger')[0].text)
|
||||
self.assertFalse(CartPosition.objects.filter(cart_id=self.session_key, event=self.event).exists())
|
||||
response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), {
|
||||
@@ -224,7 +224,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('numbers only', doc.select('.alert-danger')[0].text)
|
||||
self.assertFalse(CartPosition.objects.filter(cart_id=self.session_key, event=self.event).exists())
|
||||
|
||||
@@ -233,7 +233,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('numbers only', doc.select('.alert-danger')[0].text)
|
||||
self.assertFalse(CartPosition.objects.filter(cart_id=self.session_key, event=self.event).exists())
|
||||
|
||||
@@ -241,7 +241,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('did not select any products', doc.select('.alert-warning')[0].text)
|
||||
self.assertFalse(CartPosition.objects.filter(cart_id=self.session_key, event=self.event).exists())
|
||||
|
||||
@@ -256,7 +256,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('not available', doc.select('.alert-danger')[0].text)
|
||||
self.assertFalse(CartPosition.objects.filter(cart_id=self.session_key, event=self.event).exists())
|
||||
|
||||
@@ -267,7 +267,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('no longer available', doc.select('.alert-danger')[0].text)
|
||||
self.assertFalse(CartPosition.objects.filter(cart_id=self.session_key, event=self.event).exists())
|
||||
|
||||
@@ -307,7 +307,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('more than', doc.select('.alert-danger')[0].text)
|
||||
self.assertEqual(CartPosition.objects.filter(cart_id=self.session_key, event=self.event).count(), 1)
|
||||
|
||||
@@ -319,7 +319,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('no longer available', doc.select('.alert-danger')[0].text)
|
||||
self.assertFalse(CartPosition.objects.filter(cart_id=self.session_key, event=self.event).exists())
|
||||
|
||||
@@ -331,7 +331,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('no longer available', doc.select('.alert-danger')[0].text)
|
||||
self.assertIn('Early-bird', doc.select('.cart .cart-row')[0].select('strong')[0].text)
|
||||
self.assertIn('1', doc.select('.cart .cart-row')[0].select('.count')[0].text)
|
||||
@@ -396,7 +396,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), {
|
||||
'item_%d' % self.ticket.id: '1',
|
||||
}, follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('no longer available', doc.select('.alert-danger')[0].text)
|
||||
self.assertFalse(CartPosition.objects.filter(id=cp1.id).exists())
|
||||
|
||||
@@ -408,7 +408,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
response = self.client.post('/%s/%s/cart/remove' % (self.orga.slug, self.event.slug), {
|
||||
'item_%d' % self.ticket.id: '1',
|
||||
}, follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('updated', doc.select('.alert-success')[0].text)
|
||||
self.assertFalse(CartPosition.objects.filter(cart_id=self.session_key, event=self.event).exists())
|
||||
|
||||
@@ -420,7 +420,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
response = self.client.post('/%s/%s/cart/remove' % (self.orga.slug, self.event.slug), {
|
||||
'variation_%d_%d' % (self.shirt.id, self.shirt_red.id): '1',
|
||||
}, follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('updated', doc.select('.alert-success')[0].text)
|
||||
self.assertFalse(CartPosition.objects.filter(cart_id=self.session_key, event=self.event).exists())
|
||||
|
||||
@@ -436,7 +436,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
response = self.client.post('/%s/%s/cart/remove' % (self.orga.slug, self.event.slug), {
|
||||
'item_%d' % self.ticket.id: '1',
|
||||
}, follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('updated', doc.select('.alert-success')[0].text)
|
||||
self.assertEqual(CartPosition.objects.filter(cart_id=self.session_key, event=self.event).count(), 1)
|
||||
|
||||
@@ -452,7 +452,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
response = self.client.post('/%s/%s/cart/remove' % (self.orga.slug, self.event.slug), {
|
||||
'item_%d' % self.ticket.id: '2',
|
||||
}, follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('updated', doc.select('.alert-success')[0].text)
|
||||
self.assertFalse(CartPosition.objects.filter(cart_id=self.session_key, event=self.event).exists())
|
||||
|
||||
@@ -468,7 +468,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
response = self.client.post('/%s/%s/cart/remove' % (self.orga.slug, self.event.slug), {
|
||||
'item_%d' % self.ticket.id: '1',
|
||||
}, follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('updated', doc.select('.alert-success')[0].text)
|
||||
objs = list(CartPosition.objects.filter(cart_id=self.session_key, event=self.event))
|
||||
self.assertEqual(len(objs), 1)
|
||||
@@ -559,7 +559,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), {
|
||||
'item_%d_voucher' % self.ticket.id: v.code,
|
||||
}, follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('already been used', doc.select('.alert-danger')[0].text)
|
||||
self.assertFalse(CartPosition.objects.filter(cart_id=self.session_key, event=self.event).exists())
|
||||
|
||||
@@ -569,7 +569,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), {
|
||||
'item_%d_voucher' % self.ticket.id: v.code,
|
||||
}, follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('expired', doc.select('.alert-danger')[0].text)
|
||||
self.assertFalse(CartPosition.objects.filter(cart_id=self.session_key, event=self.event).exists())
|
||||
|
||||
@@ -577,7 +577,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), {
|
||||
'item_%d_voucher' % self.ticket.id: 'ABC',
|
||||
}, follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('not known', doc.select('.alert-danger')[0].text)
|
||||
self.assertFalse(CartPosition.objects.filter(cart_id=self.session_key, event=self.event).exists())
|
||||
|
||||
@@ -588,7 +588,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), {
|
||||
'item_%d_voucher' % self.ticket.id: v.code,
|
||||
}, follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('no longer available', doc.select('.alert-danger')[0].text)
|
||||
self.assertFalse(CartPosition.objects.filter(cart_id=self.session_key, event=self.event).exists())
|
||||
|
||||
@@ -614,7 +614,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), {
|
||||
'item_%d' % self.ticket.id: '1',
|
||||
}, follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('no longer available', doc.select('.alert-danger')[0].text)
|
||||
self.assertFalse(CartPosition.objects.filter(cart_id=self.session_key, event=self.event).exists())
|
||||
response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), {
|
||||
@@ -640,7 +640,7 @@ class CartTest(CartTestMixin, TestCase):
|
||||
response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), {
|
||||
'item_%d_voucher' % self.ticket.id: v.code,
|
||||
}, follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn('already used', doc.select('.alert-danger')[0].text)
|
||||
self.assertEqual(1, CartPosition.objects.filter(cart_id=self.session_key, event=self.event).count())
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ class CheckoutTestCase(TestCase):
|
||||
price=20, expires=now() + timedelta(minutes=10)
|
||||
)
|
||||
response = self.client.get('/%s/%s/checkout/questions/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
|
||||
self.assertEqual(len(doc.select('input[name=%s-question_%s]' % (cr1.id, q1.id))), 1)
|
||||
self.assertEqual(len(doc.select('input[name=%s-question_%s]' % (cr2.id, q1.id))), 1)
|
||||
@@ -75,7 +75,7 @@ class CheckoutTestCase(TestCase):
|
||||
'%s-question_%s' % (cr2.id, q2.id): '',
|
||||
'email': 'admin@localhost'
|
||||
}, follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertGreaterEqual(len(doc.select('.has-error')), 1)
|
||||
|
||||
# Corrected request
|
||||
@@ -104,7 +104,7 @@ class CheckoutTestCase(TestCase):
|
||||
price=23, expires=now() + timedelta(minutes=10)
|
||||
)
|
||||
response = self.client.get('/%s/%s/checkout/questions/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select('input[name=%s-attendee_name]' % cr1.id)), 1)
|
||||
|
||||
# Not all required fields filled out, expect failure
|
||||
@@ -112,7 +112,7 @@ class CheckoutTestCase(TestCase):
|
||||
'%s-attendee_name' % cr1.id: '',
|
||||
'email': 'admin@localhost'
|
||||
}, follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertGreaterEqual(len(doc.select('.has-error')), 1)
|
||||
|
||||
# Corrected request
|
||||
@@ -134,7 +134,7 @@ class CheckoutTestCase(TestCase):
|
||||
price=23, expires=now() + timedelta(minutes=10)
|
||||
)
|
||||
response = self.client.get('/%s/%s/checkout/questions/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select('input[name=%s-attendee_name]' % cr1.id)), 1)
|
||||
|
||||
# Not all fields filled out, expect success
|
||||
@@ -157,7 +157,7 @@ class CheckoutTestCase(TestCase):
|
||||
price=23, expires=now() + timedelta(minutes=10)
|
||||
)
|
||||
response = self.client.get('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select('input[name=payment]')), 2)
|
||||
response = self.client.post('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), {
|
||||
'payment': 'banktransfer'
|
||||
@@ -227,7 +227,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select(".thank-you")), 1)
|
||||
self.assertFalse(CartPosition.objects.filter(id=cr1.id).exists())
|
||||
self.assertEqual(Order.objects.count(), 1)
|
||||
@@ -242,7 +242,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select(".thank-you")), 1)
|
||||
self.assertFalse(CartPosition.objects.filter(id=cr1.id).exists())
|
||||
self.assertEqual(Order.objects.count(), 1)
|
||||
@@ -256,7 +256,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select(".thank-you")), 1)
|
||||
self.assertFalse(CartPosition.objects.filter(id=cr1.id).exists())
|
||||
self.assertEqual(Order.objects.count(), 1)
|
||||
@@ -272,7 +272,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select(".alert-danger")), 1)
|
||||
cr1 = CartPosition.objects.get(id=cr1.id)
|
||||
self.assertEqual(cr1.price, 24)
|
||||
@@ -288,7 +288,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select(".alert-danger")), 1)
|
||||
cr1 = CartPosition.objects.get(id=cr1.id)
|
||||
self.assertEqual(cr1.price, 24)
|
||||
@@ -303,7 +303,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select(".thank-you")), 1)
|
||||
self.assertFalse(CartPosition.objects.filter(id=cr1.id).exists())
|
||||
self.assertEqual(Order.objects.count(), 1)
|
||||
@@ -323,7 +323,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select(".thank-you")), 1)
|
||||
self.assertTrue(Voucher.objects.get(pk=v.pk).redeemed)
|
||||
|
||||
@@ -337,7 +337,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select(".alert-danger")), 1)
|
||||
cr1 = CartPosition.objects.get(id=cr1.id)
|
||||
self.assertEqual(cr1.price, Decimal('12.00'))
|
||||
@@ -351,7 +351,7 @@ class CheckoutTestCase(TestCase):
|
||||
)
|
||||
self._set_session('payment', 'banktransfer')
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn("expired", doc.select(".alert-danger")[0].text)
|
||||
|
||||
def test_voucher_redeemed(self):
|
||||
@@ -363,7 +363,7 @@ class CheckoutTestCase(TestCase):
|
||||
)
|
||||
self._set_session('payment', 'banktransfer')
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertIn("has already been", doc.select(".alert-danger")[0].text)
|
||||
|
||||
def test_voucher_ignore_quota(self):
|
||||
@@ -378,7 +378,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select(".thank-you")), 1)
|
||||
self.assertFalse(CartPosition.objects.filter(id=cr1.id).exists())
|
||||
self.assertEqual(Order.objects.count(), 1)
|
||||
@@ -396,14 +396,14 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select(".alert-danger")), 1)
|
||||
self.assertEqual(CartPosition.objects.filter(cart_id=self.session_key).count(), 1)
|
||||
|
||||
cr1.voucher = v
|
||||
cr1.save()
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select(".thank-you")), 1)
|
||||
self.assertFalse(CartPosition.objects.filter(id=cr1.id).exists())
|
||||
self.assertEqual(Order.objects.count(), 1)
|
||||
@@ -423,7 +423,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select(".alert-danger")), 1)
|
||||
self.assertFalse(Order.objects.exists())
|
||||
|
||||
@@ -443,13 +443,13 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(CartPosition.objects.filter(cart_id=self.session_key, voucher=v).count(), 1)
|
||||
self.assertEqual(len(doc.select(".alert-danger")), 1)
|
||||
self.assertFalse(Order.objects.exists())
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertFalse(CartPosition.objects.filter(cart_id=self.session_key, voucher=v).exists())
|
||||
self.assertEqual(len(doc.select(".thank-you")), 1)
|
||||
self.assertEqual(Order.objects.count(), 1)
|
||||
@@ -469,7 +469,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select(".alert-danger")), 1)
|
||||
self.assertEqual(CartPosition.objects.filter(cart_id=self.session_key).count(), 1)
|
||||
|
||||
@@ -483,7 +483,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertGreaterEqual(len(doc.select(".alert-danger")), 1)
|
||||
|
||||
def test_confirm_require_voucher(self):
|
||||
@@ -496,7 +496,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertGreaterEqual(len(doc.select(".alert-danger")), 1)
|
||||
self.assertFalse(CartPosition.objects.filter(id=cr1.id).exists())
|
||||
|
||||
@@ -510,7 +510,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertGreaterEqual(len(doc.select(".alert-danger")), 1)
|
||||
self.assertFalse(CartPosition.objects.filter(id=cr1.id).exists())
|
||||
|
||||
@@ -524,7 +524,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertGreaterEqual(len(doc.select(".alert-danger")), 1)
|
||||
self.assertFalse(CartPosition.objects.filter(id=cr1.id).exists())
|
||||
|
||||
@@ -538,7 +538,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertGreaterEqual(len(doc.select(".alert-danger")), 1)
|
||||
self.assertFalse(CartPosition.objects.filter(id=cr1.id).exists())
|
||||
|
||||
@@ -551,7 +551,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertGreaterEqual(len(doc.select(".alert-danger")), 1)
|
||||
self.assertFalse(CartPosition.objects.filter(id=cr1.id).exists())
|
||||
|
||||
@@ -566,7 +566,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select(".thank-you")), 1)
|
||||
|
||||
def test_confirm_expired_with_non_blocking_voucher_unavailable(self):
|
||||
@@ -580,7 +580,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertGreaterEqual(len(doc.select(".alert-danger")), 1)
|
||||
self.assertFalse(CartPosition.objects.filter(id=cr1.id).exists())
|
||||
|
||||
@@ -595,7 +595,7 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select(".thank-you")), 1)
|
||||
|
||||
def test_confirm_not_expired_with_non_blocking_voucher_unavailable(self):
|
||||
@@ -609,5 +609,5 @@ class CheckoutTestCase(TestCase):
|
||||
self._set_session('payment', 'banktransfer')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select(".thank-you")), 1)
|
||||
|
||||
@@ -124,7 +124,7 @@ class OrdersTest(TestCase):
|
||||
'/%s/%s/order/%s/%s/' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret)
|
||||
)
|
||||
assert response.status_code == 200
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
assert len(doc.select(".cart-row")) > 0
|
||||
assert "pending" in doc.select(".label-warning")[0].text.lower()
|
||||
|
||||
@@ -143,7 +143,7 @@ class OrdersTest(TestCase):
|
||||
|
||||
response = self.client.get(
|
||||
'/%s/%s/order/%s/%s/modify' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret))
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select('input[name=%s-attendee_name]' % self.ticket_pos.id)), 1)
|
||||
|
||||
# Not all fields filled out, expect success
|
||||
@@ -164,7 +164,7 @@ class OrdersTest(TestCase):
|
||||
|
||||
response = self.client.get(
|
||||
'/%s/%s/order/%s/%s/modify' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret))
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select('input[name=%s-attendee_name]' % self.ticket_pos.id)), 1)
|
||||
|
||||
# Not all required fields filled out, expect failure
|
||||
@@ -172,7 +172,7 @@ class OrdersTest(TestCase):
|
||||
'/%s/%s/order/%s/%s/modify' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret), {
|
||||
'%s-attendee_name' % self.ticket_pos.id: '',
|
||||
}, follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertGreaterEqual(len(doc.select('.has-error')), 1)
|
||||
|
||||
response = self.client.post(
|
||||
@@ -191,7 +191,7 @@ class OrdersTest(TestCase):
|
||||
|
||||
response = self.client.get(
|
||||
'/%s/%s/order/%s/%s/modify' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret))
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select('input[name=%s-question_%s]' % (
|
||||
self.ticket_pos.id, self.question.id))), 1)
|
||||
|
||||
@@ -214,7 +214,7 @@ class OrdersTest(TestCase):
|
||||
|
||||
response = self.client.get('/%s/%s/order/%s/%s/modify' % (self.orga.slug, self.event.slug, self.order.code,
|
||||
self.order.secret))
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertEqual(len(doc.select('input[name=%s-question_%s]' % (
|
||||
self.ticket_pos.id, self.question.id))), 1)
|
||||
|
||||
@@ -223,7 +223,7 @@ class OrdersTest(TestCase):
|
||||
'/%s/%s/order/%s/%s/modify' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret), {
|
||||
'%s-question_%s' % (self.ticket_pos.id, self.question.id): '',
|
||||
}, follow=True)
|
||||
doc = BeautifulSoup(response.rendered_content)
|
||||
doc = BeautifulSoup(response.rendered_content, "lxml")
|
||||
self.assertGreaterEqual(len(doc.select('.has-error')), 1)
|
||||
|
||||
response = self.client.post(
|
||||
|
||||
Reference in New Issue
Block a user