diff --git a/taiga/projects/admin.py b/taiga/projects/admin.py index c7d0bc31..42dd550f 100644 --- a/taiga/projects/admin.py +++ b/taiga/projects/admin.py @@ -118,9 +118,10 @@ class ProjectAdmin(admin.ModelAdmin): }), (_("Default values"), { "classes": ("collapse",), - "fields": (("default_points", "default_us_status"), - "default_task_status", - ("default_issue_status", "default_priority", "default_severity", "default_issue_type")), + "fields": (("default_us_status", "default_us_duedate", "default_points"), + ("default_task_status", "default_task_duedate"), + ("default_issue_status", "default_issue_duedate"), + ("default_priority", "default_severity", "default_issue_type")), }), (_("Activity"), { "classes": ("collapse",), diff --git a/taiga/projects/migrations/0062_auto_20180606_1101.py b/taiga/projects/migrations/0062_auto_20180606_1101.py new file mode 100644 index 00000000..20ee151e --- /dev/null +++ b/taiga/projects/migrations/0062_auto_20180606_1101.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.2 on 2018-06-06 11:01 +from __future__ import unicode_literals + +import django.core.serializers.json +from django.db import migrations, models +import django.db.models.deletion +import taiga.base.db.models.fields.json + + +class Migration(migrations.Migration): + + dependencies = [ + ('projects', '0061_auto_20180606_1034'), + ] + + operations = [ + migrations.AddField( + model_name='project', + name='default_issue_duedate', + field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='projects.IssueDueDate', verbose_name='default issue duedate'), + ), + migrations.AddField( + model_name='project', + name='default_task_duedate', + field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='projects.TaskDueDate', verbose_name='default task duedate'), + ), + migrations.AddField( + model_name='projecttemplate', + name='us_duedates', + field=taiga.base.db.models.fields.json.JSONField(blank=True, encoder=django.core.serializers.json.DjangoJSONEncoder, null=True, verbose_name='us statuses'), + ), + ] diff --git a/taiga/projects/migrations/0063_auto_20180606_1111.py b/taiga/projects/migrations/0063_auto_20180606_1111.py new file mode 100644 index 00000000..08ca017a --- /dev/null +++ b/taiga/projects/migrations/0063_auto_20180606_1111.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.2 on 2018-06-06 11:11 +from __future__ import unicode_literals + +import django.core.serializers.json +from django.db import migrations +import taiga.base.db.models.fields.json + + +class Migration(migrations.Migration): + + dependencies = [ + ('projects', '0062_auto_20180606_1101'), + ] + + operations = [ + migrations.AddField( + model_name='projecttemplate', + name='issue_duedates', + field=taiga.base.db.models.fields.json.JSONField(blank=True, encoder=django.core.serializers.json.DjangoJSONEncoder, null=True, verbose_name='issue duedates'), + ), + migrations.AddField( + model_name='projecttemplate', + name='task_duedates', + field=taiga.base.db.models.fields.json.JSONField(blank=True, encoder=django.core.serializers.json.DjangoJSONEncoder, null=True, verbose_name='task duedates'), + ), + migrations.AlterField( + model_name='projecttemplate', + name='us_duedates', + field=taiga.base.db.models.fields.json.JSONField(blank=True, encoder=django.core.serializers.json.DjangoJSONEncoder, null=True, verbose_name='us duedates'), + ), + ] diff --git a/taiga/projects/models.py b/taiga/projects/models.py index afd67c7c..46853b96 100644 --- a/taiga/projects/models.py +++ b/taiga/projects/models.py @@ -129,6 +129,11 @@ class ProjectDefaults(models.Model): on_delete=models.SET_NULL, related_name="+", null=True, blank=True, verbose_name=_("default task status")) + default_task_duedate = models.OneToOneField("projects.TaskDueDate", + on_delete=models.SET_NULL, + related_name="+", + null=True, blank=True, + verbose_name=_("default task duedate")) default_priority = models.OneToOneField("projects.Priority", on_delete=models.SET_NULL, related_name="+", null=True, blank=True, verbose_name=_("default priority")) @@ -143,6 +148,11 @@ class ProjectDefaults(models.Model): on_delete=models.SET_NULL, related_name="+", null=True, blank=True, verbose_name=_("default issue type")) + default_issue_duedate = models.OneToOneField("projects.IssueDueDate", + on_delete=models.SET_NULL, + related_name="+", + null=True, blank=True, + verbose_name=_("default issue duedate")) class Meta: abstract = True @@ -881,10 +891,13 @@ class ProjectTemplate(TaggedMixin, TagsColorsMixin, models.Model): default_options = JSONField(null=True, blank=True, verbose_name=_("default options")) epic_statuses = JSONField(null=True, blank=True, verbose_name=_("epic statuses")) us_statuses = JSONField(null=True, blank=True, verbose_name=_("us statuses")) + us_duedates = JSONField(null=True, blank=True, verbose_name=_("us duedates")) points = JSONField(null=True, blank=True, verbose_name=_("points")) task_statuses = JSONField(null=True, blank=True, verbose_name=_("task statuses")) + task_duedates = JSONField(null=True, blank=True, verbose_name=_("task duedates")) issue_statuses = JSONField(null=True, blank=True, verbose_name=_("issue statuses")) issue_types = JSONField(null=True, blank=True, verbose_name=_("issue types")) + issue_duedates = JSONField(null=True, blank=True, verbose_name=_("issue duedates")) priorities = JSONField(null=True, blank=True, verbose_name=_("priorities")) severities = JSONField(null=True, blank=True, verbose_name=_("severities")) roles = JSONField(null=True, blank=True, verbose_name=_("roles"))