From 153482f32dd8aa1ceb7594874354225450f31fa3 Mon Sep 17 00:00:00 2001 From: Oskar Hahn Date: Fri, 10 Aug 2012 11:14:11 +0200 Subject: [PATCH] first_name, last_name and name_surfix as OpenSlidesUser attributes --- openslides/participant/models.py | 39 +++++++++++++++++++++++++++++++- openslides/participant/tests.py | 12 +++++++++- 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/openslides/participant/models.py b/openslides/participant/models.py index f7685994e..ae8a33f40 100644 --- a/openslides/participant/models.py +++ b/openslides/participant/models.py @@ -36,7 +36,7 @@ class OpenSlidesUser(models.Model, PersonMixin): ) user = models.OneToOneField(User, unique=True, editable=False) - name_surfix = models.CharField( + category = models.CharField( max_length=100, null=True, blank=True, verbose_name=_("Name Surfix"), help_text=_('Shown behind the name.')) gender = models.CharField( @@ -55,6 +55,34 @@ class OpenSlidesUser(models.Model, PersonMixin): max_length=100, null=True, blank=True, verbose_name=_("First Password")) + save_user_object = False + + def get_name_surfix(self): + return self.category + + def set_name_surfix(self, value): + self.category = value + + name_surfix = property(get_name_surfix, set_name_surfix) + + def get_first_name(self): + return self.user.first_name + + def set_first_name(self, first_name): + self.user.first_name = first_name + self.save_user_object = True + + first_name = property(get_first_name, set_first_name) + + def get_last_name(self): + return self.user.last_name + + def set_last_name(self, last_name): + self.user.last_name = last_name + self.save_user_object = True + + last_name = property(get_last_name, set_last_name) + def reset_password(self, password=None): """ Reset the password for the user to his default-password. @@ -67,6 +95,9 @@ class OpenSlidesUser(models.Model, PersonMixin): def has_perm(self, perm): return self.user.has_perm(perm) + def save_in_user_object(self, attribute, value): + self.save_in_user_object_dict[attribute] = value + @models.permalink def get_absolute_url(self, link='edit'): """ @@ -86,6 +117,12 @@ class OpenSlidesUser(models.Model, PersonMixin): return "%s (%s)" % (self.user.get_full_name(), self.name_surfix) return "%s" % self.user.get_full_name() + def save(self, *args, **kwargs): + if self.save_user_object: + self.user.save() + self.save_user_object = False + super(OpenSlidesUser, self).save(*args, **kwargs) + class Meta: # Rename permissions permissions = ( diff --git a/openslides/participant/tests.py b/openslides/participant/tests.py index c7dbadf46..a64f4ea54 100644 --- a/openslides/participant/tests.py +++ b/openslides/participant/tests.py @@ -39,7 +39,7 @@ class OpenSlidesUserTest(TestCase): self.assertEqual(unicode(self.openslidesuser1), u'Max Mustermann') def test_name_surfix(self): - self.openslidesuser1.name_surfix = u'München' + self.openslidesuser1.category = u'München' self.openslidesuser1.save() self.assertEqual(unicode(self.openslidesuser1), u'Max Mustermann (München)') @@ -57,6 +57,16 @@ class OpenSlidesUserTest(TestCase): self.assertEqual(get_person('openslides_user:1'), self.openslidesuser1) self.assertEqual(len(Persons()), 1) + def test_save_name(self): + self.assertEqual(self.openslidesuser1.first_name, self.user1.first_name) + self.assertEqual(self.openslidesuser1.last_name, self.user1.last_name) + self.openslidesuser1.first_name = 'foo' + self.openslidesuser1.last_name = 'bar' + self.openslidesuser1.save() + user1 = User.objects.get(pk=1) + self.assertEqual(user1.first_name, 'foo') + self.assertEqual(user1.last_name, 'bar') + class OpenSlidesGroupTest(TestCase): def setUp(self):