From 4ef0d9e6df8067f392028b56c2d70dc32960cc8c Mon Sep 17 00:00:00 2001 From: Emilie Date: Thu, 29 Dec 2016 12:53:55 +0100 Subject: [PATCH] [Timesheet] : take in account half days in WeeklyHourVolume --- .../migrations/0075_auto_20161229_1151.py | 166 ++++++++++++++++++ app/organization/network/models.py | 84 +++++---- 2 files changed, 219 insertions(+), 31 deletions(-) create mode 100644 app/organization/network/migrations/0075_auto_20161229_1151.py diff --git a/app/organization/network/migrations/0075_auto_20161229_1151.py b/app/organization/network/migrations/0075_auto_20161229_1151.py new file mode 100644 index 00000000..6cebff10 --- /dev/null +++ b/app/organization/network/migrations/0075_auto_20161229_1151.py @@ -0,0 +1,166 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.11 on 2016-12-29 10:51 +from __future__ import unicode_literals + +from django.db import migrations, models +import organization.network.validators + + +class Migration(migrations.Migration): + + dependencies = [ + ('organization-network', '0074_personactivitytimesheet_work_packages'), + ] + + operations = [ + migrations.RemoveField( + model_name='activityweeklyhourvolume', + name='friday_hours', + ), + migrations.RemoveField( + model_name='activityweeklyhourvolume', + name='monday_hours', + ), + migrations.RemoveField( + model_name='activityweeklyhourvolume', + name='thursday_hours', + ), + migrations.RemoveField( + model_name='activityweeklyhourvolume', + name='tuesday_hours', + ), + migrations.RemoveField( + model_name='activityweeklyhourvolume', + name='wednesday_hours', + ), + migrations.RemoveField( + model_name='personactivity', + name='friday_hours', + ), + migrations.RemoveField( + model_name='personactivity', + name='monday_hours', + ), + migrations.RemoveField( + model_name='personactivity', + name='thursday_hours', + ), + migrations.RemoveField( + model_name='personactivity', + name='tuesday_hours', + ), + migrations.RemoveField( + model_name='personactivity', + name='wednesday_hours', + ), + migrations.AddField( + model_name='activityweeklyhourvolume', + name='friday_am', + field=models.FloatField(default=0, validators=[organization.network.validators.validate_positive], verbose_name='friday AM'), + preserve_default=False, + ), + migrations.AddField( + model_name='activityweeklyhourvolume', + name='friday_pm', + field=models.FloatField(default=0, validators=[organization.network.validators.validate_positive], verbose_name='friday PM'), + preserve_default=False, + ), + migrations.AddField( + model_name='activityweeklyhourvolume', + name='monday_am', + field=models.FloatField(default=0, validators=[organization.network.validators.validate_positive], verbose_name='monday AM'), + preserve_default=False, + ), + migrations.AddField( + model_name='activityweeklyhourvolume', + name='monday_pm', + field=models.FloatField(default=0, validators=[organization.network.validators.validate_positive], verbose_name='monday PM'), + preserve_default=False, + ), + migrations.AddField( + model_name='activityweeklyhourvolume', + name='thursday_am', + field=models.FloatField(default=0, validators=[organization.network.validators.validate_positive], verbose_name='thursday AM'), + preserve_default=False, + ), + migrations.AddField( + model_name='activityweeklyhourvolume', + name='thursday_pm', + field=models.FloatField(default=0, validators=[organization.network.validators.validate_positive], verbose_name='thursday PM'), + preserve_default=False, + ), + migrations.AddField( + model_name='activityweeklyhourvolume', + name='tuesday_am', + field=models.FloatField(default=0, validators=[organization.network.validators.validate_positive], verbose_name='tuesday AM'), + preserve_default=False, + ), + migrations.AddField( + model_name='activityweeklyhourvolume', + name='tuesday_pm', + field=models.FloatField(default=0, validators=[organization.network.validators.validate_positive], verbose_name='tuesday PM'), + preserve_default=False, + ), + migrations.AddField( + model_name='activityweeklyhourvolume', + name='wednesday_am', + field=models.FloatField(default=0, validators=[organization.network.validators.validate_positive], verbose_name='wednesday AM'), + preserve_default=False, + ), + migrations.AddField( + model_name='activityweeklyhourvolume', + name='wednesday_pm', + field=models.FloatField(default=0, validators=[organization.network.validators.validate_positive], verbose_name='wednesday PM'), + preserve_default=False, + ), + migrations.AddField( + model_name='personactivity', + name='friday_am', + field=models.FloatField(blank=True, null=True, validators=[organization.network.validators.validate_positive], verbose_name='friday AM'), + ), + migrations.AddField( + model_name='personactivity', + name='friday_pm', + field=models.FloatField(blank=True, null=True, validators=[organization.network.validators.validate_positive], verbose_name='friday PM'), + ), + migrations.AddField( + model_name='personactivity', + name='monday_am', + field=models.FloatField(blank=True, null=True, validators=[organization.network.validators.validate_positive], verbose_name='monday AM'), + ), + migrations.AddField( + model_name='personactivity', + name='monday_pm', + field=models.FloatField(blank=True, null=True, validators=[organization.network.validators.validate_positive], verbose_name='monday PM'), + ), + migrations.AddField( + model_name='personactivity', + name='thursday_am', + field=models.FloatField(blank=True, null=True, validators=[organization.network.validators.validate_positive], verbose_name='thursday AM'), + ), + migrations.AddField( + model_name='personactivity', + name='thursday_pm', + field=models.FloatField(blank=True, null=True, validators=[organization.network.validators.validate_positive], verbose_name='thursday PM'), + ), + migrations.AddField( + model_name='personactivity', + name='tuesday_am', + field=models.FloatField(blank=True, null=True, validators=[organization.network.validators.validate_positive], verbose_name='tuesday AM'), + ), + migrations.AddField( + model_name='personactivity', + name='tuesday_pm', + field=models.FloatField(blank=True, null=True, validators=[organization.network.validators.validate_positive], verbose_name='tuesday PM'), + ), + migrations.AddField( + model_name='personactivity', + name='wednesday_am', + field=models.FloatField(blank=True, null=True, validators=[organization.network.validators.validate_positive], verbose_name='wednesday AM'), + ), + migrations.AddField( + model_name='personactivity', + name='wednesday_pm', + field=models.FloatField(blank=True, null=True, validators=[organization.network.validators.validate_positive], verbose_name='wednesday PM'), + ), + ] diff --git a/app/organization/network/models.py b/app/organization/network/models.py index 8f84f960..53bf1cf7 100644 --- a/app/organization/network/models.py +++ b/app/organization/network/models.py @@ -324,13 +324,10 @@ class Person(Displayable, AdminThumbMixin): self.first_name = names[0] self.last_name = ' '.join(names[1:]) - # def clean(self): - # super(Person, self).clean() - # self.set_names() - # - # def save(self, *args, **kwargs): - # self.set_names() - # super(Person, self).save(*args, **kwargs) + def save(self, *args, **kwargs): + super(Person, self).save(args, kwargs) + for activity in self.activities.all(): + update_activity(activity) class PersonPlaylist(PlaylistRelated): @@ -464,11 +461,16 @@ class UMR(Named): class ActivityWeeklyHourVolume(Titled): - monday_hours = models.FloatField(_('monday hours'), validators=[validate_positive]) - tuesday_hours = models.FloatField(_('tuesday hours'), validators=[validate_positive]) - wednesday_hours = models.FloatField(_('wednesday hours'), validators=[validate_positive]) - thursday_hours = models.FloatField(_('thursday hours'), validators=[validate_positive]) - friday_hours = models.FloatField(_('friday hours'), validators=[validate_positive]) + monday_am = models.FloatField(_('monday AM'), validators=[validate_positive]) + monday_pm = models.FloatField(_('monday PM'), validators=[validate_positive]) + tuesday_am = models.FloatField(_('tuesday AM'), validators=[validate_positive]) + tuesday_pm = models.FloatField(_('tuesday PM'), validators=[validate_positive]) + wednesday_am = models.FloatField(_('wednesday AM'), validators=[validate_positive]) + wednesday_pm = models.FloatField(_('wednesday PM'), validators=[validate_positive]) + thursday_am = models.FloatField(_('thursday AM'), validators=[validate_positive]) + thursday_pm = models.FloatField(_('thursday PM'), validators=[validate_positive]) + friday_am = models.FloatField(_('friday AM'), validators=[validate_positive]) + friday_pm = models.FloatField(_('friday PM'), validators=[validate_positive]) class Meta: verbose_name = _('Activity Weekly Hour Volume') @@ -525,11 +527,16 @@ class PersonActivity(Period): weekly_hour_volume = models.ForeignKey('ActivityWeeklyHourVolume', blank=True, null=True, on_delete=models.SET_NULL) - monday_hours = models.FloatField(_('monday hours'), validators=[validate_positive], blank=True, null=True) - tuesday_hours = models.FloatField(_('tuesday hours'), validators=[validate_positive], blank=True, null=True) - wednesday_hours = models.FloatField(_('wednesday hours'), validators=[validate_positive], blank=True, null=True) - thursday_hours = models.FloatField(_('thursday hours'), validators=[validate_positive], blank=True, null=True) - friday_hours = models.FloatField(_('friday hours'), validators=[validate_positive], blank=True, null=True) + monday_am = models.FloatField(_('monday AM'), validators=[validate_positive], blank=True, null=True) + monday_pm = models.FloatField(_('monday PM'), validators=[validate_positive], blank=True, null=True) + tuesday_am = models.FloatField(_('tuesday AM'), validators=[validate_positive], blank=True, null=True) + tuesday_pm = models.FloatField(_('tuesday PM'), validators=[validate_positive], blank=True, null=True) + wednesday_am = models.FloatField(_('wednesday AM'), validators=[validate_positive], blank=True, null=True) + wednesday_pm = models.FloatField(_('wednesday PM'), validators=[validate_positive], blank=True, null=True) + thursday_am = models.FloatField(_('thursday AM'), validators=[validate_positive], blank=True, null=True) + thursday_pm = models.FloatField(_('thursday PM'), validators=[validate_positive], blank=True, null=True) + friday_am = models.FloatField(_('friday AM'), validators=[validate_positive], blank=True, null=True) + friday_pm = models.FloatField(_('friday PM'), validators=[validate_positive], blank=True, null=True) class Meta: verbose_name = _('activity') @@ -544,20 +551,8 @@ class PersonActivity(Period): def save(self, *args, **kwargs): super(PersonActivity, self).save(args, kwargs) - if self.weekly_hour_volume : - # caution : if 0 return False - # caution : 'None' is not empty - if not self.monday_hours.__str__() != 'None' and \ - not self.tuesday_hours.__str__() != 'None' and \ - not self.wednesday_hours.__str__() != 'None' and \ - not self.thursday_hours.__str__() != 'None' and \ - not self.friday_hours.__str__() != 'None' : - self.monday_hours = self.weekly_hour_volume.monday_hours - self.tuesday_hours = self.weekly_hour_volume.tuesday_hours - self.wednesday_hours = self.weekly_hour_volume.wednesday_hours - self.thursday_hours = self.weekly_hour_volume.thursday_hours - self.friday_hours = self.weekly_hour_volume.friday_hours - self.save() + update_activity(self) + class PersonActivityTimeSheet(models.Model): @@ -582,3 +577,30 @@ class PersonActivityTimeSheet(models.Model): class PersonActivityVacation(Period): activity = models.ForeignKey('PersonActivity', verbose_name=_('activity')) + + +def update_activity(a): + if a.weekly_hour_volume : + # caution : if 0 return False + # caution : 'None' is not empty + if not a.monday_am.__str__() != 'None' and \ + not a.monday_pm.__str__() != 'None' and \ + not a.tuesday_am.__str__() != 'None' and \ + not a.tuesday_pm.__str__() != 'None' and \ + not a.wednesday_am.__str__() != 'None' and \ + not a.wednesday_pm.__str__() != 'None' and \ + not a.thursday_am.__str__() != 'None' and \ + not a.thursday_pm.__str__() != 'None' and \ + not a.friday_am.__str__() != 'None' and \ + not a.friday_pm.__str__() != 'None' : + a.monday_am = a.weekly_hour_volume.monday_am + a.monday_pm = a.weekly_hour_volume.monday_pm + a.tuesday_am = a.weekly_hour_volume.tuesday_am + a.tuesday_pm = a.weekly_hour_volume.tuesday_pm + a.wednesday_am = a.weekly_hour_volume.wednesday_am + a.wednesday_pm = a.weekly_hour_volume.wednesday_pm + a.thursday_am = a.weekly_hour_volume.thursday_am + a.thursday_pm = a.weekly_hour_volume.thursday_pm + a.friday_am = a.weekly_hour_volume.friday_am + a.friday_pm = a.weekly_hour_volume.friday_pm + a.save() -- 2.39.5