From 8558c30305c0cc6adee3eff3b0e88b732b0a1c21 Mon Sep 17 00:00:00 2001
From: Samuel Gaist <samuel.gaist@idiap.ch>
Date: Mon, 20 Apr 2020 11:43:33 +0200
Subject: [PATCH] [common][serializers] Use annotate_full_name method

---
 beat/web/common/serializers.py | 30 +++++++-----------------------
 1 file changed, 7 insertions(+), 23 deletions(-)

diff --git a/beat/web/common/serializers.py b/beat/web/common/serializers.py
index 78b547c47..af1d85d3f 100644
--- a/beat/web/common/serializers.py
+++ b/beat/web/common/serializers.py
@@ -29,13 +29,11 @@
 from django.contrib.auth.models import User
 from django.utils import six
 
-from django.db.models import CharField, Value as V
-from django.db.models.functions import Concat
-
 from rest_framework import serializers
 
 from ..team.models import Team
 from ..common.utils import ensure_html
+from ..common.utils import annotate_full_name
 
 from .models import Shareable, Versionable, Contribution
 from .exceptions import ContributionCreationError
@@ -364,16 +362,9 @@ class ContributionCreationSerializer(serializers.ModelSerializer):
 
         if previous_version is not None:
             try:
-                previous_object = self.Meta.model.objects.annotate(
-                    fullname=Concat(
-                        "author__username",
-                        V("/"),
-                        "name",
-                        V("/"),
-                        "version",
-                        output_field=CharField(),
-                    )
-                ).get(fullname=previous_version)
+                previous_object = annotate_full_name(self.Meta.model).get(
+                    full_name=previous_version
+                )
             except self.Meta.model.DoesNotExist:
                 raise serializers.ValidationError(
                     "{} '{}' not found".format(
@@ -398,16 +389,9 @@ class ContributionCreationSerializer(serializers.ModelSerializer):
                 raise serializers.ValidationError("A fork starts at 1")
 
             try:
-                forked_of_object = self.Meta.model.objects.annotate(
-                    fullname=Concat(
-                        "author__username",
-                        V("/"),
-                        "name",
-                        V("/"),
-                        "version",
-                        output_field=CharField(),
-                    )
-                ).get(fullname=fork_of)
+                forked_of_object = annotate_full_name(self.Meta.model).get(
+                    full_name=fork_of
+                )
             except self.Meta.model.DoesNotExist:
                 raise serializers.ValidationError(
                     "{} '{}' fork origin not found".format(
-- 
GitLab