corrected tests and serializer so they can support custom user model, added a readme (to be expanded) with configuration information for the field renkan api will use to render user information
authordurandn
Thu, 03 Mar 2016 17:09:27 +0100
changeset 593 2ff785d7026c
parent 592 66243fb5e3fc
child 594 b45eb8244cd9
corrected tests and serializer so they can support custom user model, added a readme (to be expanded) with configuration information for the field renkan api will use to render user information
server/python/django2/Readme.md
server/python/django2/renkanmanager/serializers.py
server/python/django2/renkanmanager/tests/v1_0/tests_renkan.py
server/python/django2/renkanmanager/tests/v1_0/tests_revision.py
server/python/django2/renkanmanager/tests/v1_0/tests_workspace.py
--- a/server/python/django2/renkanmanager/serializers.py	Tue Mar 01 17:39:39 2016 +0100
+++ b/server/python/django2/renkanmanager/serializers.py	Thu Mar 03 17:09:27 2016 +0100
@@ -1,6 +1,8 @@
 import json
 import uuid
 
+from django.contrib.auth import get_user_model
+from django.conf import settings
 from guardian.shortcuts import assign_perm
 from renkanmanager.models import Renkan, Workspace, Revision
 from rest_framework import serializers
@@ -12,7 +14,7 @@
     workspace_id = serializers.CharField(source="workspace_guid", required=False)
     source_revision_id = serializers.CharField(source="source_revision_guid", required=False)
     revision_count = serializers.ReadOnlyField()
-    created_by = serializers.StringRelatedField(source="creator")
+    created_by = serializers.SlugRelatedField(source="creator", slug_field=settings.RENKAN_USER_DISPLAY_FIELD, read_only=True)
     last_updated_by = serializers.SerializerMethodField("get_current_revision_last_updator")
     title = serializers.CharField(required=False)
     content = serializers.JSONField(required=False)
@@ -23,7 +25,7 @@
     # ADD ERROR HANDLING
     def get_current_revision_last_updator(self, renkan):
         current_revision = Revision.objects.get(revision_guid = renkan.current_revision_guid)
-        return current_revision.last_updated_by.username
+        return getattr(current_revision.last_updated_by, settings.RENKAN_USER_DISPLAY_FIELD)
     
     
     def get_current_revision_modification_date(self, renkan):
@@ -127,9 +129,9 @@
     workspace_id = serializers.SerializerMethodField("get_related_workspace_guid")
     title = serializers.ReadOnlyField()
     content = serializers.JSONField(read_only=True)
-    renkan_created_by = serializers.SerializerMethodField("get_related_project_creator")
-    renkan_creation_date = serializers.SerializerMethodField("get_related_project_creation_date")
-    revision_created_by = serializers.StringRelatedField(source="creator")
+    renkan_created_by = serializers.SerializerMethodField("get_related_renkan_creator")
+    renkan_creation_date = serializers.SerializerMethodField("get_related_renkan_creation_date")
+    revision_created_by = serializers.SlugRelatedField(source="creator", slug_field=settings.RENKAN_USER_DISPLAY_FIELD, read_only=True)
     revision_last_updated_by = serializers.StringRelatedField(source="last_updated_by")
     revision_modification_date = serializers.ReadOnlyField(source="modification_date")
     
@@ -137,18 +139,18 @@
         parent_renkan = Renkan.objects.get(renkan_guid = revision.parent_renkan_guid)
         return parent_renkan.workspace_guid
     
-    def get_related_project_creator(self, revision):
-        parent_project = Renkan.objects.get(renkan_guid = revision.parent_renkan_guid)
-        return parent_project.creator.username
+    def get_related_renkan_creator(self, revision):
+        parent_renkan = Renkan.objects.get(renkan_guid = revision.parent_renkan_guid)
+        return getattr(parent_renkan.creator, settings.RENKAN_USER_DISPLAY_FIELD)
     
-    def get_related_project_creation_date(self, revision):
-        parent_project = Renkan.objects.get(renkan_guid = revision.parent_renkan_guid)
-        return parent_project.creation_date
+    def get_related_renkan_creation_date(self, revision):
+        parent_renkan = Renkan.objects.get(renkan_guid = revision.parent_renkan_guid)
+        return parent_renkan.creation_date
     
 
 class WorkspaceSerializer(serializers.Serializer):
     id = serializers.ReadOnlyField(source="workspace_guid")
