model = ActivityWeeklyHourVolume
-class PersonActivityWeeklyHourVolumeAdminInline(TabularDynamicInlineAdmin):
-
- model = PersonActivityWeeklyHourVolume
-
-
class PersonActivityInline(StackedDynamicInlineAdmin):
model = PersonActivity
list_filter = [ 'date_from', 'date_to',
'is_permanent', 'framework', 'grade',
'status', 'teams', 'projects',]
- inlines = [PersonActivityWeeklyHourVolumeAdminInline,]
def get_teams(self, instance):
values = []
--- /dev/null
+# -*- 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',
+ ),
+ ]
--- /dev/null
+# -*- 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'),
+ ),
+ ]
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
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)"""
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')
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()
class ActivityWeeklyHourVolumeTranslationOptions(TranslationOptions):
fields = []
-
-
-@register(PersonActivityWeeklyHourVolume)
-class PersonActivityWeeklyHourVolumeTranslationOptions(TranslationOptions):
-
- fields = []
--- /dev/null
+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},
+ )