3

There's post_syncdb signal to perform actions that can be done after syncdb. Is there a similar hook to perform some actions after loading fixtures i.e. after python manage.py loaddata command ?

I have a script that creates a new database, runs migrate (syncdb) and loads data from JSON fixtures. Post all this, I want to create groups & permissions for users that have been created. Where do I plug that code?

P.S. Use post_migrate instead of post_syncdb for 1.7+

user
  • 17,781
  • 20
  • 98
  • 124

1 Answers1

4

Read the source, Luke.

Research how post_migrate (or post_syncdb) signal is fired in the management command, see:

From what we've seen, here is what you should try:

  • create a custom signal (and listener where you would create groups & permissions)
  • create a custom management command subclassing loaddata Command and overriding handle() method:

    from django.core.management.commands.loaddata import Command
    
    class MyCommand(Command):
        def handle(self, *fixture_labels, **options):
            super(MyCommand, self).handle(*fixture_labels, **options)
    
            my_signal.send(sender=self.__class__, my_argument=my_argument_value)
    

Haven't personally tested this. Hope it works for you.

alecxe
  • 462,703
  • 120
  • 1,088
  • 1,195