From b84bf7b24d5e8916ce941de19c5b7cb563d63316 Mon Sep 17 00:00:00 2001 From: Alejandro Franco Date: Tue, 16 May 2023 12:45:53 -0600 Subject: [PATCH] Upgrade CC-Dj 2023-05-16 C / Custom User --- README.md | 4 ---- cookiecutter.json | 1 - docs/project-generation-options.rst | 7 ------- hooks/post_gen_project.py | 3 --- tests/test_cookiecutter_generation.py | 2 -- .../{{cookiecutter.project_slug}}/users/api/views.py | 5 +++-- .../{{cookiecutter.project_slug}}/users/tests/factories.py | 3 ++- .../users/tests/test_drf_views.py | 2 +- .../users/tests/test_forms.py | 2 ++ .../{{cookiecutter.project_slug}}/users/tests/test_urls.py | 2 +- 10 files changed, 9 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 161b5ed0a..11d95bf74 100644 --- a/README.md +++ b/README.md @@ -119,10 +119,6 @@ Answer the prompts with your own desired [options](http://cookiecutter-django.re 4 - Apache Software License 2.0 5 - Not open source Choose from 1, 2, 3, 4, 5 [1]: 1 - Select username_type: # NOT USED FOR THIS TEMPLATE - 1 - username - 2 - email - Choose from 1, 2 [1]: 1 timezone [UTC]: America/Los_Angeles windows [n]: n use_pycharm [n]: y diff --git a/cookiecutter.json b/cookiecutter.json index 7fd24d7af..5b13854ab 100644 --- a/cookiecutter.json +++ b/cookiecutter.json @@ -13,7 +13,6 @@ "Apache Software License 2.0", "Not open source" ], - "username_type": ["email"], "timezone": "UTC", "windows": "n", "use_pycharm": "n", diff --git a/docs/project-generation-options.rst b/docs/project-generation-options.rst index a1d788173..9b379f12c 100644 --- a/docs/project-generation-options.rst +++ b/docs/project-generation-options.rst @@ -24,13 +24,6 @@ author_name: email: The email address you want to identify yourself in the project. -username_type: - The type of username you want to use in the project. This can be either - ``username`` or ``email``. If you choose ``username``, the ``email`` field - will be included. If you choose ``email``, the ``username`` field will be - excluded. It is best practice to always include an email field, so there is - no option for having just the ``username`` field. - domain_name: The domain name you plan to use for your project once it goes live. Note that it can be safely changed later on whenever you need to. diff --git a/hooks/post_gen_project.py b/hooks/post_gen_project.py index 39af59d33..2363d50fc 100644 --- a/hooks/post_gen_project.py +++ b/hooks/post_gen_project.py @@ -426,9 +426,6 @@ def main(): if "{{ cookiecutter.open_source_license}}" != "GPLv3": remove_gplv3_files() - # if "{{ cookiecutter.username_type }}" == "username": - # remove_custom_user_manager_files() - if "{{ cookiecutter.use_pycharm }}".lower() == "n": remove_pycharm_files() diff --git a/tests/test_cookiecutter_generation.py b/tests/test_cookiecutter_generation.py index 778e3411f..acb6597c3 100755 --- a/tests/test_cookiecutter_generation.py +++ b/tests/test_cookiecutter_generation.py @@ -43,8 +43,6 @@ def context(): SUPPORTED_COMBINATIONS = [ - {"username_type": "username"}, - {"username_type": "email"}, {"open_source_license": "MIT"}, {"open_source_license": "BSD"}, {"open_source_license": "GPLv3"}, diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/api/views.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/api/views.py index bce2d5bb5..f4b29e78a 100644 --- a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/api/views.py +++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/api/views.py @@ -1,3 +1,4 @@ +import uuid from django.contrib.auth import get_user_model from rest_framework import status from rest_framework.decorators import action @@ -16,8 +17,8 @@ class UserViewSet(RetrieveModelMixin, ListModelMixin, UpdateModelMixin, GenericV lookup_field = "uuid" def get_queryset(self, *args, **kwargs): - assert isinstance(self.request.user.id, int) - return self.queryset.filter(id=self.request.user.id) + assert isinstance(self.request.user.uuid, uuid.UUID) + return self.queryset.filter(uuid=self.request.user.uuid) @action(detail=False) def me(self, request): diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/factories.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/factories.py index caa14cf40..bfe524140 100644 --- a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/factories.py +++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/factories.py @@ -8,7 +8,8 @@ from factory.django import DjangoModelFactory class UserFactory(DjangoModelFactory): email = Faker("email") - name = Faker("name") + first_name = Faker("name") + last_name = Faker("name") @post_generation def password(self, create: bool, extracted: Sequence[Any], **kwargs): diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py index e6f07ccb1..3757b18bf 100644 --- a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py +++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py @@ -30,6 +30,6 @@ class TestUserViewSet: assert response.data == { "email": user.uuid, - "name": user.first_name, + "first_name": user.first_name, "url": f"http://testserver/api/users/{user.uuid}/", } diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_forms.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_forms.py index c87638eeb..d92bcc3ad 100644 --- a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_forms.py +++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_forms.py @@ -25,6 +25,8 @@ class TestUserAdminCreationForm: form = UserAdminCreationForm( { "email": user.email, + "first_name": user.first_name, + "last_name": user.last_name, "password1": user.password, "password2": user.password, } diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_urls.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_urls.py index 89c0336ee..3130f2060 100644 --- a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_urls.py +++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_urls.py @@ -5,7 +5,7 @@ from {{ cookiecutter.project_slug }}.users.models import User def test_detail(user: User): assert ( - reverse("users:detail", kwargs={"username": user.uuid}) + reverse("users:detail", kwargs={"uuid": user.uuid}) == f"/users/{user.uuid}/" ) assert resolve(f"/users/{user.uuid}/").view_name == "users:detail"