diff --git a/gnuviechadmin/osusers/models.py b/gnuviechadmin/osusers/models.py index 9f13e7f..ddde5e5 100644 --- a/gnuviechadmin/osusers/models.py +++ b/gnuviechadmin/osusers/models.py @@ -37,6 +37,7 @@ from ldaptasks.tasks import ( from fileservertasks.tasks import ( delete_file_mail_userdir, delete_file_sftp_userdir, + set_file_ssh_authorized_keys, setup_file_mail_userdir, setup_file_sftp_userdir, ) @@ -579,3 +580,24 @@ class SshPublicKey(TimeStampedModel): return "{algorithm} {data} {comment}".format( algorithm=self.algorithm, data=self.data, comment=self.comment ).strip() + + def save(self, **kwargs): + key = super(SshPublicKey, self).save(**kwargs) + TaskResult.objects.create_task_result( + set_file_ssh_authorized_keys.delay( + self.user.username, [ + str(key) for key in + SshPublicKey.objects.filter(user=self.user)]), + 'set_file_ssh_authorized_keys' + ) + return key + + def delete(self, **kwargs): + super(SshPublicKey, self).delete(**kwargs) + TaskResult.objects.create_task_result( + set_file_ssh_authorized_keys.delay( + self.user.username, [ + str(key) for key in + SshPublicKey.objects.filter(user=self.user)]), + 'set_file_ssh_authorized_keys' + ) diff --git a/gnuviechadmin/osusers/tests/test_models.py b/gnuviechadmin/osusers/tests/test_models.py index cf137f8..1897234 100644 --- a/gnuviechadmin/osusers/tests/test_models.py +++ b/gnuviechadmin/osusers/tests/test_models.py @@ -469,6 +469,7 @@ class SshPublicKeyTest(TestCaseWithCeleryTasks): super(SshPublicKeyTest, self).setUp() customer = Customer.objects.create_user('test') self.user = User.objects.create_user(customer) + TaskResult.objects.all().delete() def test__str__rfc4716(self): res = SshPublicKey.objects.create_ssh_public_key( @@ -489,3 +490,21 @@ class SshPublicKeyTest(TestCaseWithCeleryTasks): res = SshPublicKey.objects.create_ssh_public_key( self.user, EXAMPLE_KEY_4_OPENSSH) self.assertEqual(str(res), EXAMPLE_KEY_4_OPENSSH) + + def test_call_tasks_on_save(self): + SshPublicKey.objects.create_ssh_public_key( + self.user, EXAMPLE_KEY_4_OPENSSH) + taskresults = TaskResult.objects.all() + self.assertEqual(len(taskresults), 1) + self.assertEqual( + taskresults[0].task_name, 'set_file_ssh_authorized_keys') + + def test_call_tasks_on_delete(self): + key = SshPublicKey.objects.create_ssh_public_key( + self.user, EXAMPLE_KEY_4_OPENSSH) + TaskResult.objects.all().delete() + key.delete() + taskresults = TaskResult.objects.all() + self.assertEqual(len(taskresults), 1) + self.assertEqual( + taskresults[0].task_name, 'set_file_ssh_authorized_keys')