-    workspace_created_by = serializers.StringRelatedField(source="creator")
+    workspace_created_by = serializers.SlugRelatedField(source="creator", slug_field=settings.RENKAN_USER_DISPLAY_FIELD, read_only=True)
     creation_date = serializers.ReadOnlyField()
     renkan_count = serializers.ReadOnlyField()
     title = serializers.CharField()
--- a/server/python/django2/renkanmanager/tests/v1_0/tests_renkan.py	Tue Mar 01 17:39:39 2016 +0100
+++ b/server/python/django2/renkanmanager/tests/v1_0/tests_renkan.py	Thu Mar 03 17:09:27 2016 +0100
@@ -13,10 +13,10 @@
     
     def setUp(self):
         User.objects.create_superuser("blop", "blop@blop.com", "blop")
-        self.user = User.objects.get(username="blop")
+        self.user = User.objects.get_by_natural_key(username="blop")
         _ = self.client.login(username="blop", password="blop")
         User.objects.create_user("blip", "blip@blip.com", "blip")
-        self.unauthorized_user = User.objects.get(username="blip")
+        self.unauthorized_user = User.objects.get_by_natural_key(username="blip")
         
         # POSTing test workspace
         post_url = reverse("v1.0:workspace_list")
@@ -83,9 +83,9 @@
         new_renkan_guid = post_response_dict.get("id", "")
         new_renkan = Renkan.objects.get(renkan_guid=new_renkan_guid)
         # GUIDs and username
-        self.assertEqual(self.user.username, post_response_dict.get("created_by", ""))
-        self.assertEqual(self.user.username, post_response_dict.get("last_updated_by", ""))
-        self.assertEqual(self.user.username, new_renkan.creator.username)
+        self.assertEqual(getattr(self.user, User.USERNAME_FIELD), post_response_dict.get("created_by", ""))
+        self.assertEqual(getattr(self.user, User.USERNAME_FIELD), post_response_dict.get("last_updated_by", ""))
+        self.assertEqual(getattr(self.user, User.USERNAME_FIELD), getattr(new_renkan.creator, User.USERNAME_FIELD))
         # Content and title extracted from revision
         self.assertEqual(new_renkan.title, self.first_test_title)
         self.assertEqual(new_renkan.content, self.first_test_content)
@@ -97,8 +97,8 @@
         new_renkan_revision_guid = post_response_dict.get("current_revision_id", "")
         new_renkan_revision = Revision.objects.get(revision_guid = new_renkan_revision_guid)
         # GUIDs and username
-        self.assertEqual(self.user.username, new_renkan_revision.creator.username)
-        self.assertEqual(self.user.username, new_renkan_revision.last_updated_by.username)
+        self.assertEqual(getattr(self.user, User.USERNAME_FIELD), getattr(new_renkan_revision.creator, User.USERNAME_FIELD))
+        self.assertEqual(getattr(self.user, User.USERNAME_FIELD), getattr(new_renkan_revision.last_updated_by, User.USERNAME_FIELD))
         # Title and content
         #    in the response
         self.assertEqual(post_response_dict.get("title", ""), self.first_test_title)
@@ -129,9 +129,9 @@
         # GUIDs and username
         self.assertEqual(self.test_workspace_guid, post_response_dict.get("workspace_id", ""))
         self.assertEqual(self.test_workspace_guid, new_renkan.workspace_guid)
-        self.assertEqual(self.user.username, post_response_dict.get("created_by", ""))
-        self.assertEqual(self.user.username, post_response_dict.get("last_updated_by", ""))
-        self.assertEqual(self.user.username, new_renkan.creator.username)
+        self.assertEqual(getattr(self.user, User.USERNAME_FIELD), post_response_dict.get("created_by", ""))
+        self.assertEqual(getattr(self.user, User.USERNAME_FIELD), post_response_dict.get("last_updated_by", ""))
+        self.assertEqual(getattr(self.user, User.USERNAME_FIELD), getattr(new_renkan.creator, User.USERNAME_FIELD))
         # Content and title extracted from revision
         self.assertEqual(new_renkan.title, self.second_test_title)
         self.assertEqual(new_renkan.content, self.second_test_content)
