Skip to content
Snippets Groups Projects
Commit 29771197 authored by Samuel GAIST's avatar Samuel GAIST
Browse files

[common][serializers] Add declaration and version validation

parent fc75fb8b
No related branches found
No related tags found
No related merge requests found
This commit is part of merge request !327. Comments created here will be created in the context of that merge request.
......@@ -25,6 +25,9 @@
# #
###############################################################################
import copy
from django.conf import settings
from django.contrib.auth.models import User
from django.utils import six
......@@ -333,20 +336,30 @@ class ContributionCreationSerializer(serializers.ModelSerializer):
description = description.decode("string_escape")
return description
def validate(self, data):
user = self.context.get("user")
name = self.Meta.model.sanitize_name(data["name"])
data["name"] = name
version = data.get("version")
def validate_declaration(self, declaration):
decl = copy.deepcopy(declaration)
obj = self.Meta.beat_core_class(prefix=settings.PREFIX, data=decl)
if not obj.valid:
raise serializers.ValidationError(obj.errors)
return declaration
def validate_version(self, version):
# If version is not one then it's necessarily a new version
# forks start at one
if version > 1 and "previous_version" not in data:
if version > 1 and "previous_version" not in self.initial_data:
name = self.initial_data["name"]
raise serializers.ValidationError(
"{} {} version {} incomplete history data posted".format(
self.Meta.model.__name__.lower(), name, version
)
)
return version
def validate(self, data):
user = self.context.get("user")
name = self.Meta.model.sanitize_name(data["name"])
data["name"] = name
version = data.get("version")
if self.Meta.model.objects.filter(
author=user, name=name, version=version
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment