Merge pull request #146 from taigaio/bug/1466/projects-with-null-total-milestones
Total milestones must never be nullremotes/origin/enhancement/email-actions
commit
09138ee4ff
|
@ -0,0 +1,26 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
def update_total_milestones(apps, schema_editor):
|
||||
Project = apps.get_model("projects", "Project")
|
||||
for project in Project.objects.filter(total_milestones__isnull=True):
|
||||
project.total_milestones = 0
|
||||
project.save()
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('projects', '0005_membership_invitation_extra_text'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(update_total_milestones),
|
||||
migrations.AlterField(
|
||||
model_name='project',
|
||||
name='total_milestones',
|
||||
field=models.IntegerField(verbose_name='total of milestones', default=0),
|
||||
),
|
||||
]
|
|
@ -131,7 +131,7 @@ class Project(ProjectDefaults, TaggedMixin, models.Model):
|
|||
members = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name="projects",
|
||||
through="Membership", verbose_name=_("members"),
|
||||
through_fields=("project", "user"))
|
||||
total_milestones = models.IntegerField(default=0, null=True, blank=True,
|
||||
total_milestones = models.IntegerField(default=0, null=False, blank=False,
|
||||
verbose_name=_("total of milestones"))
|
||||
total_story_points = models.FloatField(default=0, verbose_name=_("total story points"))
|
||||
|
||||
|
|
|
@ -179,6 +179,15 @@ class ProjectSerializer(ModelSerializer):
|
|||
return is_project_owner(self.context["request"].user, obj)
|
||||
return False
|
||||
|
||||
def validate_total_milestones(self, attrs, source):
|
||||
"""
|
||||
Check that total_milestones is not null, it's an optional parameter but
|
||||
not nullable in the model.
|
||||
"""
|
||||
value = attrs[source]
|
||||
if value is None:
|
||||
raise serializers.ValidationError("Total milestones must be major or equal to zero")
|
||||
return attrs
|
||||
|
||||
class ProjectDetailSerializer(ProjectSerializer):
|
||||
roles = serializers.SerializerMethodField("get_roles")
|
||||
|
|
Loading…
Reference in New Issue