File tree Expand file tree Collapse file tree 3 files changed +18
-17
lines changed
django/thunderstore/repository Expand file tree Collapse file tree 3 files changed +18
-17
lines changed Original file line number Diff line number Diff line change 13
13
PackageVersionField ,
14
14
StrictCharField ,
15
15
)
16
- from thunderstore .repository .utils import (
17
- does_contain_package ,
18
- has_different_case ,
19
- has_duplicate_packages ,
20
- )
16
+ from thunderstore .repository .utils import does_contain_package , has_duplicate_packages
21
17
22
18
23
19
class PackageInstallerSerializer (serializers .Serializer ):
@@ -100,10 +96,13 @@ def validate(self, data):
100
96
)
101
97
if does_contain_package (result ["dependencies" ], reference ):
102
98
raise ValidationError ("Package depending on itself is not allowed" )
103
- if has_different_case (reference .without_version ):
104
- raise ValidationError (
105
- "Package name already exists with different capitalization"
106
- )
99
+ if not reference .without_version .exists : # if we're making a new package
100
+ if (
101
+ reference .without_version .exists_in_any_case
102
+ ): # if it exists in a different case
103
+ raise ValidationError (
104
+ "Package name already exists with different capitalization"
105
+ )
107
106
return result
108
107
109
108
def update (self , instance , validated_data ):
Original file line number Diff line number Diff line change @@ -75,6 +75,16 @@ def test_manifest_v1_serializer_package_already_exists_with_different_case(
75
75
assert "Package name already exists with different capitalization" in str (
76
76
serializer .errors ["non_field_errors" ][0 ]
77
77
)
78
+ # Updating packages that already exist with different case should still be valid
79
+ PackageFactory (
80
+ owner = package .owner , name = package .name .swapcase (), namespace = package .namespace
81
+ )
82
+ serializer = ManifestV1Serializer (
83
+ user = user ,
84
+ team = package .owner ,
85
+ data = manifest_v1_data ,
86
+ )
87
+ assert serializer .is_valid () is True
78
88
79
89
80
90
@pytest .mark .django_db
Original file line number Diff line number Diff line change @@ -42,14 +42,6 @@ def has_duplicate_packages(packages: List["PackageReference"]) -> bool:
42
42
return False
43
43
44
44
45
- def has_different_case (reference : "PackageReference" ) -> bool :
46
- if reference .exists :
47
- return False
48
- elif reference .exists_in_any_case :
49
- return True
50
- return False
51
-
52
-
53
45
def unpack_serializer_errors (field , errors , error_dict = None ):
54
46
if error_dict is None :
55
47
error_dict = {}
You can’t perform that action at this time.
0 commit comments