magfest / ubersystem

MAGFest's Ubersystem - handles ticketing, staffing, analytics, volunteers, and tons more
http://magfest.org
GNU Affero General Public License v3.0
48 stars 55 forks source link

amount_extra_label property fails if there's no kick-in tier #1038

Open kitsuta opened 9 years ago

kitsuta commented 9 years ago

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.

binary1230 commented 8 years ago

wonder if this is still a thing, we fixed a lot of stuff related to this in the past year