]> git.parisson.com Git - mezzo.git/commitdiff
Add first timesheets models
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Wed, 21 Dec 2016 16:04:09 +0000 (17:04 +0100)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Wed, 21 Dec 2016 16:04:09 +0000 (17:04 +0100)
app/organization/network/models.py
app/organization/projects/admin.py
app/organization/projects/models.py
app/organization/projects/translation.py
docker-compose.yml

index 5e391257968f95d151c518a5e0f6b7e914f5a5ec..fbb20607eab4aff8300d4b8baee3573c1da40c71 100644 (file)
@@ -517,3 +517,37 @@ class PersonActivity(Period):
             return ' - '.join((self.status.name, str(self.date_from), str(self.date_to)))
         else:
             return ' - '.join((str(self.date_from), str(self.date_to)))
+
+
+class PersonActivityHebdoHourVolume(models.Model):
+
+    activity = models.ForeignKey('PersonActivity', verbose_name=_('activity'))
+    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 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'))
+    month = models.IntegerField(_('month'))
+    year = models.IntegerField(_('year'))
+
+    @property
+    def date(self):
+        pass
+
+    class Meta:
+        verbose_name = _('activity timesheet')
+        verbose_name_plural = _('activity timesheets')
+        ordering = ['month',]
+
+
+class PersonActivityVacation(Period):
+
+    activity = models.ForeignKey('PersonActivity', verbose_name=_('activity'))
index 8a7462e90683d142a4bfb5de37e23a3332c32b1a..21b0ba7fc290308b26f4f6fa1b642e579daa452e 100644 (file)
@@ -64,6 +64,11 @@ class ProjectDemoInline(TabularDynamicInlineAdmin):
     model = ProjectDemo
 
 
+class ProjectWorkPackageInline(TabularDynamicInlineAdmin):
+
+    model = ProjectWorkPackage
+
+
 class ProjectDemoAdmin(BaseTranslationModelAdmin):
 
     model = ProjectDemo
@@ -96,6 +101,7 @@ class ProjectAdminDisplayable(DisplayableAdmin):
     fieldsets = deepcopy(ProjectAdmin.fieldsets)
     inlines = [ ProjectBlockInline,
                 ProjectImageInline,
+                ProjectWorkPackageInline,
                 ProjectPlaylistInline,
                 ProjectLinkInline,
                 ProjectFileInline,
index df69a4a305ce91e202c1d745aee9cbf23aab204d..0011e7356fa108e508a5f10d419d8a6f1d55b75c 100644 (file)
@@ -114,6 +114,18 @@ class ProjectProgramType(Named):
         ordering = ['name',]
 
 
+class ProjectWorkPackage(Titled, Period):
+
+    project = models.ForeignKey(Project, verbose_name=_('project'), related_name='work_packages')
+    number = models.IntegerField(_('number'))
+    lead_organization = models.ForeignKey('organization-network.Organization', verbose_name=_('lead organization'), related_name='leader_work_packages', blank=True, null=True)
+
+    class Meta:
+        verbose_name = _('work package')
+        verbose_name_plural = _("work packages")
+        ordering = ['number',]
+
+
 class ProjectPlaylist(PlaylistRelated):
 
     project = models.ForeignKey(Project, verbose_name=_('project'), related_name='playlists', blank=True, null=True, on_delete=models.SET_NULL)
index 1e47bbf1e7e1de97beaf399446c2d0a0aa9e04e5..2b3a87a0de87f1daffd2418dca991e21bcd12e8b 100644 (file)
@@ -90,8 +90,14 @@ class ProjectDemoTranslationOptions(TranslationOptions):
     fields = ('title', 'description',)
 
 
+@register(ProjectWorkPackage)
+class ProjectWorkPackageTranslationOptions(TranslationOptions):
+
+    pass
+
+
 @register(ProjectRelatedTitle)
-class ProjectRelatedTitleranslationOptions(TranslationOptions):
+class ProjectRelatedTitleTranslationOptions(TranslationOptions):
 
     fields = ('title',)
 
index e081a5945c67c08345a775d07215fcd81a744ac7..ff6dd52a05e08f3b697aa8ef8bc608d30d932974 100644 (file)
@@ -64,7 +64,7 @@ app:
 nginx:
   image: nginx
   ports:
-    - "8020:80"
+    - "80:80"
   volumes:
     - ./etc/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
   volumes_from: