From 6b2bc7115c81f4b30ae0149600ce5b987f04c456 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Wed, 13 Nov 2013 19:32:01 +0100 Subject: [PATCH] Create the initial serializer --- greenmine/base/serializers.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/greenmine/base/serializers.py b/greenmine/base/serializers.py index 975c208f..76209f58 100644 --- a/greenmine/base/serializers.py +++ b/greenmine/base/serializers.py @@ -2,6 +2,8 @@ from rest_framework import serializers +from reversion.models import Version + class PickleField(serializers.WritableField): """ @@ -12,3 +14,36 @@ class PickleField(serializers.WritableField): def from_native(self, data): return data + + +class VersionSerializer(serializers.ModelSerializer): + created_date = serializers.SerializerMethodField("get_created_date") + content_type = serializers.SerializerMethodField("get_content_type") + object_id = serializers.SerializerMethodField("get_object_id") + user = serializers.SerializerMethodField("get_user") + comment = serializers.SerializerMethodField("get_comment") + fields = serializers.SerializerMethodField("get_object_fields") + + class Meta: + model = Version + fields = ("id", "created_date", "content_type", "object_id", "user", "comment", + "fields") + read_only = fields + + def get_created_date(self, obj): + return obj.revision.date_created + + def get_content_type(self, obj): + return obj.content_type.model + + def get_object_id(self, obj): + return obj.object_id_int + + def get_object_fields(self, obj): + return obj.field_dict + + def get_user(self, obj): + return obj.revision.user.id if obj.revision.user else None + + def get_comment(self, obj): + return obj.revision.comment