Total milestones must never be null

remotes/origin/enhancement/email-actions
Alejandro Alonso 2014-10-29 12:55:17 +01:00 committed by David Barragán Merino
parent a2203d0bf8
commit 9016e48ff6
3 changed files with 36 additions and 1 deletions

View File

@ -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),
),
]

View File

@ -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"))

View File

@ -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")