Merge branch 'django110'

This commit is contained in:
Raphael Michel
2016-10-03 10:31:49 +02:00
26 changed files with 130 additions and 116 deletions

View File

@@ -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 = {}

View File

@@ -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

View File

@@ -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:

View File

@@ -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'))

View File

@@ -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:

View File

@@ -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:

View File

@@ -0,0 +1,6 @@
from debug_toolbar.middleware import DebugToolbarMiddleware
from django.utils.deprecation import MiddlewareMixin
class DebugMiddlewareCompatibilityShim(MiddlewareMixin, DebugToolbarMiddleware):
pass

View File

@@ -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

View File

@@ -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):

View File

@@ -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

View File

@@ -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

View File

@@ -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.'))

View File

@@ -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()

View File

@@ -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

View File

@@ -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 = []

View File

@@ -1,2 +1,3 @@
[pytest]
DJANGO_SETTINGS_MODULE=tests.settings
addopts =--rerun 3 -rw

View File

@@ -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

View File

@@ -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

View File

@@ -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):

View File

@@ -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()))

View File

@@ -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']

View File

@@ -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 = {

View File

@@ -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())

View File

@@ -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)

View File

@@ -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(