PreSaveMiddleware

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
from django.dispatch import dispatcher
from django.db.models import signals

PRE_SAVE_REQUEST = None

class PreSaveMiddleware(object):
    """ 
    This bit of middleware just saves the request in a global variable
    that can be used to pass the request on to any pre_save methods in
    your models
    """

    def process_request(self, request):
        global PRE_SAVE_REQUEST
        PRE_SAVE_REQUEST = request

def pre_save(**kwargs):
    instance  = kwargs['instance']
    if getattr(instance, 'pre_save', None):
        instance.pre_save(PRE_SAVE_REQUEST)

dispatcher.connect(pre_save, signal=signals.pre_save)

Comments

(Forgotten your password?)

You may use Markdown syntax here, but raw HTML will be removed.