def get_attribute(self, instance): _instance = instance.get_real_instance() if hasattr(_instance, 'embed_url') and _instance.embed_url != NotImplemented: return build_absolute_uri(_instance.embed_url) else: return ""
def test_embed_urls(self): """ Ensure the embed urls reflect the concrete instance ones. """ # Admin self.assertTrue(self.client.login(username='******', password='******')) resources = ResourceBase.objects.all() for resource in resources: url = reverse('base-resources-detail', kwargs={'pk': resource.pk}) response = self.client.get(url, format='json') if resource.title.endswith('metadata true'): self.assertEqual(response.status_code, 404) else: self.assertEqual(response.status_code, 200) self.assertEqual(int(response.data['resource']['pk']), int(resource.pk)) embed_url = response.data['resource']['embed_url'] self.assertIsNotNone(embed_url) instance = resource.get_real_instance() if hasattr(instance, 'embed_url'): if instance.embed_url != NotImplemented: self.assertEqual(build_absolute_uri(instance.embed_url), embed_url) else: self.assertEqual("", embed_url)
def get_attribute(self, instance): try: func = getattr(instance, f"get_{self.type}_url") return build_absolute_uri(func()) except AttributeError as e: logger.exception(e) return None
def get_attribute(self, instance): thumbnail_url = instance.thumbnail_url if hasattr(instance, 'curatedthumbnail'): try: if hasattr(instance.curatedthumbnail.img_thumbnail, 'url'): thumbnail_url = instance.curatedthumbnail.thumbnail_url except Exception as e: logger.exception(e) return build_absolute_uri(thumbnail_url)
def to_representation(self, instance): data = super().to_representation(instance) try: path = reverse(self.Meta.view_name) if not path.endswith('/'): path = f"{path}/" url = urljoin(path, str(instance.pk)) data['link'] = build_absolute_uri(url) except NoReverseMatch as e: logger.exception(e) return data
def get_attribute(self, instance): return build_absolute_uri(instance.detail_url)
def get_attribute(self, instance): return build_absolute_uri(avatar_url(instance, self.avatar_size))