1515from django .conf import settings
1616from django .contrib .auth .models import User
1717from django .db import models
18+ from django .db .models .signals import post_delete
1819from django .db .models .signals import post_save
1920from django .dispatch import receiver
2021from django .dispatch .dispatcher import Signal
@@ -818,10 +819,15 @@ def _user_publish(self):
818819 CM .publish_user (self .flat (), self .calculate ())
819820
820821
822+ def _user_purge (self ):
823+ CM .purge_user (self .flat ())
824+
825+
821826# attach to built-in django user
822827User .flat = _user_flat
823828User .calculate = _user_calculate
824829User .publish = _user_publish
830+ User .purge = _user_purge
825831
826832# define update/delete callbacks for synchronizing
827833# models with the configuration management backend
@@ -836,8 +842,14 @@ def _publish_user_to_cm(**kwargs):
836842 return
837843 kwargs ['instance' ].publish ()
838844
845+
846+ def _purge_user_from_cm (** kwargs ):
847+ kwargs ['instance' ].purge ()
848+
849+
839850# use django signals to synchronize database updates with
840851# the configuration management backend
841852post_save .connect (_publish_to_cm , sender = App , dispatch_uid = 'api.models' )
842853post_save .connect (_publish_to_cm , sender = Formation , dispatch_uid = 'api.models' )
843854post_save .connect (_publish_user_to_cm , sender = User , dispatch_uid = 'api.models' )
855+ post_delete .connect (_purge_user_from_cm , sender = User , dispatch_uid = 'api.models' )
0 commit comments