Merge branch 'bug/967/error-500-when-creating-milestones'. 365 days

committing   👏 👏 👯 👯 ✌️
remotes/origin/enhancement/email-actions
David Barragán Merino 2014-10-20 00:51:51 +02:00
commit 8614a49d0d
3 changed files with 36 additions and 1 deletions

View File

@ -296,6 +296,23 @@ class MilestoneExportSerializer(serializers.ModelSerializer):
watchers = UserRelatedField(many=True, required=False)
modified_date = serializers.DateTimeField(required=False)
def __init__(self, *args, **kwargs):
project = kwargs.pop('project', None)
super(MilestoneExportSerializer, self).__init__(*args, **kwargs)
if project:
self.project = project
def validate_name(self, attrs, source):
"""
Check the milestone name is not duplicated in the project
"""
name = attrs[source]
qs = self.project.milestones.filter(name=name)
if qs.exists():
raise serializers.ValidationError("Name duplicated for the project")
return attrs
class Meta:
model = milestones_models.Milestone
exclude = ('id', 'project')

View File

@ -185,7 +185,7 @@ def store_task(project, task):
def store_milestone(project, milestone):
serialized = serializers.MilestoneExportSerializer(data=milestone)
serialized = serializers.MilestoneExportSerializer(data=milestone, project=project)
if serialized.is_valid():
serialized.object.project = project
serialized.object._importing = True

View File

@ -637,3 +637,21 @@ def test_valid_milestone_import(client):
response = client.post(url, json.dumps(data), content_type="application/json")
assert response.status_code == 201
response_data = json.loads(response.content.decode("utf-8"))
def test_milestone_import_duplicated_milestone(client):
user = f.UserFactory.create()
project = f.ProjectFactory.create(owner=user)
client.login(user)
url = reverse("importer-milestone", args=[project.pk])
data = {
"name": "Imported milestone",
"estimated_start": "2014-10-10",
"estimated_finish": "2014-10-20",
}
# We create twice the same milestone
response = client.post(url, json.dumps(data), content_type="application/json")
response = client.post(url, json.dumps(data), content_type="application/json")
assert response.status_code == 400
response_data = json.loads(response.content.decode("utf-8"))
assert response_data["milestones"][0]["name"][0] == "Name duplicated for the project"