From 7dd4c78345d7b222100f20973a24ed4f1c60bd25 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sat, 31 Jan 2015 23:00:33 +0100 Subject: [PATCH] trigger tasks on SshPublicKey save and delete - implement save and delete methods in osusers.models.SshPublicKey that trigger set_file_ssh_authorized_keys - add new test methods to osusers.tests.test_models.SshPublicKeyTest --- gnuviechadmin/osusers/models.py | 22 ++++++++++++++++++++++ gnuviechadmin/osusers/tests/test_models.py | 19 +++++++++++++++++++ 2 files changed, 41 insertions(+) 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')