From 3ca17189e1ea2e85109f93e4a60baaa7b7cae5cf Mon Sep 17 00:00:00 2001 From: Emilie Date: Fri, 30 Dec 2016 19:30:37 +0100 Subject: [PATCH] [Timesheet] : improve model + admin --- app/local_settings.py | 4 +++- app/organization/network/admin.py | 9 ++++++++ .../migrations/0076_auto_20161230_1839.py | 21 +++++++++++++++++++ app/organization/network/models.py | 2 +- app/organization/network/translation.py | 6 ++++++ .../migrations/0034_auto_20161230_1839.py | 20 ++++++++++++++++++ 6 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 app/organization/network/migrations/0076_auto_20161230_1839.py create mode 100644 app/organization/projects/migrations/0034_auto_20161230_1839.py diff --git a/app/local_settings.py b/app/local_settings.py index 80b96631..e828a435 100644 --- a/app/local_settings.py +++ b/app/local_settings.py @@ -142,7 +142,9 @@ ADMIN_MENU_ORDER = ( 'organization-network.TrainingTopic', 'organization-network.TrainingLevel', 'organization-network.TrainingSpeciality', - 'organization-network.ActivityWeeklyHourVolume' + )), + (_('Timesheet'), ('organization-network.ActivityWeeklyHourVolume', + 'organization-network.PersonActivityTimeSheet' )), (_('Projects'), ('organization-projects.Project', 'organization-projects.ProjectProgram', diff --git a/app/organization/network/admin.py b/app/organization/network/admin.py index b815fd91..93d544a3 100644 --- a/app/organization/network/admin.py +++ b/app/organization/network/admin.py @@ -211,6 +211,7 @@ class PersonAdmin(BaseTranslationOrderedModelAdmin): weekly_hour_volume = last_activity.weekly_hour_volume.__str__() return weekly_hour_volume + class PersonActivityAdmin(BaseTranslationModelAdmin): model = PersonActivity @@ -280,6 +281,13 @@ class TrainingTopicAdmin(BaseTranslationModelAdmin): model = TrainingTopic +class PersonActivityTimeSheetAdmin(BaseTranslationModelAdmin): + model = PersonActivityTimeSheet + list_display = ['person', 'activity', 'year', 'month', 'project', 'percentage'] + list_filter = ['activity__person', 'year', 'project'] + def person(self, instance): + return instance.activity.person + admin.site.register(OrganizationLinked, OrganizationLinkedAdmin) admin.site.register(Organization, OrganizationAdmin) @@ -300,3 +308,4 @@ admin.site.register(TrainingType, TrainingTypeAdmin) admin.site.register(TrainingLevel, TrainingLevelAdmin) admin.site.register(TrainingTopic, TrainingTopicAdmin) admin.site.register(TrainingSpeciality, TrainingSpecialityAdmin) +admin.site.register(PersonActivityTimeSheet, PersonActivityTimeSheetAdmin) diff --git a/app/organization/network/migrations/0076_auto_20161230_1839.py b/app/organization/network/migrations/0076_auto_20161230_1839.py new file mode 100644 index 00000000..365c7be1 --- /dev/null +++ b/app/organization/network/migrations/0076_auto_20161230_1839.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.11 on 2016-12-30 17:39 +from __future__ import unicode_literals + +from django.db import migrations, models +import organization.network.validators + + +class Migration(migrations.Migration): + + dependencies = [ + ('organization-network', '0075_auto_20161229_1151'), + ] + + operations = [ + migrations.AlterField( + model_name='personactivitytimesheet', + name='percentage', + field=models.FloatField(validators=[organization.network.validators.validate_positive], verbose_name='% of work time on the project'), + ), + ] diff --git a/app/organization/network/models.py b/app/organization/network/models.py index 53bf1cf7..a9077f66 100644 --- a/app/organization/network/models.py +++ b/app/organization/network/models.py @@ -560,7 +560,7 @@ class PersonActivityTimeSheet(models.Model): activity = models.ForeignKey('PersonActivity', verbose_name=_('activity'), related_name='timesheets') project = models.ForeignKey('organization-projects.Project', verbose_name=_('project'), related_name='timesheets') work_packages = models.ManyToManyField('organization-projects.ProjectWorkPackage', verbose_name=_('work package'), related_name='timesheets', blank=True) - percentage = models.IntegerField(_('% of work time on the project')) + percentage = models.FloatField(_('% of work time on the project'), validators=[validate_positive]) month = models.IntegerField(_('month')) year = models.IntegerField(_('year')) diff --git a/app/organization/network/translation.py b/app/organization/network/translation.py index 9d09d432..94a1d6dc 100644 --- a/app/organization/network/translation.py +++ b/app/organization/network/translation.py @@ -220,3 +220,9 @@ class OrganizationLinkedBlockInlineTranslationOptions(TranslationOptions): class ActivityWeeklyHourVolumeTranslationOptions(TranslationOptions): fields = [] + + +@register(PersonActivityTimeSheet) +class PersonActivityTimeSheetTranslationOptions(TranslationOptions): + + fields = [] diff --git a/app/organization/projects/migrations/0034_auto_20161230_1839.py b/app/organization/projects/migrations/0034_auto_20161230_1839.py new file mode 100644 index 00000000..4dceb7a0 --- /dev/null +++ b/app/organization/projects/migrations/0034_auto_20161230_1839.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.11 on 2016-12-30 17:39 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('organization-projects', '0033_projectworkpackage'), + ] + + operations = [ + migrations.AlterField( + model_name='project', + name='external_id', + field=models.CharField(blank=True, max_length=128, null=True, verbose_name='external ID'), + ), + ] -- 2.39.5