From e365c394d86b79ac60a22ee07b978accd8b639c4 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Thu, 26 Sep 2019 20:16:24 +0300 Subject: [PATCH] Fix user creation receiver at official creation --- webapp/migrations/0058_auto_20190926_2010.py | 31 ++++++++++++++++++++ webapp/models.py | 23 +++++++++++---- webapp/serializers.py | 10 ++++++- 3 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 webapp/migrations/0058_auto_20190926_2010.py diff --git a/webapp/migrations/0058_auto_20190926_2010.py b/webapp/migrations/0058_auto_20190926_2010.py new file mode 100644 index 0000000..e7230cd --- /dev/null +++ b/webapp/migrations/0058_auto_20190926_2010.py @@ -0,0 +1,31 @@ +# Generated by Django 2.1.5 on 2019-09-26 17:10 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('webapp', '0057_auto_20190926_1915'), + ] + + operations = [ + migrations.AddField( + model_name='official', + name='email', + field=models.EmailField(default='asd@asd.fi', max_length=254, verbose_name='Email address'), + preserve_default=False, + ), + migrations.AddField( + model_name='official', + name='first_name', + field=models.CharField(default='asd', max_length=30, verbose_name='First name'), + preserve_default=False, + ), + migrations.AddField( + model_name='official', + name='last_name', + field=models.CharField(default='asd', max_length=150, verbose_name='Last name'), + preserve_default=False, + ), + ] diff --git a/webapp/models.py b/webapp/models.py index 9325702..c3fd53d 100644 --- a/webapp/models.py +++ b/webapp/models.py @@ -209,6 +209,9 @@ class Official(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) + first_name = models.CharField(_('First name'), max_length=30) + last_name = models.CharField(_('Last name'), max_length=150) + email = models.EmailField(_('Email address')) phone_number = PhoneNumberField(_('Phone number')) role_history = models.ManyToManyField('Occupation', blank=True) @@ -216,19 +219,29 @@ class Official(models.Model): def current_roles(self): return self.role_history.all().filter(end_date__gte=timezone.now()).filter(start_date__lte=timezone.now()) + @property + def roles_of_year(self, year): + return self.role_history.all().filter(end_date__gte=timezone.datetime(year, 1, 1)).filter(start_date__lte=timezone.datetime(year, 12, 31)) + def __str__(self): - return '{} {}'.format(self.user.first_name, self.user.last_name) + return '{} {}'.format(self.first_name, self.last_name) -@receiver(post_save, sender=User) +@receiver(post_save, sender=Official) def create_user_profile(sender, instance, created, **kwargs): if created: - Official.objects.create(user=instance) + instance.user.first_name = instance.first_name + instance.user.last_name = instance.last_name + instance.user.email = instance.email + instance.user.save() -@receiver(post_save, sender=User) +@receiver(post_save, sender=Official) def save_user_profile(sender, instance, **kwargs): - instance.official.save() + instance.user.first_name = instance.first_name + instance.user.last_name = instance.last_name + instance.user.email = instance.email + instance.user.save() auditlog.register(Tag) diff --git a/webapp/serializers.py b/webapp/serializers.py index b542d55..7cdee73 100644 --- a/webapp/serializers.py +++ b/webapp/serializers.py @@ -93,8 +93,16 @@ class FeedSerializer(serializers.ModelSerializer): return feed +class OccupationSerializer(serializers.ModelSerializer): + class Meta: + model = Occupation + fields = ('start_date', 'end_date') + + class ContactsSerializer(serializers.ModelSerializer): + current_roles = OccupationSerializer(many=True, read_only=True) + class Meta: model = Official - fields = ('id', 'first_name', 'last_name', 'phone_number', 'role') + fields = ('id', 'first_name', 'last_name', 'email', 'phone_number', 'current_roles') depth = 2