Skip to content

Commit f4acdfc

Browse files
committed
Use DRF field_name not source as GET param prefix as documented
1 parent 98d3934 commit f4acdfc

File tree

3 files changed

+28
-27
lines changed

3 files changed

+28
-27
lines changed

pictures/contrib/rest_framework.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,18 @@ def to_representation(self, obj: PictureFieldFile):
4141
except KeyError:
4242
pass
4343
else:
44-
ratio = query_params.get(f"{self.source}_ratio")
45-
container = query_params.get(f"{self.source}_container")
44+
ratio = query_params.get(f"{self.field_name}_ratio")
45+
container = query_params.get(f"{self.field_name}_container")
4646
try:
4747
container = int(container)
4848
except TypeError:
4949
container = None
5050
except ValueError as e:
5151
raise ValueError(f"Container width is not a number: {container}") from e
5252
breakpoints = {
53-
bp: int(query_params.get(f"{self.source}_{bp}"))
53+
bp: int(query_params.get(f"{self.field_name}_{bp}"))
5454
for bp in get_settings().BREAKPOINTS
55-
if f"{self.source}_{bp}" in query_params
55+
if f"{self.field_name}_{bp}" in query_params
5656
}
5757
if ratio is not None:
5858
try:

tests/contrib/test_rest_framework.py

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111

1212

1313
class ProfileSerializer(serializers.ModelSerializer):
14-
picture = rest_framework.PictureField()
14+
image = rest_framework.PictureField(source="picture")
1515

1616
class Meta:
1717
model = models.Profile
18-
fields = ["picture"]
18+
fields = ["image"]
1919

2020

2121
def test_default(settings):
@@ -48,7 +48,7 @@ def test_to_representation(self, image_upload_file, settings):
4848
profile = models.Profile.objects.create(picture=image_upload_file)
4949
serializer = ProfileSerializer(profile)
5050

51-
assert serializer.data["picture"] == {
51+
assert serializer.data["image"] == {
5252
"url": "/media/testapp/profile/image.png",
5353
"width": 800,
5454
"height": 800,
@@ -121,12 +121,12 @@ def test_to_representation__with_aspect_ratios(
121121
profile = models.Profile.objects.create(picture=image_upload_file)
122122
request = rf.get("/")
123123
request.GET._mutable = True
124-
request.GET["picture_ratio"] = "1/1"
125-
request.GET["picture_l"] = "3"
126-
request.GET["picture_m"] = "4"
124+
request.GET["image_ratio"] = "1/1"
125+
request.GET["image_l"] = "3"
126+
request.GET["image_m"] = "4"
127127
serializer = ProfileSerializer(profile, context={"request": request})
128128

129-
assert serializer.data["picture"] == {
129+
assert serializer.data["image"] == {
130130
"url": "/media/testapp/profile/image.png",
131131
"width": 800,
132132
"height": 800,
@@ -158,13 +158,13 @@ def test_to_representation__raise_value_error(
158158
profile = models.Profile.objects.create(picture=image_upload_file)
159159
request = rf.get("/")
160160
request.GET._mutable = True
161-
request.GET["picture_ratio"] = "21/11"
162-
request.GET["picture_l"] = "3"
163-
request.GET["picture_m"] = "4"
161+
request.GET["image_ratio"] = "21/11"
162+
request.GET["image_l"] = "3"
163+
request.GET["image_m"] = "4"
164164
serializer = ProfileSerializer(profile, context={"request": request})
165165

166166
with pytest.raises(ValueError) as e:
167-
serializer.data["picture"]
167+
serializer.data["image"]
168168

169169
assert str(e.value) == "Invalid ratio: 21/11. Choices are: 1/1, 3/2, 16/9"
170170

@@ -175,12 +175,12 @@ def test_to_representation__blank(self, rf, image_upload_file, settings):
175175
profile = models.Profile.objects.create()
176176
request = rf.get("/")
177177
request.GET._mutable = True
178-
request.GET["picture_ratio"] = "21/11"
179-
request.GET["picture_l"] = "3"
180-
request.GET["picture_m"] = "4"
178+
request.GET["image_ratio"] = "21/11"
179+
request.GET["image_l"] = "3"
180+
request.GET["image_m"] = "4"
181181
serializer = ProfileSerializer(profile, context={"request": request})
182182

183-
assert serializer.data["picture"] is None
183+
assert serializer.data["image"] is None
184184

185185
@pytest.mark.django_db
186186
def test_to_representation__with_container(self, rf, image_upload_file, settings):
@@ -189,10 +189,10 @@ def test_to_representation__with_container(self, rf, image_upload_file, settings
189189
profile = models.Profile.objects.create(picture=image_upload_file)
190190
request = rf.get("/")
191191
request.GET._mutable = True
192-
request.GET["picture_ratio"] = "16/9"
193-
request.GET["picture_container"] = "1200"
192+
request.GET["image_ratio"] = "16/9"
193+
request.GET["image_container"] = "1200"
194194
serializer = ProfileSerializer(profile, context={"request": request})
195-
assert serializer.data["picture"] == {
195+
assert serializer.data["image"] == {
196196
"url": "/media/testapp/profile/image.png",
197197
"width": 800,
198198
"height": 800,
@@ -224,9 +224,9 @@ def test_to_representation__without_container(
224224
profile = models.Profile.objects.create(picture=image_upload_file)
225225
request = rf.get("/")
226226
request.GET._mutable = True
227-
request.GET["picture_ratio"] = "16/9"
227+
request.GET["image_ratio"] = "16/9"
228228
serializer = ProfileSerializer(profile, context={"request": request})
229-
assert serializer.data["picture"] == {
229+
assert serializer.data["image"] == {
230230
"url": "/media/testapp/profile/image.png",
231231
"width": 800,
232232
"height": 800,
@@ -258,9 +258,9 @@ def test_to_representation__with_false_str_container(
258258
profile = models.Profile.objects.create(picture=image_upload_file)
259259
request = rf.get("/")
260260
request.GET._mutable = True
261-
request.GET["picture_ratio"] = "16/9"
262-
request.GET["picture_container"] = "not_a_number"
261+
request.GET["image_ratio"] = "16/9"
262+
request.GET["image_container"] = "not_a_number"
263263
serializer = ProfileSerializer(profile, context={"request": request})
264264
with pytest.raises(ValueError) as e:
265-
serializer.data["picture"]
265+
serializer.data["image"]
266266
assert str(e.value) == "Container width is not a number: not_a_number"

tests/testapp/migrations/0005_alter_profile_picture.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Generated by Django 3.2.19 on 2023-06-07 18:06
22

33
from django.db import migrations
4+
45
import pictures.models
56

67

0 commit comments

Comments
 (0)