@@ -195,8 +195,8 @@
         get_response_dict = json.loads(get_response.content.decode())
         self.assertEqual(new_renkan_guid, get_response_dict.get("id", ""))
         self.assertEqual(new_revision_guid, get_response_dict.get("current_revision_id", ""))
-        self.assertEqual(self.user.username, get_response_dict.get("created_by", ""))
-        self.assertEqual(self.user.username, get_response_dict.get("last_updated_by", ""))
+        self.assertEqual(getattr(self.user, User.USERNAME_FIELD), get_response_dict.get("created_by", ""))
+        self.assertEqual(getattr(self.user, User.USERNAME_FIELD), get_response_dict.get("last_updated_by", ""))
         
         ###################################################
         # GETting with wrong guid
@@ -406,8 +406,8 @@
         self.assertEqual(first_copy_response_dict.get("source_revision_id"), source_revision_guid)
         self.assertEqual(first_copy_response_dict.get("title", ""), "new_title_copy_1")
         self.assertEqual(first_copy_response_dict.get("content", ""), self.first_test_content)
-        self.assertEqual(first_copy_response_dict.get("created_by", ""), self.user.username)
-        self.assertEqual(first_copy_response_dict.get("last_updated_by", ""), self.user.username)
+        self.assertEqual(first_copy_response_dict.get("created_by", ""), getattr(self.user, User.USERNAME_FIELD))
+        self.assertEqual(first_copy_response_dict.get("last_updated_by", ""), getattr(self.user, User.USERNAME_FIELD))
         #     in the database
         first_copy = Renkan.objects.get(renkan_guid=first_copy_response_dict.get("id", ""))
         first_copy_revision = Revision.objects.get(revision_guid=first_copy_response_dict.get("current_revision_id", ""))
@@ -415,9 +415,9 @@
         self.assertEqual(first_copy.content, self.first_test_content)
         self.assertEqual(first_copy_revision.title, "new_title_copy_1")
         self.assertEqual(first_copy_revision.content, self.first_test_content)
-        self.assertEqual(first_copy.creator.username, self.user.username)
-        self.assertEqual(first_copy_revision.creator.username, self.user.username)
-        self.assertEqual(first_copy_revision.last_updated_by.username, self.user.username)
+        self.assertEqual(getattr(first_copy.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD))
+        self.assertEqual(getattr(first_copy_revision.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD))
+        self.assertEqual(getattr(first_copy_revision.last_updated_by, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD))
         
         ###################################################
         # POSTing copy with source_renkan_guid in data
@@ -435,8 +435,8 @@
         self.assertEqual(second_copy_response_dict.get("source_revision_id"), source_revision_guid)
         self.assertEqual(second_copy_response_dict.get("title", ""), "new_title_copy_2")
         self.assertEqual(second_copy_response_dict.get("content", ""), self.first_test_content)
-        self.assertEqual(second_copy_response_dict.get("created_by", ""), self.user.username)
-        self.assertEqual(second_copy_response_dict.get("last_updated_by", ""), self.user.username)
+        self.assertEqual(second_copy_response_dict.get("created_by", ""), getattr(self.user, User.USERNAME_FIELD))
+        self.assertEqual(second_copy_response_dict.get("last_updated_by", ""), getattr(self.user, User.USERNAME_FIELD))
         #     in the database
         second_copy = Renkan.objects.get(renkan_guid=second_copy_response_dict.get("id", ""))
         second_copy_revision = Revision.objects.get(revision_guid=second_copy_response_dict.get("current_revision_id", ""))
@@ -444,9 +444,9 @@
         self.assertEqual(second_copy.content, self.first_test_content)
         self.assertEqual(second_copy_revision.title, "new_title_copy_2")
         self.assertEqual(second_copy_revision.content, self.first_test_content)
-        self.assertEqual(second_copy.creator.username, self.user.username)
-        self.assertEqual(second_copy_revision.creator.username, self.user.username)
-        self.assertEqual(second_copy_revision.last_updated_by.username, self.user.username)
+        self.assertEqual(getattr(second_copy.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD))
+        self.assertEqual(getattr(second_copy_revision.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD))
+        self.assertEqual(getattr(second_copy_revision.last_updated_by, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD))
         
         ###################################################
         # POSTing copy with query arg for REVISION guid
