From: Emilie Zawadzki Date: Thu, 5 Jan 2017 15:41:06 +0000 (+0100) Subject: [Timesheet] : add validation + accounting date X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=03b46f9cf86cb4731e1959f907248b4970f67ec5;p=mezzo.git [Timesheet] : add validation + accounting date --- diff --git a/app/local_settings.py b/app/local_settings.py index e828a435..a1deb4ee 100644 --- a/app/local_settings.py +++ b/app/local_settings.py @@ -154,6 +154,7 @@ ADMIN_MENU_ORDER = ( 'organization-projects.ProjectDemo', 'organization-projects.Repository', 'organization-projects.RepositorySystem', + 'organization-projects.ProjectWorkPackage' )), (_('Shop'), ('shop.Product', 'organization-shop.ProductList', diff --git a/app/organization/network/admin.py b/app/organization/network/admin.py index 93d544a3..5e349842 100644 --- a/app/organization/network/admin.py +++ b/app/organization/network/admin.py @@ -281,13 +281,18 @@ class TrainingTopicAdmin(BaseTranslationModelAdmin): model = TrainingTopic + class PersonActivityTimeSheetAdmin(BaseTranslationModelAdmin): model = PersonActivityTimeSheet - list_display = ['person', 'activity', 'year', 'month', 'project', 'percentage'] + list_display = ['person', 'activity', 'year', 'month', 'project', 'work_package', 'percentage', 'accounting', 'validation'] list_filter = ['activity__person', 'year', 'project'] def person(self, instance): return instance.activity.person + def work_package(self, instance): + wk_list = [str(wk.number) for wk in instance.work_packages.all()] + return ",".join(wk_list) + admin.site.register(OrganizationLinked, OrganizationLinkedAdmin) admin.site.register(Organization, OrganizationAdmin) diff --git a/app/organization/network/migrations/0077_auto_20170104_1837.py b/app/organization/network/migrations/0077_auto_20170104_1837.py new file mode 100644 index 00000000..9f5587c2 --- /dev/null +++ b/app/organization/network/migrations/0077_auto_20170104_1837.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.11 on 2017-01-04 17:37 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models +from django.utils.timezone import utc + + +class Migration(migrations.Migration): + + dependencies = [ + ('organization-network', '0076_auto_20161230_1839'), + ] + + operations = [ + migrations.AddField( + model_name='personactivitytimesheet', + name='accounting', + field=models.DateField(blank=True, default=datetime.datetime(2017, 1, 4, 17, 35, 33, 228164, tzinfo=utc)), + ), + migrations.AddField( + model_name='personactivitytimesheet', + name='validation', + field=models.DateField(blank=True, default=datetime.datetime(2017, 1, 4, 17, 35, 33, 228198, tzinfo=utc)), + ), + ] diff --git a/app/organization/network/models.py b/app/organization/network/models.py index a9077f66..fa2925cf 100644 --- a/app/organization/network/models.py +++ b/app/organization/network/models.py @@ -29,7 +29,6 @@ import urllib import string import datetime import mimetypes - from geopy.geocoders import GoogleV3 as GoogleMaps from geopy.exc import GeocoderQueryError @@ -39,6 +38,7 @@ from django.core.urlresolvers import reverse, reverse_lazy from django.conf import settings from django.contrib.auth.models import User from django.core.exceptions import ValidationError +from django.utils import timezone from mezzanine.pages.models import Page from mezzanine.core.models import RichText, Displayable, Slugged @@ -563,6 +563,8 @@ class PersonActivityTimeSheet(models.Model): percentage = models.FloatField(_('% of work time on the project'), validators=[validate_positive]) month = models.IntegerField(_('month')) year = models.IntegerField(_('year')) + accounting = models.DateField(default=timezone.now(), blank=True) + validation = models.DateField(default=timezone.now(), blank=True) @property def date(self): diff --git a/app/organization/projects/admin.py b/app/organization/projects/admin.py index 11ad0ba2..cfbd0916 100644 --- a/app/organization/projects/admin.py +++ b/app/organization/projects/admin.py @@ -133,6 +133,13 @@ class ProjectTopicPageAdmin(PageAdmin): inlines = [PageImageInline, ] +class ProjectWorkPackageAdmin(BaseTranslationModelAdmin): + + model = ProjectWorkPackage + list_display = ['title', 'project', 'date_from', 'date_to', 'number', 'lead_organization' ] + list_filter = ['project', 'date_from', 'date_to', 'lead_organization' ] + + admin.site.register(Project, ProjectAdminDisplayable) admin.site.register(ProjectProgram, ProjectProgramAdmin) admin.site.register(ProjectProgramType, ProjectProgramTypeAdmin) @@ -141,3 +148,4 @@ admin.site.register(ProjectTopicPage, ProjectTopicPageAdmin) admin.site.register(ProjectDemo, ProjectDemoAdmin) admin.site.register(Repository) admin.site.register(RepositorySystem) +admin.site.register(ProjectWorkPackage, ProjectWorkPackageAdmin)