Implement model serializers for base API data models
diff --git a/api/serializers.py b/api/serializers.py
index 1049fdb..e09266b 100644
--- a/api/serializers.py
+++ b/api/serializers.py
@@ -13,9 +13,12 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
-#
+# =============================================================================
+"""
+Serializer module
+"""
-from api.models import GenderTypes, GermanDataModel, RiskTypes
+from api.models import ABTest, Endpoint, GenderTypes, GermanDataModel, MLAlgorithm, MLAlgorithmStatus, MLRequest, RiskTypes
from django.contrib.auth.models import User, Group
from rest_framework import serializers
@@ -31,15 +34,54 @@
model = Group
fields = ['url', 'name']
-class GermanDataModelSerializer(serializers.ModelSerializer):
+class GermanDataModelSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = GermanDataModel
- fields = ['id',
- 'age',
- 'sex',
- 'job',
- 'housing',
- 'credit_amount',
- 'duration',
- 'purpose',
- 'risk']
+ fields = ['id', 'age', 'sex', 'job', 'housing',
+ 'credit_amount', 'duration', 'purpose']
+
+class EndpointSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = Endpoint
+ read_only_fields = ["id", "name", "classifier", "created_by", "created_at"]
+ fields = read_only_fields
+
+
+class MLAlgorithmSerializer(serializers.ModelSerializer):
+
+ current_status = serializers.SerializerMethodField(read_only=True)
+
+ def get_current_status(self, mlalgorithm) -> str:
+ return MLAlgorithmStatus.objects.filter(parent_mlalgorithm=mlalgorithm).latest('created_at').status
+
+ class Meta:
+ model = MLAlgorithm
+ read_only_fields = ["id", "name", "description", "code", "version", "created_by",
+ "created_at", "parent_endpoint", "current_status"]
+
+ fields = read_only_fields
+
+class MLAlgorithmStatusSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = MLAlgorithmStatus
+ read_only_fields = ["id", "active"]
+
+ fields = ["id", "active", "status", "created_by",
+ "created_at", "parent_mlalgorithm"]
+
+class MLRequestSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = MLRequest
+ read_only_fields = ["id", "input_data", "full_response", "response",
+ "created_by", "created_at", "parent_mlalgorithm"]
+
+ fields = ["id", "input_data", "full_response", "response",
+ "feedback", "created_at", "parent_mlalgorithm"]
+
+class ABTestSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = ABTest
+ read_only_fields = ["id", "ended_at", "created_at", "summary"]
+
+ fields = ["id", "title", "created_by", "created_at", "ended_at", "summary",
+ "parent_mlalgorithm_1", "parent_mlalgorithm_2"]