]> git.parisson.com Git - mezzo.git/commitdiff
Add various person activity data
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Tue, 23 Aug 2016 05:52:13 +0000 (07:52 +0200)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Tue, 23 Aug 2016 05:52:13 +0000 (07:52 +0200)
app/organization/project/models.py
app/organization/team/admin.py
app/organization/team/migrations/0017_auto_20160823_0744.py [new file with mode: 0644]
app/organization/team/models.py

index 2922423b2e4ee602d67cdb3bb11e106ecf89fed2..c0e4d6e0dc45d1541bffab6679d540ba7d87ffef 100644 (file)
@@ -6,16 +6,15 @@ from django.utils.translation import ugettext_lazy as _
 from mezzanine.core.models import RichText, Displayable, Slugged, Orderable
 
 from organization.core.models import *
-from organization.team.models import Person, Team, Organization
 
 
 class Project(Displayable, Period, RichText):
     """(Project description)"""
 
-    lead_team = models.ForeignKey(Team, verbose_name=_('lead team'), related_name='leader_projects', blank=True, null=True)
-    persons = models.ManyToManyField(Person, verbose_name=_('persons'), blank=True)
-    teams = models.ManyToManyField(Team, verbose_name=_('teams'), related_name='patner_projects', blank=True)
-    organizations = models.ManyToManyField(Organization, verbose_name=_('organizations'), blank=True)
+    lead_team = models.ForeignKey('organization-team.Team', verbose_name=_('lead team'), related_name='leader_projects', blank=True, null=True)
+    persons = models.ManyToManyField('organization-team.Person', verbose_name=_('persons'), blank=True)
+    teams = models.ManyToManyField('organization-team.Team', verbose_name=_('teams'), related_name='patner_projects', blank=True)
+    organizations = models.ManyToManyField('organization-team.Organization', verbose_name=_('organizations'), blank=True)
     website = models.URLField(_('website'), max_length=512, blank=True)
 
     class Meta:
index 7830655f0fa6ca2b8ab1a8275251f24877972e77..ad7640683e9881ab9c931db5e1b7e3e6f6031388 100644 (file)
@@ -16,6 +16,7 @@ class OrganizationAdmin(BaseTranslationModelAdmin):
 class PersonActivityInline(StackedDynamicInlineAdmin):
 
     model = PersonActivity
+    fk_name = 'person'
 
 
 class TeamAdmin(PageAdmin):
@@ -42,7 +43,7 @@ class PersonAdmin(BaseTranslationModelAdmin):
 
     model = Person
     inlines = [PersonActivityInline, PersonLinkInline, ]
-    first_fields = ['first_name', 'last_name', 'title', 'gender', 'user']
+    first_fields = ['last_name', 'first_name', 'title', 'gender', 'user']
 
     def get_fieldsets(self, request, obj = None):
         res = super(PersonAdmin, self).get_fieldsets(request, obj)
@@ -55,5 +56,5 @@ class PersonAdmin(BaseTranslationModelAdmin):
 admin.site.register(Organization, OrganizationAdmin)
 admin.site.register(OrganizationType)
 admin.site.register(Department, DepartmentAdmin)
-admin.site.register(Team, TeamAdmin)
+admin.site.register(Team, TeamAdmin)
 admin.site.register(Person, PersonAdmin)
diff --git a/app/organization/team/migrations/0017_auto_20160823_0744.py b/app/organization/team/migrations/0017_auto_20160823_0744.py
new file mode 100644 (file)
index 0000000..37e5cd9
--- /dev/null
@@ -0,0 +1,283 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-23 05:44
+from __future__ import unicode_literals
+
+import datetime
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('organization-project', '0007_auto_20160819_1920'),
+        ('organization-team', '0016_auto_20160812_1521'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='ActivityFramework',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('description', models.TextField(blank=True, verbose_name='description')),
+                ('name', models.CharField(max_length=512, verbose_name='name')),
+            ],
+            options={
+                'verbose_name': 'activity framework',
+            },
+        ),
+        migrations.CreateModel(
+            name='ActivityGrade',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('description', models.TextField(blank=True, verbose_name='description')),
+                ('name', models.CharField(max_length=512, verbose_name='name')),
+            ],
+            options={
+                'verbose_name': 'activity grade',
+            },
+        ),
+        migrations.CreateModel(
+            name='ActivityStatus',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('description', models.TextField(blank=True, verbose_name='description')),
+                ('name', models.CharField(max_length=512, verbose_name='name')),
+            ],
+            options={
+                'verbose_name': 'activity status',
+            },
+        ),
+        migrations.CreateModel(
+            name='BudgetCode',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('description', models.TextField(blank=True, verbose_name='description')),
+                ('name', models.CharField(max_length=512, verbose_name='name')),
+            ],
+            options={
+                'verbose_name': 'budget code',
+            },
+        ),
+        migrations.CreateModel(
+            name='RecordPiece',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('description', models.TextField(blank=True, verbose_name='description')),
+                ('name', models.CharField(max_length=512, verbose_name='name')),
+            ],
+            options={
+                'verbose_name': 'record piece',
+            },
+        ),
+        migrations.CreateModel(
+            name='TrainingLevel',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('description', models.TextField(blank=True, verbose_name='description')),
+                ('name', models.CharField(max_length=512, verbose_name='name')),
+            ],
+            options={
+                'verbose_name': 'training level',
+            },
+        ),
+        migrations.CreateModel(
+            name='TrainingSpectiality',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('description', models.TextField(blank=True, verbose_name='description')),
+                ('name', models.CharField(max_length=512, verbose_name='name')),
+            ],
+            options={
+                'verbose_name': 'training speciality',
+            },
+        ),
+        migrations.CreateModel(
+            name='TrainingTopic',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('description', models.TextField(blank=True, verbose_name='description')),
+                ('name', models.CharField(max_length=512, verbose_name='name')),
+            ],
+            options={
+                'verbose_name': 'training topic',
+            },
+        ),
+        migrations.CreateModel(
+            name='TrainingType',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('description', models.TextField(blank=True, verbose_name='description')),
+                ('name', models.CharField(max_length=512, verbose_name='name')),
+            ],
+            options={
+                'verbose_name': 'training type',
+            },
+        ),
+        migrations.RemoveField(
+            model_name='personactivity',
+            name='role',
+        ),
+        migrations.AddField(
+            model_name='person',
+            name='permanent',
+            field=models.BooleanField(default=False, verbose_name='permanent'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='attachment_organization',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='attachment_activity', to='organization-team.Organization', verbose_name='attachment organization'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='comments',
+            field=models.TextField(blank=True, verbose_name='comments'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='date_added',
+            field=models.DateTimeField(auto_now_add=True, default=datetime.datetime(2016, 8, 23, 7, 44, 31, 896290), verbose_name='add date'),
+            preserve_default=False,
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='date_modified',
+            field=models.DateTimeField(auto_now=True, default=datetime.datetime(2016, 8, 23, 7, 44, 41, 729673), verbose_name='modification date'),
+            preserve_default=False,
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='date_modified_manual',
+            field=models.DateTimeField(blank=True, null=True, verbose_name='manual modification date'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='employer',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='employer_activity', to='organization-team.Organization', verbose_name='employer'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='function',
+            field=models.CharField(blank=True, max_length=1024, verbose_name='fonction'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='hdr',
+            field=models.BooleanField(default=False, verbose_name='HDR'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='phd_defense_date',
+            field=models.DateField(blank=True, null=True, verbose_name='PhD defense date'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='phd_director',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='phd_director_activity', to='organization-team.Person', verbose_name='PhD director'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='phd_doctoral_school',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.Organization', verbose_name='doctoral school'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='phd_officer_1',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='phd_officer_1_activity', to='organization-team.Person', verbose_name='PhD officer 1'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='phd_officer_2',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='phd_officer_2_activity', to='organization-team.Person', verbose_name='PhD officer 2'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='phd_postdoctoralsituation',
+            field=models.CharField(blank=True, max_length=256, verbose_name='post-doctoral situation'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='phd_title',
+            field=models.TextField(blank=True, verbose_name='PhD title'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='project',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-project.Project', verbose_name='project'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='rd_program',
+            field=models.TextField(blank=True, verbose_name='R&D program'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='rd_quota',
+            field=models.IntegerField(blank=True, null=True, verbose_name='R&D quota'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='second_employer',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='second_employer_activity', to='organization-team.Organization', verbose_name='second employer'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='second_team',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='second_team_activity', to='organization-team.Team', verbose_name='second team'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='training_title',
+            field=models.TextField(blank=True, verbose_name='Training title'),
+        ),
+        migrations.AlterField(
+            model_name='personactivity',
+            name='team',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='team_activity', to='organization-team.Team', verbose_name='team'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='budget_code',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.BudgetCode'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='framework',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.ActivityFramework', verbose_name='framework'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='grade',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.ActivityGrade', verbose_name='grade'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='record_piece',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.RecordPiece'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='status',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.ActivityStatus', verbose_name='status'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='training_level',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.TrainingLevel', verbose_name='training level'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='training_speciality',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.TrainingSpectiality', verbose_name='training speciality'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='training_topic',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.TrainingTopic', verbose_name='training topic'),
+        ),
+        migrations.AddField(
+            model_name='personactivity',
+            name='training_type',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.TrainingType', verbose_name='training type'),
+        ),
+    ]
index b61b2958a1a112483967a0a1347d16129ad2e8aa..74841f0c6a27ea692ed51fa3614c1027cc29b864 100644 (file)
@@ -22,13 +22,10 @@ from mezzanine.utils.models import AdminThumbMixin, upload_to
 from mezzanine.galleries.models import BaseGallery
 
 from organization.core.models import *
-from organization.magazine.models import Article
-from organization.project.models import Project
 
 from django_countries.fields import CountryField
 # from .nationalities.fields import NationalityField
 
-
 # Hack to have these strings translated
 mr = _('Mr')
 mrs = _('Ms')
@@ -92,7 +89,7 @@ class Department(Page, SubTitle, RichText, Photo):
     organization = models.ForeignKey('Organization', verbose_name=_('organization'))
     url = models.URLField(_('URL'), max_length=512, blank=True)
     weaving_css_class = models.CharField(_('background pattern'), choices=PATTERN_CHOICES, max_length=64, blank=True)
-    articles_related = models.ManyToManyField(Article, verbose_name=_('Related articles'), blank=True)
+    articles_related = models.ManyToManyField('organization-magazine.Article', verbose_name=_('Related articles'), blank=True)
 
     class Meta:
         verbose_name = _('department')
@@ -119,7 +116,7 @@ class Person(Displayable, AdminThumbMixin, Photo):
     last_name = models.CharField(_('last name'), max_length=255, blank=True, null=True)
     birthday = models.DateField(_('birthday'), blank=True, null=True)
     bio = RichTextField(_('biography'), blank=True)
-    permanent = models.BooleanField(_('permanent'))
+    permanent = models.BooleanField(_('permanent'), default=False)
 
     class Meta:
         verbose_name = _('person')
@@ -218,41 +215,44 @@ class PersonActivity(Description, Period, RichText):
     """(Activity description)"""
 
     person = models.ForeignKey('Person', verbose_name=_('person'))
-    team = models.ForeignKey('Team', verbose_name=_('team'))
-    second_team = models.ForeignKey('Team', verbose_name=_('second team'))
+    team = models.ForeignKey('Team', verbose_name=_('team'), related_name='team_activity', blank=True, null=True, on_delete=models.SET_NULL)
+    second_team = models.ForeignKey('Team', verbose_name=_('second team'), related_name='second_team_activity', blank=True, null=True, on_delete=models.SET_NULL)
     function = models.CharField(_('fonction'), blank=True, max_length=1024)
 
     status = models.ForeignKey(ActivityStatus, verbose_name=_('status'), blank=True, null=True, on_delete=models.SET_NULL)
     grade = models.ForeignKey(ActivityGrade, verbose_name=_('grade'), blank=True, null=True, on_delete=models.SET_NULL)
     framework = models.ForeignKey(ActivityFramework, verbose_name=_('framework'), blank=True, null=True, on_delete=models.SET_NULL)
-    hdr = models.BooleanField(_('HDR'))
+    hdr = models.BooleanField(_('HDR'), default=False)
 
-    employer = models.ForeignKey(Organization, verbose_name=_('employer'), blank=True, null=True, on_delete=models.SET_NULL)
-    second_employer = models.ForeignKey(Organization, verbose_name=_('second employer'), blank=True, null=True, on_delete=models.SET_NULL)
-    attachment_organization = models.ForeignKey(Organization, verbose_name=_('attachment organization'), blank=True, null=True, on_delete=models.SET_NULL)
+    employer = models.ForeignKey(Organization, verbose_name=_('employer'), related_name='employer_activity', blank=True, null=True, on_delete=models.SET_NULL)
+    second_employer = models.ForeignKey(Organization, verbose_name=_('second employer'), related_name='second_employer_activity', blank=True, null=True, on_delete=models.SET_NULL)
+    attachment_organization = models.ForeignKey(Organization, verbose_name=_('attachment organization'), related_name='attachment_activity', blank=True, null=True, on_delete=models.SET_NULL)
 
-    project = models.ForeignKey(Project, verbose_name=_('project'), blank=True, null=True, on_delete=models.SET_NULL)
-    rd_quota = models.IntegerField(_('R&D quota'), blank=True)
-    rd_program = models.TextField(_('R&D program'))
+    project = models.ForeignKey('organization-project.Project', verbose_name=_('project'), blank=True, null=True, on_delete=models.SET_NULL)
+    rd_quota = models.IntegerField(_('R&D quota'), blank=True, null=True)
+    rd_program = models.TextField(_('R&D program'), blank=True)
+    budget_code = models.ForeignKey(BudgetCode, blank=True, null=True, on_delete=models.SET_NULL)
 
     phd_doctoral_school = models.ForeignKey(Organization, verbose_name=_('doctoral school'), blank=True, null=True, on_delete=models.SET_NULL)
-    phd_director = models.ForeignKey('Person', verbose_name=_('PhD director'), blank=True, null=True, on_delete=models.SET_NULL)
-    phd_officer_1 = models.ForeignKey('Person', verbose_name=_('PhD officer 1'), blank=True, null=True, on_delete=models.SET_NULL)
-    phd_officer_2 = models.ForeignKey('Person', verbose_name=_('PhD officer 2'), blank=True, null=True, on_delete=models.SET_NULL)
-    phd_defense_date = models.DateField(_('PhD defense date'), blank=True)
-    phd_title = models.TextField(_('PhD title'))
+    phd_director = models.ForeignKey('Person', verbose_name=_('PhD director'), related_name='phd_director_activity', blank=True, null=True, on_delete=models.SET_NULL)
+    phd_officer_1 = models.ForeignKey('Person', verbose_name=_('PhD officer 1'), related_name='phd_officer_1_activity', blank=True, null=True, on_delete=models.SET_NULL)
+    phd_officer_2 = models.ForeignKey('Person', verbose_name=_('PhD officer 2'), related_name='phd_officer_2_activity', blank=True, null=True, on_delete=models.SET_NULL)
+    phd_defense_date = models.DateField(_('PhD defense date'), blank=True, null=True)
+    phd_title = models.TextField(_('PhD title'), blank=True)
     phd_postdoctoralsituation =  models.CharField(_('post-doctoral situation'), blank=True, max_length=256)
 
     training_type = models.ForeignKey(TrainingType, verbose_name=_('training type'), blank=True, null=True, on_delete=models.SET_NULL)
     training_level = models.ForeignKey(TrainingLevel, verbose_name=_('training level'), blank=True, null=True, on_delete=models.SET_NULL)
     training_topic = models.ForeignKey(TrainingTopic, verbose_name=_('training topic'), blank=True, null=True, on_delete=models.SET_NULL)
     training_speciality = models.ForeignKey(TrainingSpectiality, verbose_name=_('training speciality'), blank=True, null=True, on_delete=models.SET_NULL)
-    training_title = models.TextField(_('Training title'))
+    training_title = models.TextField(_('Training title'), blank=True)
+
+    comments = models.TextField(_('comments'), blank=True)
 
-    comments = models.TextField(_('comments'))
-    budget_code = models.ForeignKey(BudgetCode, blank=True, null=True, on_delete=models.SET_NULL)
     record_piece = models.ForeignKey(RecordPiece, blank=True, null=True, on_delete=models.SET_NULL)
-    record_date = models.DateField(_('last record date'), auto_now=True)
+    date_added = models.DateTimeField(_('add date'), auto_now_add=True)
+    date_modified = models.DateTimeField(_('modification date'), auto_now=True)
+    date_modified_manual = models.DateTimeField(_('manual modification date'), blank=True, null=True)
 
     class Meta:
         verbose_name = _('activity')