]> git.parisson.com Git - mezzo.git/commitdiff
[TimeSheet] delete model, change field type and add validator
authorEmilie <zawadzki@ircam.fr>
Thu, 22 Dec 2016 19:00:49 +0000 (20:00 +0100)
committerEmilie <zawadzki@ircam.fr>
Thu, 22 Dec 2016 19:00:49 +0000 (20:00 +0100)
app/organization/network/admin.py
app/organization/network/migrations/0071_auto_20161222_1828.py [new file with mode: 0644]
app/organization/network/migrations/0072_auto_20161222_1906.py [new file with mode: 0644]
app/organization/network/models.py
app/organization/network/translation.py
app/organization/network/validators.py [new file with mode: 0644]

index f2fc4c77a447a12bc151c5d9ea1d8d4e61e90670..988f9bd1fbd99e2b280b7fb022742bc6fcc9e59c 100644 (file)
@@ -144,11 +144,6 @@ class ActivityWeeklyHourVolumeAdmin(BaseTranslationModelAdmin):
     model = ActivityWeeklyHourVolume
 
 
-class PersonActivityWeeklyHourVolumeAdminInline(TabularDynamicInlineAdmin):
-
-    model = PersonActivityWeeklyHourVolume
-
-
 class PersonActivityInline(StackedDynamicInlineAdmin):
 
     model = PersonActivity
@@ -209,7 +204,6 @@ class PersonActivityAdmin(BaseTranslationModelAdmin):
     list_filter = [ 'date_from', 'date_to',
                     'is_permanent', 'framework', 'grade',
                     'status', 'teams', 'projects',]
-    inlines = [PersonActivityWeeklyHourVolumeAdminInline,]
 
     def get_teams(self, instance):
         values = []
diff --git a/app/organization/network/migrations/0071_auto_20161222_1828.py b/app/organization/network/migrations/0071_auto_20161222_1828.py
new file mode 100644 (file)
index 0000000..6b54624
--- /dev/null
@@ -0,0 +1,47 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.11 on 2016-12-22 17:28
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('organization-network', '0070_auto_20161222_1656'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='personactivityweeklyhourvolume',
+            name='activity',
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='friday_hours',
+            field=models.IntegerField(blank=True, null=True, verbose_name='friday hours'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='monday_hours',
+            field=models.IntegerField(blank=True, null=True, verbose_name='monday hours'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='thursday_hours',
+            field=models.IntegerField(blank=True, null=True, verbose_name='thursday hours'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='tuesday_hours',
+            field=models.IntegerField(blank=True, null=True, verbose_name='tuesday hours'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='wednesday_hours',
+            field=models.IntegerField(blank=True, null=True, verbose_name='wednesday hours'),
+        ),
+        migrations.DeleteModel(
+            name='PersonActivityWeeklyHourVolume',
+        ),
+    ]
diff --git a/app/organization/network/migrations/0072_auto_20161222_1906.py b/app/organization/network/migrations/0072_auto_20161222_1906.py
new file mode 100644 (file)
index 0000000..2cec485
--- /dev/null
@@ -0,0 +1,65 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.11 on 2016-12-22 18:06
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('organization-network', '0071_auto_20161222_1828'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='activityweeklyhourvolume',
+            name='friday_hours',
+            field=models.FloatField(verbose_name='friday hours'),
+        ),
+        migrations.AlterField(
+            model_name='activityweeklyhourvolume',
+            name='monday_hours',
+            field=models.FloatField(verbose_name='monday hours'),
+        ),
+        migrations.AlterField(
+            model_name='activityweeklyhourvolume',
+            name='thursday_hours',
+            field=models.FloatField(verbose_name='thursday hours'),
+        ),
+        migrations.AlterField(
+            model_name='activityweeklyhourvolume',
+            name='tuesday_hours',
+            field=models.FloatField(verbose_name='tuesday hours'),
+        ),
+        migrations.AlterField(
+            model_name='activityweeklyhourvolume',
+            name='wednesday_hours',
+            field=models.FloatField(verbose_name='wednesday hours'),
+        ),
+        migrations.AlterField(
+            model_name='personactivity',
+            name='friday_hours',
+            field=models.FloatField(blank=True, null=True, verbose_name='friday hours'),
+        ),
+        migrations.AlterField(
+            model_name='personactivity',
+            name='monday_hours',
+            field=models.FloatField(blank=True, null=True, verbose_name='monday hours'),
+        ),
+        migrations.AlterField(
+            model_name='personactivity',
+            name='thursday_hours',
+            field=models.FloatField(blank=True, null=True, verbose_name='thursday hours'),
+        ),
+        migrations.AlterField(
+            model_name='personactivity',
+            name='tuesday_hours',
+            field=models.FloatField(blank=True, null=True, verbose_name='tuesday hours'),
+        ),
+        migrations.AlterField(
+            model_name='personactivity',
+            name='wednesday_hours',
+            field=models.FloatField(blank=True, null=True, verbose_name='wednesday hours'),
+        ),
+    ]
index 6d2f2c2b3c725542b82c51a9ae3e12fc74283625..05c845e0b3db8e09de3fc63f5905d9b42ad152f4 100644 (file)
@@ -49,6 +49,8 @@ from organization.core.models import *
 from organization.media.models import *
 from organization.pages.models import CustomPage
 
+from organization.network.validators import *
+
 # from .nationalities.fields import NationalityField
 
 # Hack to have these strings translated
@@ -462,30 +464,17 @@ class UMR(Named):
 
 class ActivityWeeklyHourVolume(Titled):
 
-    monday_hours = models.IntegerField(_('monday hours'))
-    tuesday_hours = models.IntegerField(_('tuesday hours'))
-    wednesday_hours = models.IntegerField(_('wednesday hours'))
-    thursday_hours = models.IntegerField(_('thursday hours'))
-    friday_hours = models.IntegerField(_('friday hours'))
+    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])
 
     class Meta:
         verbose_name = _('Activity Weekly Hour Volume')
         verbose_name_plural = _('Activity Weekly Hour Volumes')
 
 
