Skip to content

Commit 7128b94

Browse files
committed
feat(events): add image's license_url to api
Displays image's license url in the api. Refs LINK-2241
1 parent ae3d1cb commit 7128b94

File tree

4 files changed

+38
-2
lines changed

4 files changed

+38
-2
lines changed

events/serializers.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import urllib
55
from copy import deepcopy
66
from datetime import timedelta
7+
from typing import Optional
78
from zoneinfo import ZoneInfo
89

910
from django.conf import settings
@@ -207,6 +208,7 @@ class ImageSerializer(EditableLinkedEventsObjectSerializer):
207208
license = serializers.PrimaryKeyRelatedField(
208209
queryset=License.objects.all(), required=False
209210
)
211+
license_url = serializers.SerializerMethodField()
210212
created_time = DateTimeField(
211213
default_timezone=ZoneInfo("UTC"), required=False, allow_null=True
212214
)
@@ -220,6 +222,10 @@ class Meta:
220222
model = Image
221223
fields = "__all__"
222224

225+
@extend_schema_field(Optional[str])
226+
def get_license_url(self, obj):
227+
return obj.license.url if obj.license else None
228+
223229
def to_representation(self, obj):
224230
# the url field is customized based on image and url
225231
representation = super().to_representation(obj)

events/tests/test_api.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
from ..api import EventSerializer, OrganizationListSerializer, _terms_to_regex
1717
from ..auth import ApiKeyAuth
18-
from ..models import DataSource, Image
18+
from ..models import DataSource, Image, License
1919
from ..utils import get_user_data_source_and_organization_from_request
2020
from .utils import versioned_reverse as reverse
2121

@@ -317,12 +317,17 @@ def setUp(self):
317317
origin_id="org-3",
318318
data_source=self.data_source,
319319
)
320+
img_license = License.objects.create(
321+
name="Test license",
322+
url="http://urltothe.license",
323+
)
320324
self.image_1 = Image.objects.create(
321325
name="image-1",
322326
data_source=self.data_source,
323327
publisher=self.org_1,
324328
url="http://fake.url/image-1/",
325329
alt_text="Lorem",
330+
license=img_license,
326331
)
327332
self.image_2 = Image.objects.create(
328333
name="image-2",
@@ -365,6 +370,15 @@ def test_get_image_alt_text(self):
365370
alt_text = response.data["alt_text"]
366371
self.assertEqual(alt_text, "Lorem")
367372

373+
def test_get_image_license_url(self):
374+
url = reverse("image-detail", kwargs={"pk": self.image_1.id})
375+
376+
response = self.client.get(url)
377+
self.assertEqual(response.status_code, status.HTTP_200_OK)
378+
379+
license_url = response.data["license_url"]
380+
self.assertEqual(license_url, "http://urltothe.license")
381+
368382
def test_text_search_by_image_alt_text(self):
369383
url = "{0}?text=lorem".format(reverse("image-list"))
370384

events/tests/test_event_get.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from rest_framework import status
1717

1818
from audit_log.models import AuditLogEntry
19-
from events.models import Event, Language, PublicationStatus
19+
from events.models import Event, Language, License, PublicationStatus
2020
from events.tests.conftest import APIClient
2121
from events.tests.factories import EventFactory, OfferFactory
2222
from events.tests.utils import (
@@ -1948,6 +1948,21 @@ def test_get_event_with_offer_and_offer_price_groups(api_client, event):
19481948
)
19491949

19501950

1951+
@pytest.mark.django_db
1952+
def test_event_list_shows_image_and_its_license(event, image):
1953+
event.images.add(image)
1954+
img_license = License.objects.create(
1955+
name="Test license",
1956+
url="http://urltothe.license",
1957+
)
1958+
image.license = img_license
1959+
image.save()
1960+
1961+
response = get_list(api_client)
1962+
license_url = response.data["data"][0]["images"][0]["license_url"]
1963+
assert license_url == "http://urltothe.license"
1964+
1965+
19511966
class FilterEventsByRegistrationCapacitiesV1TestCase(TestCase, EventsListTestCaseMixin):
19521967
@classmethod
19531968
def setUpTestData(cls):

events/tests/test_event_images_v1.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ def assert_image_fields_exist(data, version="v1"):
6969
"photographer_name",
7070
"data_source",
7171
"alt_text",
72+
"license_url",
7273
)
7374

7475
assert_fields_exist(data, fields)

0 commit comments

Comments
 (0)