If you kick in an amount that doesn't have a corresponding kick-in level, you completely break the system:
500 Internal Server Error
The server encountered an unexpected condition which prevented it from fulfilling the request.
Traceback (most recent call last):
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/base.py", line 765, in _resolve_lookup
current = current[bit]
TypeError: 'Attendee' object is not subscriptable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/CherryPy-3.6.0-py3.4.egg/cherrypy/_cprequest.py", line 670, in respond
response.body = self.handler()
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/CherryPy-3.6.0-py3.4.egg/cherrypy/lib/encoding.py", line 217, in __call__
self.body = self.oldhandler(*args, **kwargs)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/CherryPy-3.6.0-py3.4.egg/cherrypy/_cpdispatch.py", line 61, in __call__
return self.callable(*self.args, **self.kwargs)
File "/home/vagrant/uber/sideboard/plugins/uber/uber/decorators.py", line 155, in with_timing
return func(*args, **kwargs)
File "/home/vagrant/uber/sideboard/plugins/uber/uber/decorators.py", line 146, in with_caching
return func(*args, **kwargs)
File "/home/vagrant/uber/sideboard/plugins/uber/uber/decorators.py", line 170, in with_session
retval = func(*args, session=session, **kwargs)
File "/home/vagrant/uber/sideboard/plugins/uber/uber/decorators.py", line 264, in with_restrictions
return func(*args, **kwargs)
File "/home/vagrant/uber/sideboard/plugins/uber/uber/decorators.py", line 232, in with_rendering
return render(_get_template_filename(func), result)
File "/home/vagrant/uber/sideboard/plugins/uber/uber/decorators.py", line 206, in render
rendered = template.render(Context(data))
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/base.py", line 140, in render
return self._render(context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/base.py", line 134, in _render
return self.nodelist.render(context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/base.py", line 840, in render
bit = self.render_node(node, context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/debug.py", line 78, in render_node
return node.render(context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/loader_tags.py", line 123, in render
return compiled_parent._render(context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/base.py", line 134, in _render
return self.nodelist.render(context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/base.py", line 840, in render
bit = self.render_node(node, context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/debug.py", line 78, in render_node
return node.render(context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/loader_tags.py", line 123, in render
return compiled_parent._render(context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/base.py", line 134, in _render
return self.nodelist.render(context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/base.py", line 840, in render
bit = self.render_node(node, context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/debug.py", line 78, in render_node
return node.render(context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/base.py", line 840, in render
bit = self.render_node(node, context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/debug.py", line 78, in render_node
return node.render(context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/defaulttags.py", line 305, in render
return nodelist.render(context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/base.py", line 840, in render
bit = self.render_node(node, context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/debug.py", line 78, in render_node
return node.render(context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/defaulttags.py", line 196, in render
nodelist.append(node.render(context))
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/debug.py", line 88, in render
output = self.filter_expression.resolve(context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/base.py", line 585, in resolve
obj = self.var.resolve(context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/base.py", line 735, in resolve
value = self._resolve_lookup(context)
File "/home/vagrant/uber/sideboard/env/lib/python3.4/site-packages/Django-1.6.1-py3.4.egg/django/template/base.py", line 771, in _resolve_lookup
current = getattr(current, bit)
File "/home/vagrant/uber/sideboard/plugins/uber/uber/models.py", line 146, in __getattr__
suffixed = suffix_property.check(self, name)
File "/home/vagrant/uber/sideboard/plugins/uber/uber/decorators.py", line 49, in _suffix_property_check
return prop_func(field_name, field_val)
File "/home/vagrant/uber/sideboard/plugins/uber/uber/models.py", line 133, in _label
return '' if val is None else self.get_field(name).type.choices[int(val)]
KeyError: 50
This should really fail a bit more gracefully, in cases where a programmer might enable a custom amount_extra donation.
If you kick in an amount that doesn't have a corresponding kick-in level, you completely break the system:
This should really fail a bit more gracefully, in cases where a programmer might enable a custom amount_extra donation.