'organization-network.TrainingTopic',
'organization-network.TrainingLevel',
'organization-network.TrainingSpeciality',
+ 'organization-network.ActivityWeeklyHourVolume'
)),
(_('Projects'), ('organization-projects.Project',
'organization-projects.ProjectProgram',
model = Person
+class ActivityWeeklyHourVolumeAdmin(BaseTranslationModelAdmin):
+
+ 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 = []
admin.site.register(ActivityGrade, ActivityGradeAdmin)
admin.site.register(ActivityFramework, ActivityFrameworkAdmin)
admin.site.register(ActivityFunction, ActivityFunctionAdmin)
+admin.site.register(ActivityWeeklyHourVolume, ActivityWeeklyHourVolumeAdmin)
admin.site.register(TrainingType, TrainingTypeAdmin)
admin.site.register(TrainingLevel, TrainingLevelAdmin)
admin.site.register(TrainingTopic, TrainingTopicAdmin)
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.11 on 2016-12-22 15:56
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-network', '0069_auto_20161216_1649'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='ActivityWeeklyHourVolume',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('title', models.CharField(max_length=1024, verbose_name='title')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ('monday_hours', models.IntegerField(verbose_name='monday hours')),
+ ('tuesday_hours', models.IntegerField(verbose_name='tuesday hours')),
+ ('wednesday_hours', models.IntegerField(verbose_name='wednesday hours')),
+ ('thursday_hours', models.IntegerField(verbose_name='thursday hours')),
+ ('friday_hours', models.IntegerField(verbose_name='friday hours')),
+ ],
+ options={
+ 'verbose_name_plural': 'Activity Weekly Hour Volumes',
+ 'verbose_name': 'Activity Weekly Hour Volume',
+ },
+ ),
+ migrations.CreateModel(
+ name='PersonActivityWeeklyHourVolume',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('monday_hours', models.IntegerField(blank=True, null=True, verbose_name='monday hours')),
+ ('tuesday_hours', models.IntegerField(blank=True, null=True, verbose_name='tuesday hours')),
+ ('wednesday_hours', models.IntegerField(blank=True, null=True, verbose_name='wednesday hours')),
+ ('thursday_hours', models.IntegerField(blank=True, null=True, verbose_name='thursday hours')),
+ ('friday_hours', models.IntegerField(blank=True, null=True, verbose_name='friday hours')),
+ ('activity', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='person_activity_weekly_hour_volume', to='organization-network.PersonActivity', verbose_name='activity')),
+ ],
+ options={
+ 'verbose_name': 'Person Activity Weekly Hour Volume',
+ },
+ ),
+ migrations.AddField(
+ model_name='person',
+ name='register_id',
+ field=models.CharField(blank=True, max_length=128, null=True, verbose_name='register ID'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='weekly_hour_volume',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.ActivityWeeklyHourVolume'),
+ ),
+ ]
(6, 6),
]
+
class Organization(Named, Address, URL, AdminThumbRelatedMixin, Orderable):
"""(Organization description)"""
last_name = models.CharField(_('last name'), max_length=255, blank=True, null=True)
email = models.EmailField(_('email'), blank=True, null=True)
telephone = models.CharField(_('telephone'), max_length=64, blank=True, null=True)
+ register_id = models.CharField(_('register ID'), blank=True, null=True, max_length=128)
birthday = models.DateField(_('birthday'), blank=True, null=True)
bio = RichTextField(_('biography'), blank=True)
external_id = models.CharField(_('external ID'), blank=True, null=True, max_length=128)
verbose_name = _('UMR')
+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'))
+
+ 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)"""
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)
+
class Meta:
verbose_name = _('activity')
verbose_name_plural = _('activities')
return ' - '.join((self.status.name, str(self.date_from), str(self.date_to)))
else:
return ' - '.join((str(self.date_from), str(self.date_to)))
+
+ 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()
class OrganizationLinkedBlockInlineTranslationOptions(TranslationOptions):
fields = []
+
+
+@register(ActivityWeeklyHourVolume)
+class ActivityWeeklyHourVolumeTranslationOptions(TranslationOptions):
+
+ fields = []
+
+
+@register(PersonActivityWeeklyHourVolume)
+class PersonActivityWeeklyHourVolumeTranslationOptions(TranslationOptions):
+
+ fields = []
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.11 on 2016-12-22 15:56
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-projects', '0031_auto_20161205_1536'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='project',
+ name='external_id',
+ field=models.CharField(blank=True, max_length=128, null=True, verbose_name='register ID'),
+ ),
+ ]
"""(Project description)"""
type = models.CharField(_('type'), max_length=128, choices=PROJECT_TYPE_CHOICES)
+ external_id = models.CharField(_('register ID'), blank=True, null=True, max_length=128)
program = models.ForeignKey('ProjectProgram', verbose_name=_('project program'), related_name='projects', blank=True, null=True, on_delete=models.SET_NULL)
program_type = models.ForeignKey('ProjectProgramType', verbose_name=_('project program type'), related_name='projects', blank=True, null=True, on_delete=models.SET_NULL)
lead_team = models.ForeignKey('organization-network.Team', verbose_name=_('lead team'), related_name='leader_projects', blank=True, null=True)