Hi,
I tried to write my first middleware today and seem to have failed
horribly.
Basically I have made a view decorator almost identical to the csrf
ones, that sets a flag on the view function. My middleware then checks
this flag and if missing it runs another function (which deletes some
session variables)
My middleware looks like:
from MySite.cart.checkout.views import _checkout_cleanup
class ReleaseOrderMiddleware(object):
def process_view(self, request, view_func, view_args,
view_kwargs):
if getattr(view_func, 'preserve_order_details', False):
_checkout_cleanup(request, True)
return None
If I turn this on I get errors like:
ImproperlyConfigured: Error importing middleware
MySite.cart.checkout.middleware: "cannot import name
exclusive_boolean_fields"
Well, exclusive_boolean_fields is a function, basically a decorator I
apply to my models. The weird thing is it's not imported directly
anywhere in the middleware or _checkout_cleanup function.
_checkout_cleanup does do this though:
def _checkout_cleanup(request, abort_order):
if CHECKOUT_KEY_ORDER in request.session:
if abort_order:
order = request.session[CHECKOUT_KEY_ORDER]
order.restore_stock()
order.delivery = Decimal('0.00')
order.delivery_label = ''
order.status = cart_models.ORDER_STATUS_ABORTED
order.fulfillment_status =
cart_models.FULFILLMENT_STATUS_ABORTED
order.save()
del request.session[CHECKOUT_KEY_ORDER]
...so we're working with a model object there.
I realise this code doesn't make an easy test case for others, but I'm
hoping I have made a basic 'aha!' type of blunder.
eg, is it possible to work with model objects at all in the middleware
layer?
Why would I get that import error? (The _checkout_cleanup method
works fine from within a view.)
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.