@@ -464,8 +464,8 @@
         self.assertEqual(third_copy_response_dict.get("source_revision_id"), source_revision_guid)
         self.assertEqual(third_copy_response_dict.get("title", ""), "new_title_copy_3")
         self.assertEqual(third_copy_response_dict.get("content", ""), self.first_test_content)
-        self.assertEqual(third_copy_response_dict.get("created_by", ""), self.user.username)
-        self.assertEqual(third_copy_response_dict.get("last_updated_by", ""), self.user.username)
+        self.assertEqual(third_copy_response_dict.get("created_by", ""), getattr(self.user, User.USERNAME_FIELD))
+        self.assertEqual(third_copy_response_dict.get("last_updated_by", ""), getattr(self.user, User.USERNAME_FIELD))
         #     in the database
         third_copy = Renkan.objects.get(renkan_guid=third_copy_response_dict.get("id", ""))
         third_copy_revision = Revision.objects.get(revision_guid=third_copy_response_dict.get("current_revision_id", ""))
@@ -473,9 +473,9 @@
         self.assertEqual(third_copy.content, self.first_test_content)
         self.assertEqual(third_copy_revision.title, "new_title_copy_3")
         self.assertEqual(third_copy_revision.content, self.first_test_content)
-        self.assertEqual(third_copy.creator.username, self.user.username)
-        self.assertEqual(third_copy_revision.creator.username, self.user.username)
-        self.assertEqual(third_copy_revision.last_updated_by.username, self.user.username)
+        self.assertEqual(getattr(third_copy.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD))
+        self.assertEqual(getattr(third_copy_revision.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD))
+        self.assertEqual(getattr(third_copy_revision.last_updated_by, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD))
         
         ###################################################
         # POSTing copy with source_revision_guid in data
@@ -493,8 +493,8 @@
         self.assertEqual(fourth_copy_response_dict.get("source_revision_id"), source_revision_guid)
         self.assertEqual(fourth_copy_response_dict.get("title", ""), self.first_test_title)
         self.assertEqual(fourth_copy_response_dict.get("content", ""), self.first_test_content)
-        self.assertEqual(fourth_copy_response_dict.get("created_by", ""), self.user.username)
-        self.assertEqual(fourth_copy_response_dict.get("last_updated_by", ""), self.user.username)
+        self.assertEqual(fourth_copy_response_dict.get("created_by", ""), getattr(self.user, User.USERNAME_FIELD))
+        self.assertEqual(fourth_copy_response_dict.get("last_updated_by", ""), getattr(self.user, User.USERNAME_FIELD))
         #     in the database
         fourth_copy = Renkan.objects.get(renkan_guid=fourth_copy_response_dict.get("id", ""))
         fourth_copy_revision = Revision.objects.get(revision_guid=fourth_copy_response_dict.get("current_revision_id", ""))
@@ -502,9 +502,9 @@
         self.assertEqual(fourth_copy.content, self.first_test_content)
         self.assertEqual(fourth_copy_revision.title, self.first_test_title)
         self.assertEqual(fourth_copy_revision.content, self.first_test_content)
-        self.assertEqual(fourth_copy.creator.username, self.user.username)
-        self.assertEqual(fourth_copy_revision.creator.username, self.user.username)
-        self.assertEqual(fourth_copy_revision.last_updated_by.username, self.user.username)
+        self.assertEqual(getattr(fourth_copy.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD))
+        self.assertEqual(getattr(fourth_copy_revision.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD))
+        self.assertEqual(getattr(fourth_copy_revision.last_updated_by, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD))
         
         
         ###################################################
--- a/server/python/django2/renkanmanager/tests/v1_0/tests_revision.py	Tue Mar 01 17:39:39 2016 +0100
+++ b/server/python/django2/renkanmanager/tests/v1_0/tests_revision.py	Thu Mar 03 17:09:27 2016 +0100
@@ -13,10 +13,10 @@
     
     def setUp(self):
         User.objects.create_superuser("blop", "blop@blop.com", "blop")
-        self.user = User.objects.get(username="blop")
+        self.user = User.objects.get_by_natural_key(username="blop")
         _ = self.client.login(username="blop", password="blop")
         User.objects.create_user("blip", "blip@blip.com", "blip")
