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

[common][serializers] Add declaration and version validation

parent 61213a55
No related branches found
No related tags found
1 merge request!327Refactor update creation api
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 @@ ...@@ -25,6 +25,9 @@
# # # #
############################################################################### ###############################################################################
import copy
from django.conf import settings
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.utils import six from django.utils import six
...@@ -333,20 +336,30 @@ class ContributionCreationSerializer(serializers.ModelSerializer): ...@@ -333,20 +336,30 @@ class ContributionCreationSerializer(serializers.ModelSerializer):
description = description.decode("string_escape") description = description.decode("string_escape")
return description return description
def validate(self, data): def validate_declaration(self, declaration):
user = self.context.get("user") decl = copy.deepcopy(declaration)
name = self.Meta.model.sanitize_name(data["name"]) obj = self.Meta.beat_core_class(prefix=settings.PREFIX, data=decl)
data["name"] = name if not obj.valid:
version = data.get("version") raise serializers.ValidationError(obj.errors)
return declaration
def validate_version(self, version):
# If version is not one then it's necessarily a new version # If version is not one then it's necessarily a new version
# forks start at one # 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( raise serializers.ValidationError(
"{} {} version {} incomplete history data posted".format( "{} {} version {} incomplete history data posted".format(
self.Meta.model.__name__.lower(), name, version 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( if self.Meta.model.objects.filter(
author=user, name=name, version=version 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