def get_visuals_value(self, obj): images = related_archive_items(Release.related_images, obj) videos = related_archive_items(Release.related_videos, obj, has_main_visual=False) stock_images = related_archive_items(Release.stock_images, obj, has_main_visual=False) return { 'images': [{ 'id': relobj.id, 'source_id': relobj.source.id if relobj.source else None, 'is_main_visual': relobj.is_main_visual, 'featured': relobj.featured, 'width': relobj.width, 'height': relobj.height, 'formats': get_instance_archives(relobj), 'formats_url': get_instance_archives_urls(relobj), 'url': 'http://%s%s' % (get_current_site(None), relobj.get_absolute_url()), 'title': relobj.title, } for relobj in images], 'videos': [{ 'id': relobj.id, 'source_id': relobj.source.id if relobj.source else None, 'featured': relobj.featured, 'formats': get_instance_archives(relobj), 'formats_url': get_instance_archives_urls(relobj), 'duration': timestring_to_seconds(relobj.file_duration) if relobj.file_duration else None, 'url': 'http://%s%s' % (get_current_site(None), relobj.get_absolute_url()), 'title': relobj.title, } for relobj in videos], 'stockimages': [{ 'id': relobj.id, } for relobj in stock_images], }
def get_visuals_value(self, obj): images = related_archive_items(Announcement.related_images, obj) videos = related_archive_items(Announcement.related_videos, obj, has_main_visual=False) return { 'images': [{ 'id': relobj.id, 'source_id': relobj.source.id if relobj.source else None, 'is_main_visual': relobj.is_main_visual, 'featured': relobj.featured, 'width': relobj.width, 'height': relobj.height, 'formats': get_instance_archives(relobj), 'formats_url': get_instance_archives_urls(relobj), 'url': 'http://%s%s' % (get_current_site(None), relobj.get_absolute_url()), 'title': relobj.title, } for relobj in images], 'videos': [{ 'id': relobj.id, 'source_id': relobj.source.id if relobj.source else None, 'featured': relobj.featured, 'formats': get_instance_archives(relobj), 'formats_url': get_instance_archives_urls(relobj), 'url': 'http://%s%s' % (get_current_site(None), relobj.get_absolute_url()), 'title': relobj.title, } for relobj in videos], }
def serialize(self, obj): data = super(PictureOfTheWeekSerializer, self).serialize(obj).data archive = obj.image or obj.video or obj.comparison or None if archive: data.update({'formats_url': get_instance_archives_urls(archive)}) return Serialization(data)
def serialize(self, obj): data = super(VideoSerializer, self).serialize(obj).data data.update({'ReferenceURL': obj.reference_url}) data.update({'formats_url': get_instance_archives_urls(obj)}) # Formats: data.update({'Resources': get_instance_resources(obj)}) return Serialization(data)
def get_banner(self, obj): return get_instance_archives_urls(obj.banner)
def get_photo(self, obj): if obj.author and obj.author.photo: return get_instance_archives_urls(obj.author.photo)
def serialize(self, image, related_cache=None): """ Serialise image object """ data = {} def cached_objects(qs, key): if related_cache and key in related_cache: return [ obj for (pk, obj) in related_cache[key] if pk == image.id ] else: return qs def field_to_python(obj, attr): return obj.__class__._meta.get_field(attr).from_internal( getattr(obj, attr)) def include_related(objs, mapping): d = {} for obj in objs: for field, tag in mapping.items(): try: val = d[tag] except KeyError: val = [] attrval = getattr(obj, field) if callable(attrval): attrval = attrval() val.append(attrval) d[tag] = val return d # # Creator Metadata # data.update({'Creator': image.creator}) data.update({'CreatorURL': image.creator_url}) data.update( include_related( cached_objects(image.imagecontact_set.all(), 'imagecontact_set'), { 'contact_name': 'Contact.Name', 'contact_email': 'Contact.Email', 'contact_telephone': 'Contact.Telephone' })) data.update({'Contact.Address': prepare_str(image.contact_address)}) data.update({'Contact.City': prepare_str(image.contact_city)}) data.update({ 'Contact.StateProvince': prepare_str(image.contact_state_province) }) data.update( {'Contact.PostalCode': prepare_str(image.contact_postal_code)}) data.update({'Contact.Country': prepare_str(image.contact_country)}) data.update({'Rights': prepare_str(image.rights)}) # # Content Metadata # data.update({'Title': prepare_str(image.title)}) data.update({'Headline': prepare_str(image.headline)}) data.update({'Description': prepare_str(image.description, html=True)}) data.update( include_related( cached_objects(image.subject_category.exclude(top_level='X'), 'subject_category'), {'avm_code': 'Subject.Category'})) data.update( include_related( cached_objects(image.subject_name.all(), 'subject_name'), {'name': 'Subject.Name'})) data.update({'Distance': [image.distance_ly, image.distance_z]}) data.update({'Distance.Notes': prepare_str(image.distance_notes)}) data.update({'ReferenceURL': image.reference_url}) data.update({'Credit': prepare_str(image.credit, html=True)}) data.update({'Date': image.release_date}) data.update({'ID': image.id}) data.update({'Type': image.type}) #serializer.add( { 'Image.ProductQuality': image.image_productquality } ) # # Observation Metadata # data.update( include_related( cached_objects(image.imageexposure_set.all(), 'imageexposure_set'), { 'facility': 'Facility', 'instrument': 'Instrument', 'spectral_color_assignment': 'Spectral.ColorAssignment', 'spectral_band': 'Spectral.Band', 'spectral_bandpass': '******', 'spectral_central_wavelength': 'Spectral.CentralWavelength', 'temporal_start_time': 'Temporal.StartTime', 'temporal_integration_time': 'Temporal.IntegrationTime', 'dataset_id': 'DatasetID', })) data.update({'Spectral.Notes': prepare_str(image.spectral_notes)}) # # Coordinate Metadata # data.update( {'Spatial.CoordinateFrame': image.spatial_coordinate_frame}) data.update({'Spatial.Equinox': image.spatial_equinox}) data.update({ 'Spatial.ReferenceValue': field_to_python(image, 'spatial_reference_value') }) data.update({ 'Spatial.ReferenceDimension': field_to_python(image, 'spatial_reference_dimension') }) data.update({ 'Spatial.ReferencePixel': field_to_python(image, 'spatial_reference_pixel') }) data.update({'Spatial.Scale': field_to_python(image, 'spatial_scale')}) data.update({'Spatial.Rotation': image.spatial_rotation}) data.update({ 'Spatial.CoordsystemProjection': image.spatial_coordsystem_projection }) data.update({'Spatial.Quality': image.spatial_quality}) data.update({'Spatial.Notes': prepare_str(image.spatial_notes)}) # # Publisher Metadata # data.update({'Publisher': image.publisher}) data.update({'PublisherID': image.publisher_id}) data.update({'ResourceID': image.resource_id()}) data.update({'ResourceURL': image.resource_url()}) data.update({'MetadataDate': image.metadata_date}) data.update({'MetadataVersion': image.metadata_version}) # Formats: data.update({'formats_url': get_instance_archives_urls(image)}) data.update({'Resources': get_instance_resources(image)}) return Serialization(data)