src/notes/api/fields/category.py
changeset 133 6f3078f7fd47
child 139 d3738ac909d8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/notes/api/fields/category.py	Thu Aug 03 09:44:37 2017 +0200
@@ -0,0 +1,39 @@
+'''
+field serializing and deserializing metacategorization protocols
+'''
+import logging
+
+from rest_framework import serializers
+
+logger = logging.getLogger(__name__)
+
+class ProtocolField(serializers.Field):
+
+    def get_attribute(self, obj):
+        logger.debug("ProtocolField.get_attribute %r", obj)
+        # We pass the object instance onto `to_representation`,
+        # not just the field attribute.
+        return obj
+
+    def to_representation(self, obj):
+        logger.debug("ProtocolField.to_representation %r", obj)
+        return {
+            "id": "a4977c1f-4752-4aff-b724-eec4033af25c",
+            "owner": "group1",
+            "revision": "1",
+            "description": "Cras rutrum lacinia pretium. Suspendisse justo est, tincidunt sed tellus a, sodales suscipit risus. Curabitur odio tortor, tincidunt sed est nec, ullamcorper sodales velit.",
+            "metacategories": [{
+                "id": "e5712a76-857a-4769-b27e-a3ac3fb38b4d",
+                "revision": 2,
+                "base": "ef14bcce-52ac-44ba-a7d1-f1441bab94de",
+                "name": "référence",
+                "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin massa nibh, hendrerit quis justo vitae, luctus tempor dolor. Nam quis fringilla diam.",
+                "color": "#2cbfff",
+                "has_comment": False
+            }]
+        }
+
+    def to_internal_value(self, data):
+        logger.debug("ProtocolField.to_internal_value %r", data)
+        return "base protocol"
+