Replaced custom hook implementation with Django signals.