diff --git a/openslides/core/apps.py b/openslides/core/apps.py index d30715058..611f6f841 100644 --- a/openslides/core/apps.py +++ b/openslides/core/apps.py @@ -94,7 +94,7 @@ class CoreAppConfig(AppConfig): self.get_model("History").get_collection_string(), HistoryViewSet ) - if "runserver" in sys.argv: + if "runserver" in sys.argv or "changeconfig" in sys.argv: startup() # Register client messages diff --git a/openslides/core/management/commands/backupdb.py b/openslides/core/management/commands/backupdb.py index 3bacba02c..a86439f7c 100644 --- a/openslides/core/management/commands/backupdb.py +++ b/openslides/core/management/commands/backupdb.py @@ -41,7 +41,9 @@ class Command(BaseCommand): if database_path: do_backup(database_path, path) self.stdout.write( - f"Database {database_path} successfully stored at {path}." + self.style.SUCCESS( + f"Database {database_path} successfully stored at {path}." + ) ) else: raise CommandError( diff --git a/openslides/core/management/commands/insecurechangepassword.py b/openslides/core/management/commands/insecurechangepassword.py index 8068744d8..05031d7ad 100644 --- a/openslides/core/management/commands/insecurechangepassword.py +++ b/openslides/core/management/commands/insecurechangepassword.py @@ -19,4 +19,9 @@ class Command(BaseCommand): def handle(self, *args, **options): user = User.objects.get(username=options["username"]) user.set_password(options["password"]) - user.save() + user.save(skip_autoupdate=True) + self.stdout.write( + self.style.SUCCESS( + f"Password of user {options['username']} successfully changed." + ) + ) diff --git a/openslides/users/management/commands/createopenslidesuser.py b/openslides/users/management/commands/createopenslidesuser.py index e5bd14e83..988904bae 100644 --- a/openslides/users/management/commands/createopenslidesuser.py +++ b/openslides/users/management/commands/createopenslidesuser.py @@ -24,7 +24,7 @@ class Command(BaseCommand): "default_password": options["password"], } user = User.objects.create_user( - options["username"], options["password"], **user_data + options["username"], options["password"], skip_autoupdate=True, **user_data ) if options["groups_id"].isdigit(): user.groups.add(int(options["groups_id"])) diff --git a/openslides/users/management/commands/createsuperuser.py b/openslides/users/management/commands/createsuperuser.py index 1bc852174..b3c053976 100644 --- a/openslides/users/management/commands/createsuperuser.py +++ b/openslides/users/management/commands/createsuperuser.py @@ -11,7 +11,7 @@ class Command(BaseCommand): help = "Creates or resets the admin user." def handle(self, *args, **options): - created = User.objects.create_or_reset_admin_user() + created = User.objects.create_or_reset_admin_user(skip_autoupdate=True) if created: self.stdout.write("Admin user successfully created.") else: diff --git a/openslides/users/models.py b/openslides/users/models.py index 02a9e6ca1..933839e2d 100644 --- a/openslides/users/models.py +++ b/openslides/users/models.py @@ -60,7 +60,7 @@ class UserManager(BaseUserManager): user.save(skip_autoupdate=skip_autoupdate, using=self._db) return user - def create_or_reset_admin_user(self): + def create_or_reset_admin_user(self, skip_autoupdate=False): """ Creates an user with the username 'admin'. If such a user already exists, resets it. The password is (re)set to 'admin'. The user @@ -74,7 +74,7 @@ class UserManager(BaseUserManager): created = True admin.default_password = "admin" admin.password = make_password(admin.default_password) - admin.save(skip_autoupdate=True) + admin.save(skip_autoupdate=skip_autoupdate) admin.groups.add(GROUP_ADMIN_PK) return created diff --git a/openslides/users/signals.py b/openslides/users/signals.py index db1c0e984..c53f0ee0e 100644 --- a/openslides/users/signals.py +++ b/openslides/users/signals.py @@ -180,7 +180,7 @@ def create_builtin_groups_and_admin(**kwargs): group_committee.permissions.add(*committees_permissions) # Create or reset admin user - User.objects.create_or_reset_admin_user() + User.objects.create_or_reset_admin_user(skip_autoupdate=True) # After each group was created, the permissions (many to many fields) where # added to the group. But we do not have to update the cache by calling diff --git a/tests/unit/users/test_models.py b/tests/unit/users/test_models.py index 58da44c02..69924e49d 100644 --- a/tests/unit/users/test_models.py +++ b/tests/unit/users/test_models.py @@ -162,7 +162,7 @@ class UserManagerCreateOrResetAdminUser(TestCase): mock_group.objects.get_or_create = MagicMock(return_value=(staff_group, True)) mock_permission.get = MagicMock() - manager.create_or_reset_admin_user() + manager.create_or_reset_admin_user(skip_autoupdate=True) self.assertEqual(admin_user.default_password, "admin") admin_user.save.assert_called_once_with(skip_autoupdate=True)