From 46ecc3f103775b5961b744c7a6b76f375040501d Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Thu, 21 Jun 2018 19:41:40 +0200
Subject: [PATCH] See #248: ensure invitation codes are case insensitive

---
 api/funkwhale_api/manage/serializers.py | 2 +-
 api/funkwhale_api/users/models.py       | 2 +-
 api/funkwhale_api/users/serializers.py  | 2 +-
 api/tests/users/test_views.py           | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/api/funkwhale_api/manage/serializers.py b/api/funkwhale_api/manage/serializers.py
index d1a9ebb8..c639d3a3 100644
--- a/api/funkwhale_api/manage/serializers.py
+++ b/api/funkwhale_api/manage/serializers.py
@@ -146,7 +146,7 @@ class ManageInvitationSerializer(serializers.ModelSerializer):
     def validate_code(self, value):
         if not value:
             return value
-        if users_models.Invitation.objects.filter(code=value.lower()).exists():
+        if users_models.Invitation.objects.filter(code__iexact=value).exists():
             raise serializers.ValidationError(
                 "An invitation with this code already exists"
             )
diff --git a/api/funkwhale_api/users/models.py b/api/funkwhale_api/users/models.py
index e205d04d..ec9c39fd 100644
--- a/api/funkwhale_api/users/models.py
+++ b/api/funkwhale_api/users/models.py
@@ -152,7 +152,7 @@ class User(AbstractUser):
 
 def generate_code(length=10):
     return "".join(
-        random.SystemRandom().choice(string.ascii_lowercase) for _ in range(length)
+        random.SystemRandom().choice(string.ascii_uppercase) for _ in range(length)
     )
 
 
diff --git a/api/funkwhale_api/users/serializers.py b/api/funkwhale_api/users/serializers.py
index f857e8da..43895126 100644
--- a/api/funkwhale_api/users/serializers.py
+++ b/api/funkwhale_api/users/serializers.py
@@ -18,7 +18,7 @@ class RegisterSerializer(RS):
             return
 
         try:
-            return models.Invitation.objects.open().get(code=value.lower())
+            return models.Invitation.objects.open().get(code__iexact=value)
         except models.Invitation.DoesNotExist:
             raise serializers.ValidationError("Invalid invitation code")
 
diff --git a/api/tests/users/test_views.py b/api/tests/users/test_views.py
index 0ad67fb8..72336019 100644
--- a/api/tests/users/test_views.py
+++ b/api/tests/users/test_views.py
@@ -52,7 +52,7 @@ def test_can_disable_registration_view(preferences, api_client, db):
 
 def test_can_signup_with_invitation(preferences, factories, api_client):
     url = reverse("rest_register")
-    invitation = factories["users.Invitation"](code="hello")
+    invitation = factories["users.Invitation"](code="Hello")
     data = {
         "username": "test1",
         "email": "test1@test.com",
-- 
GitLab