Migrating tagging validators
parent
7d2b6c34ce
commit
cbec0caca2
|
@ -21,7 +21,7 @@ from taiga.base.decorators import detail_route
|
||||||
from taiga.base.utils.collections import OrderedSet
|
from taiga.base.utils.collections import OrderedSet
|
||||||
|
|
||||||
from . import services
|
from . import services
|
||||||
from . import serializers
|
from . import validators
|
||||||
|
|
||||||
|
|
||||||
class TagsColorsResourceMixin:
|
class TagsColorsResourceMixin:
|
||||||
|
@ -38,27 +38,26 @@ class TagsColorsResourceMixin:
|
||||||
self.check_permissions(request, "create_tag", project)
|
self.check_permissions(request, "create_tag", project)
|
||||||
self._raise_if_blocked(project)
|
self._raise_if_blocked(project)
|
||||||
|
|
||||||
serializer = serializers.CreateTagSerializer(data=request.DATA, project=project)
|
validator = validators.CreateTagValidator(data=request.DATA, project=project)
|
||||||
if not serializer.is_valid():
|
if not validator.is_valid():
|
||||||
return response.BadRequest(serializer.errors)
|
return response.BadRequest(validator.errors)
|
||||||
|
|
||||||
data = serializer.data
|
data = validator.data
|
||||||
services.create_tag(project, data.get("tag"), data.get("color"))
|
services.create_tag(project, data.get("tag"), data.get("color"))
|
||||||
|
|
||||||
return response.Ok()
|
return response.Ok()
|
||||||
|
|
||||||
|
|
||||||
@detail_route(methods=["POST"])
|
@detail_route(methods=["POST"])
|
||||||
def edit_tag(self, request, pk=None):
|
def edit_tag(self, request, pk=None):
|
||||||
project = self.get_object()
|
project = self.get_object()
|
||||||
self.check_permissions(request, "edit_tag", project)
|
self.check_permissions(request, "edit_tag", project)
|
||||||
self._raise_if_blocked(project)
|
self._raise_if_blocked(project)
|
||||||
|
|
||||||
serializer = serializers.EditTagTagSerializer(data=request.DATA, project=project)
|
validator = validators.EditTagTagValidator(data=request.DATA, project=project)
|
||||||
if not serializer.is_valid():
|
if not validator.is_valid():
|
||||||
return response.BadRequest(serializer.errors)
|
return response.BadRequest(validator.errors)
|
||||||
|
|
||||||
data = serializer.data
|
data = validator.data
|
||||||
services.edit_tag(project,
|
services.edit_tag(project,
|
||||||
data.get("from_tag"),
|
data.get("from_tag"),
|
||||||
to_tag=data.get("to_tag", None),
|
to_tag=data.get("to_tag", None),
|
||||||
|
@ -66,18 +65,17 @@ class TagsColorsResourceMixin:
|
||||||
|
|
||||||
return response.Ok()
|
return response.Ok()
|
||||||
|
|
||||||
|
|
||||||
@detail_route(methods=["POST"])
|
@detail_route(methods=["POST"])
|
||||||
def delete_tag(self, request, pk=None):
|
def delete_tag(self, request, pk=None):
|
||||||
project = self.get_object()
|
project = self.get_object()
|
||||||
self.check_permissions(request, "delete_tag", project)
|
self.check_permissions(request, "delete_tag", project)
|
||||||
self._raise_if_blocked(project)
|
self._raise_if_blocked(project)
|
||||||
|
|
||||||
serializer = serializers.DeleteTagSerializer(data=request.DATA, project=project)
|
validator = validators.DeleteTagValidator(data=request.DATA, project=project)
|
||||||
if not serializer.is_valid():
|
if not validator.is_valid():
|
||||||
return response.BadRequest(serializer.errors)
|
return response.BadRequest(validator.errors)
|
||||||
|
|
||||||
data = serializer.data
|
data = validator.data
|
||||||
services.delete_tag(project, data.get("tag"))
|
services.delete_tag(project, data.get("tag"))
|
||||||
|
|
||||||
return response.Ok()
|
return response.Ok()
|
||||||
|
@ -88,11 +86,11 @@ class TagsColorsResourceMixin:
|
||||||
self.check_permissions(request, "mix_tags", project)
|
self.check_permissions(request, "mix_tags", project)
|
||||||
self._raise_if_blocked(project)
|
self._raise_if_blocked(project)
|
||||||
|
|
||||||
serializer = serializers.MixTagsSerializer(data=request.DATA, project=project)
|
validator = validators.MixTagsValidator(data=request.DATA, project=project)
|
||||||
if not serializer.is_valid():
|
if not validator.is_valid():
|
||||||
return response.BadRequest(serializer.errors)
|
return response.BadRequest(validator.errors)
|
||||||
|
|
||||||
data = serializer.data
|
data = validator.data
|
||||||
services.mix_tags(project, data.get("from_tags"), data.get("to_tag"))
|
services.mix_tags(project, data.get("from_tags"), data.get("to_tag"))
|
||||||
|
|
||||||
return response.Ok()
|
return response.Ok()
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
|
|
||||||
from taiga.base.api import serializers
|
from taiga.base.api import serializers
|
||||||
|
from taiga.base.api import validators
|
||||||
|
|
||||||
from . import services
|
from . import services
|
||||||
from . import fields
|
from . import fields
|
||||||
|
@ -26,7 +27,7 @@ from . import fields
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
|
||||||
class ProjectTagSerializer(serializers.Serializer):
|
class ProjectTagValidator(validators.Validator):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
# Don't pass the extra project arg
|
# Don't pass the extra project arg
|
||||||
self.project = kwargs.pop("project")
|
self.project = kwargs.pop("project")
|
||||||
|
@ -35,26 +36,26 @@ class ProjectTagSerializer(serializers.Serializer):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class CreateTagSerializer(ProjectTagSerializer):
|
class CreateTagValidator(ProjectTagValidator):
|
||||||
tag = serializers.CharField()
|
tag = serializers.CharField()
|
||||||
color = serializers.CharField(required=False)
|
color = serializers.CharField(required=False)
|
||||||
|
|
||||||
def validate_tag(self, attrs, source):
|
def validate_tag(self, attrs, source):
|
||||||
tag = attrs.get(source, None)
|
tag = attrs.get(source, None)
|
||||||
if services.tag_exist_for_project_elements(self.project, tag):
|
if services.tag_exist_for_project_elements(self.project, tag):
|
||||||
raise serializers.ValidationError(_("The tag exists."))
|
raise validators.ValidationError(_("The tag exists."))
|
||||||
|
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
def validate_color(self, attrs, source):
|
def validate_color(self, attrs, source):
|
||||||
color = attrs.get(source, None)
|
color = attrs.get(source, None)
|
||||||
if not re.match('^\#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$', color):
|
if not re.match('^\#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$', color):
|
||||||
raise serializers.ValidationError(_("The color is not a valid HEX color."))
|
raise validators.ValidationError(_("The color is not a valid HEX color."))
|
||||||
|
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
|
|
||||||
class EditTagTagSerializer(ProjectTagSerializer):
|
class EditTagTagValidator(ProjectTagValidator):
|
||||||
from_tag = serializers.CharField()
|
from_tag = serializers.CharField()
|
||||||
to_tag = serializers.CharField(required=False)
|
to_tag = serializers.CharField(required=False)
|
||||||
color = serializers.CharField(required=False)
|
color = serializers.CharField(required=False)
|
||||||
|
@ -62,37 +63,37 @@ class EditTagTagSerializer(ProjectTagSerializer):
|
||||||
def validate_from_tag(self, attrs, source):
|
def validate_from_tag(self, attrs, source):
|
||||||
tag = attrs.get(source, None)
|
tag = attrs.get(source, None)
|
||||||
if not services.tag_exist_for_project_elements(self.project, tag):
|
if not services.tag_exist_for_project_elements(self.project, tag):
|
||||||
raise serializers.ValidationError(_("The tag doesn't exist."))
|
raise validators.ValidationError(_("The tag doesn't exist."))
|
||||||
|
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
def validate_to_tag(self, attrs, source):
|
def validate_to_tag(self, attrs, source):
|
||||||
tag = attrs.get(source, None)
|
tag = attrs.get(source, None)
|
||||||
if services.tag_exist_for_project_elements(self.project, tag):
|
if services.tag_exist_for_project_elements(self.project, tag):
|
||||||
raise serializers.ValidationError(_("The tag exists yet"))
|
raise validators.ValidationError(_("The tag exists yet"))
|
||||||
|
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
def validate_color(self, attrs, source):
|
def validate_color(self, attrs, source):
|
||||||
color = attrs.get(source, None)
|
color = attrs.get(source, None)
|
||||||
if not re.match('^\#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$', color):
|
if not re.match('^\#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$', color):
|
||||||
raise serializers.ValidationError(_("The color is not a valid HEX color."))
|
raise validators.ValidationError(_("The color is not a valid HEX color."))
|
||||||
|
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
|
|
||||||
class DeleteTagSerializer(ProjectTagSerializer):
|
class DeleteTagValidator(ProjectTagValidator):
|
||||||
tag = serializers.CharField()
|
tag = serializers.CharField()
|
||||||
|
|
||||||
def validate_tag(self, attrs, source):
|
def validate_tag(self, attrs, source):
|
||||||
tag = attrs.get(source, None)
|
tag = attrs.get(source, None)
|
||||||
if not services.tag_exist_for_project_elements(self.project, tag):
|
if not services.tag_exist_for_project_elements(self.project, tag):
|
||||||
raise serializers.ValidationError(_("The tag doesn't exist."))
|
raise validators.ValidationError(_("The tag doesn't exist."))
|
||||||
|
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
|
|
||||||
class MixTagsSerializer(ProjectTagSerializer):
|
class MixTagsValidator(ProjectTagValidator):
|
||||||
from_tags = fields.TagsField()
|
from_tags = fields.TagsField()
|
||||||
to_tag = serializers.CharField()
|
to_tag = serializers.CharField()
|
||||||
|
|
||||||
|
@ -100,13 +101,13 @@ class MixTagsSerializer(ProjectTagSerializer):
|
||||||
tags = attrs.get(source, None)
|
tags = attrs.get(source, None)
|
||||||
for tag in tags:
|
for tag in tags:
|
||||||
if not services.tag_exist_for_project_elements(self.project, tag):
|
if not services.tag_exist_for_project_elements(self.project, tag):
|
||||||
raise serializers.ValidationError(_("The tag doesn't exist."))
|
raise validators.ValidationError(_("The tag doesn't exist."))
|
||||||
|
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
def validate_to_tag(self, attrs, source):
|
def validate_to_tag(self, attrs, source):
|
||||||
tag = attrs.get(source, None)
|
tag = attrs.get(source, None)
|
||||||
if not services.tag_exist_for_project_elements(self.project, tag):
|
if not services.tag_exist_for_project_elements(self.project, tag):
|
||||||
raise serializers.ValidationError(_("The tag doesn't exist."))
|
raise validators.ValidationError(_("The tag doesn't exist."))
|
||||||
|
|
||||||
return attrs
|
return attrs
|
Loading…
Reference in New Issue