-        self.unauthorized_user = User.objects.get(username="blip")
+        self.unauthorized_user = User.objects.get_by_natural_key(username="blip")
         
         ###################################################
         # POSTing new Renkan
@@ -56,8 +56,8 @@
         get_response_dict = json.loads(get_response.content.decode()) 
         self.assertEqual(get_response_dict.get("id", ""), self.test_initial_revision_guid)
         self.assertEqual(get_response_dict.get("parent_renkan_id", ""), self.test_renkan_guid)
-        self.assertEqual(get_response_dict.get("revision_created_by", ""), self.user.username)
-        self.assertEqual(get_response_dict.get("revision_last_updated_by", ""), self.user.username)
+        self.assertEqual(get_response_dict.get("revision_created_by", ""), getattr(self.user, User.USERNAME_FIELD))
+        self.assertEqual(get_response_dict.get("revision_last_updated_by", ""), getattr(self.user, User.USERNAME_FIELD))
         self.assertEqual(get_response_dict.get("title", ""), self.test_data.get("title", ""))
         self.assertEqual(get_response_dict.get("content", ""), self.test_data.get("content", ""))
         
--- a/server/python/django2/renkanmanager/tests/v1_0/tests_workspace.py	Tue Mar 01 17:39:39 2016 +0100
+++ b/server/python/django2/renkanmanager/tests/v1_0/tests_workspace.py	Thu Mar 03 17:09:27 2016 +0100
@@ -11,10 +11,10 @@
     
     def setUp(self):
         User.objects.create_superuser("blop", "blop@blop.com", "blop")
-        self.user = User.objects.get(username="blop")
+        self.user = User.objects.get_by_natural_key("blop")
         _ = self.client.login(username="blop", password="blop")
         User.objects.create_user("blip", "blip@blip.com", "blip")
-        self.unauthorized_user = User.objects.get(username="blip")
+        self.unauthorized_user = User.objects.get_by_natural_key("blip")
     
     def test_post_workspace(self):
         
@@ -31,12 +31,12 @@
         
         # Checking data
         #    in the response
-        self.assertEqual(post_response_dict.get("workspace_created_by"), self.user.username)
+        self.assertEqual(post_response_dict.get("workspace_created_by"), getattr(self.user, User.USERNAME_FIELD))
         self.assertEqual(post_response_dict.get("title"), test_title)
         #    in the database
         created_workspace_guid = post_response_dict.get("id")
         created_workspace = Workspace.objects.get(workspace_guid=created_workspace_guid)
-        self.assertEqual(created_workspace.creator.username, self.user.username)
+        self.assertEqual(getattr(created_workspace.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD))
         self.assertEqual(created_workspace.title, test_title)
         
         # Checking permission
@@ -117,7 +117,7 @@
         get_response_dict = json.loads(get_response.content.decode())
         self.assertEqual(test_workspace_guid, get_response_dict.get("id", ""))
         self.assertEqual(test_title, get_response_dict.get("title", ""))
-        self.assertEqual(self.user.username, get_response_dict.get("workspace_created_by", ""))
+        self.assertEqual(getattr(self.user, User.USERNAME_FIELD), get_response_dict.get("workspace_created_by", ""))
         self.assertEqual(2, get_response_dict.get("renkan_count"))
         
         ###################################################
@@ -163,13 +163,13 @@
         
         # Checking data
         #    in the response
-        self.assertEqual(put_response_dict.get("workspace_created_by"), self.user.username)
+        self.assertEqual(put_response_dict.get("workspace_created_by"), getattr(self.user, User.USERNAME_FIELD))
         self.assertEqual(put_response_dict.get("title"), edited_title)
         self.assertEqual(put_response_dict.get("renkan_count"), 0)
         #    in the database
         edited_workspace_guid = put_response_dict.get("id")
         edited_workspace = Workspace.objects.get(workspace_guid=edited_workspace_guid)
-        self.assertEqual(edited_workspace.creator.username, self.user.username)
+        self.assertEqual(getattr(edited_workspace.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD))
         self.assertEqual(edited_workspace.title, edited_title)
         self.assertEqual(edited_workspace.renkan_count, 0)