diff --git a/gnuviechadmin/osusers/models.py b/gnuviechadmin/osusers/models.py index e586c66..a18b46f 100644 --- a/gnuviechadmin/osusers/models.py +++ b/gnuviechadmin/osusers/models.py @@ -185,15 +185,9 @@ class UserManager(models.Manager): password = generate_password() homedir = os.path.join(settings.OSUSER_HOME_BASEPATH, username) group = Group.objects.create(groupname=username, gid=gid) - GroupTaskResult.objects.create_grouptaskresult( - group, - create_ldap_group.delay(group.groupname, group.gid, group.descr), - 'create_ldap_group' - ) user = self.create(username=username, group=group, uid=uid, homedir=homedir, shell=settings.OSUSER_DEFAULT_SHELL) - Shadow.objects.create_shadow(user=user, password=password) user.set_password(password) if commit: user.save() @@ -221,7 +215,12 @@ class User(TimeStampedModel, models.Model): return '{0} ({1})'.format(self.username, self.uid) def set_password(self, password): - self.shadow.set_password(password) + if hasattr(self, 'shadow'): + self.shadow.set_password(password) + else: + self.shadow = Shadow.objects.create_shadow( + user=self, password=password + ) UserTaskResult.objects.create_usertaskresult( self, create_ldap_user.delay( diff --git a/gnuviechadmin/osusers/tests/test_models.py b/gnuviechadmin/osusers/tests/test_models.py index bd198fd..b2acc7a 100644 --- a/gnuviechadmin/osusers/tests/test_models.py +++ b/gnuviechadmin/osusers/tests/test_models.py @@ -207,6 +207,13 @@ class UserManagerTest(TestCaseWithCeleryTasks): self.assertEqual(user.shell, '/bin/fooshell') self.assertIsNotNone(user.shadow) + def test_create_user_tasks(self): + user = User.objects.create_user() + gtaskres = GroupTaskResult.objects.all() + self.assertEqual(len(gtaskres), 1) + self.assertEqual(gtaskres[0].task_name, 'create_ldap_group') + self.assertEqual(gtaskres[0].group, user.group) + def test_create_user_second(self): User.objects.create_user() user = User.objects.create_user()