Exemplo n.º 1
0
    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],
        }
Exemplo n.º 2
0
    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],
        }
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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)
Exemplo n.º 7
0
    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)