def fake_object(self, data): """Create a fake instance of Extension from ES data.""" obj = Extension(id=data['id']) data['created'] = es_to_datetime(data['created']) data['last_updated'] = es_to_datetime(data['last_updated']) data['modified'] = es_to_datetime(data['modified']) # Create a fake ExtensionVersion for latest_public_version. if data['latest_public_version']: obj.latest_public_version = ExtensionVersion( extension=obj, id=data['latest_public_version']['id'], created=es_to_datetime( data['latest_public_version']['created']), size=data['latest_public_version'].get('size', 0), status=STATUS_PUBLIC, version=data['latest_public_version']['version'], ) # Set basic attributes we'll need on the fake instance using the data # from ES. self._attach_fields( obj, data, ('author', 'created', 'default_language', 'icon_hash', 'last_updated', 'modified', 'slug', 'status', 'version')) obj.deleted = data['is_deleted'] obj.disabled = data['is_disabled'] obj.uuid = data['guid'] # Attach translations for all translated attributes. # obj.default_language should be set first for this to work. self._attach_translations(obj, data, ( 'name', 'description', )) # Some methods might need the raw data from ES, put it on obj. obj.es_data = data return obj
def fake_object(self, data): """Create a fake instance of Extension from ES data.""" obj = Extension(id=data['id']) data['created'] = es_to_datetime(data['created']) data['last_updated'] = es_to_datetime(data['last_updated']) data['modified'] = es_to_datetime(data['modified']) # Create a fake ExtensionVersion for latest_public_version. if data['latest_public_version']: obj.latest_public_version = ExtensionVersion( extension=obj, id=data['latest_public_version']['id'], created=es_to_datetime( data['latest_public_version']['created']), size=data['latest_public_version'].get('size', 0), status=STATUS_PUBLIC, version=data['latest_public_version']['version'],) # Set basic attributes we'll need on the fake instance using the data # from ES. self._attach_fields( obj, data, ('author', 'created', 'default_language', 'icon_hash', 'last_updated', 'modified', 'slug', 'status', 'version')) obj.deleted = data['is_deleted'] obj.disabled = data['is_disabled'] obj.uuid = data['guid'] # Attach translations for all translated attributes. # obj.default_language should be set first for this to work. self._attach_translations( obj, data, ('name', 'description', )) # Some methods might need the raw data from ES, put it on obj. obj.es_data = data return obj
def to_native(self, obj): # fake_app is a fake instance because we need to access a couple # properties and methods on Webapp. It should never hit the database. self.fake_app = Webapp( id=obj['id'], icon_type='image/png', default_locale=obj.get('default_locale', settings.LANGUAGE_CODE), icon_hash=obj.get('icon_hash'), modified=es_to_datetime(obj['modified'])) ESTranslationSerializerField.attach_translations( self.fake_app, obj, 'name') return { 'name': self.fields['name'].field_to_native(self.fake_app, 'name'), 'icon': self.fake_app.get_icon_url(64), 'slug': obj['slug'], 'manifest_url': obj['manifest_url'], }
def to_native(self, obj): # fake_app is a fake instance because we need to access a couple # properties and methods on Webapp. It should never hit the database. self.fake_app = Webapp(id=obj['id'], icon_type='image/png', default_locale=obj.get('default_locale', settings.LANGUAGE_CODE), icon_hash=obj.get('icon_hash'), modified=es_to_datetime(obj['modified'])) ESTranslationSerializerField.attach_translations( self.fake_app, obj, 'name') return { 'name': self.fields['name'].field_to_native(self.fake_app, 'name'), 'icon': self.fake_app.get_icon_url(64), 'slug': obj['slug'], 'manifest_url': obj['manifest_url'], }
def to_native(self, obj): # fake_app is a fake instance because we need to access a couple # properties and methods on Webapp. It should never hit the database. self.fake_app = Webapp( id=obj["id"], icon_type="image/png", default_locale=obj.get("default_locale", settings.LANGUAGE_CODE), icon_hash=obj.get("icon_hash"), modified=es_to_datetime(obj["modified"]), ) ESTranslationSerializerField.attach_translations(self.fake_app, obj, "name") return { "name": self.fields["name"].field_to_native(self.fake_app, "name"), "icon": self.fake_app.get_icon_url(64), "slug": obj["slug"], "manifest_url": obj["manifest_url"], }
def es2datetime(s): """ Returns a datetime given an Elasticsearch date/datetime field. """ return es_to_datetime(s)