# HG changeset patch # User durandn # Date 1457021367 -3600 # Node ID 2ff785d7026c9629252db4126a653e0d6d6b7d46 # Parent 66243fb5e3fc8e27231ed48b1ba11196f5af302e 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 diff -r 66243fb5e3fc -r 2ff785d7026c server/python/django2/Readme.md diff -r 66243fb5e3fc -r 2ff785d7026c server/python/django2/renkanmanager/serializers.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() diff -r 66243fb5e3fc -r 2ff785d7026c server/python/django2/renkanmanager/tests/v1_0/tests_renkan.py --- 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)) ################################################### diff -r 66243fb5e3fc -r 2ff785d7026c server/python/django2/renkanmanager/tests/v1_0/tests_revision.py --- 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", "")) diff -r 66243fb5e3fc -r 2ff785d7026c server/python/django2/renkanmanager/tests/v1_0/tests_workspace.py --- 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)