-class PersonActivityWeeklyHourVolume(models.Model):
-
-    activity = models.OneToOneField('PersonActivity', verbose_name=_('activity'), related_name="person_activity_weekly_hour_volume", blank=True, null=True, on_delete=models.CASCADE)
-    monday_hours = models.IntegerField(_('monday hours'), blank=True, null=True)
-    tuesday_hours = models.IntegerField(_('tuesday hours'), blank=True, null=True)
-    wednesday_hours = models.IntegerField(_('wednesday hours'), blank=True, null=True)
-    thursday_hours = models.IntegerField(_('thursday hours'), blank=True, null=True)
-    friday_hours = models.IntegerField(_('friday hours'), blank=True, null=True)
-
-    class Meta:
-        verbose_name = _('Person Activity Weekly Hour Volume')
-
-
 class PersonActivity(Period):
     """(Activity description)"""
 
@@ -532,11 +521,16 @@ class PersonActivity(Period):
     date_modified_manual = models.DateTimeField(_('manual modification date'), blank=True, null=True)
 
     comments = models.TextField(_('comments'), blank=True)
-
     external_id = models.CharField(_('external ID'), blank=True, null=True, max_length=128)
 
     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)
+
     class Meta:
         verbose_name = _('activity')
         verbose_name_plural = _('activities')
@@ -550,11 +544,17 @@ class PersonActivity(Period):
 
     def save(self, *args, **kwargs):
         super(PersonActivity, self).save(args, kwargs)
-        if self.weekly_hour_volume and not hasattr(self, 'person_activity_weekly_hour_volume'):
-            self.person_activity_weekly_hour_volume = PersonActivityWeeklyHourVolume(activity=self)
-            self.person_activity_weekly_hour_volume.monday_hours = self.weekly_hour_volume.monday_hours
-            self.person_activity_weekly_hour_volume.tuesday_hours = self.weekly_hour_volume.tuesday_hours
-            self.person_activity_weekly_hour_volume.wednesday_hours = self.weekly_hour_volume.wednesday_hours
-            self.person_activity_weekly_hour_volume.thursday_hours = self.weekly_hour_volume.thursday_hours
-            self.person_activity_weekly_hour_volume.friday_hours = self.weekly_hour_volume.friday_hours
-            self.person_activity_weekly_hour_volume.save()
+        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()
index 1f72247581baa77e597949a04fbb739936e4da48..9d09d4325c77dcb7d62fe7751a61aeae12c6650b 100644 (file)
@@ -220,9 +220,3 @@ class OrganizationLinkedBlockInlineTranslationOptions(TranslationOptions):
 class ActivityWeeklyHourVolumeTranslationOptions(TranslationOptions):
 
     fields = []
-
-
-@register(PersonActivityWeeklyHourVolume)
-class PersonActivityWeeklyHourVolumeTranslationOptions(TranslationOptions):
-
-    fields = []
diff --git a/app/organization/network/validators.py b/app/organization/network/validators.py
new file mode 100644 (file)
index 0000000..45ae911
--- /dev/null
@@ -0,0 +1,9 @@
+from django.core.exceptions import ValidationError
+from django.utils.translation import ugettext_lazy as _
+
+def validate_positive(value):
+    if value < 0:
+        raise ValidationError(
+            _('%(value)s must be positive'),
+            params={'value': value},
+        )