Ensures all historical model codenames exist in Django's Permission
        model.

def reset_codenames(self, dry_run=None, clear_existing=None):
        """Ensures all historical model codenames exist in Django's Permission
        model.
        """
        self.created_codenames = []
        self.updated_names = []
        actions = ["add", "change", "delete", "view"]
        if django.VERSION >= (2, 1):
            actions.append("view")
        for app in django_apps.get_app_configs():
            for model in app.get_models():
                try:
                    getattr(model, model._meta.simple_history_manager_attribute)
                except AttributeError:
                    pass
                else:
                    self.update_or_create(
                        model, dry_run=dry_run, clear_existing=clear_existing
                    )
        if dry_run:
            print("This is a dry-run. No modifications were made.")
        if self.created_codenames:
            print("The following historical permission.codenames were be added:")
            pprint(self.created_codenames)
        else:
            print("No historical permission.codenames were added.")
        if self.updated_names:
            print("The following historical permission.names were updated:")
            pprint(self.updated_names)
        else:
            print("No historical permission.names were updated.")