def test_generate_thumbnail_name_dataset(self): dataset_name = thumbnails._generate_thumbnail_name( Dataset.objects.first()) self.assertIsNotNone( re.match(f"dataset-{self.re_uuid}-thumb.png", dataset_name, re.I), "Dataset name should meet a provided pattern")
def test_generate_thumbnail_name_map(self, uuid_mock, layers_mock): layers_mock.return_value = [MapLayer()] uuid_mock.return_value = str(uuid.uuid4()) map_name = thumbnails._generate_thumbnail_name(Map.objects.first()) self.assertIsNotNone( re.match(f"map-{self.re_uuid}-thumb.png", map_name, re.I), "Map name should meet a provided pattern" )
def test_generate_thumbnail_name_document(self): doc = resource_manager.create( None, resource_type=Document, defaults=dict( doc_url="http://geonode.org/map.pdf", owner=get_user_model().objects.get(username='******'), title="Test doc", )) name = thumbnails._generate_thumbnail_name(doc) self.assertIsNotNone( re.match(f"document-{self.re_uuid}-thumb.png", name, re.I), "Document name should meet a provided pattern" )
def test_generate_thumbnail_name_geoapp(self): geo_app = resource_manager.create( None, resource_type=GeoApp, defaults=dict( title="Test GeoApp", owner=get_user_model().objects.get(username='******'), blob='{"test_data": {"test": ["test_1","test_2","test_3"]}}' ) ) name = thumbnails._generate_thumbnail_name(geo_app) self.assertIsNotNone( re.match(f"geoapp-{self.re_uuid}-thumb.png", name, re.I), "GeoApp name should meet a provided pattern" )
def update_thumbnail_urls_and_delete_curated_thumbs_folder( apps, schema_editor): query = ''' SELECT base_resourcebase.id, base_curatedthumbnail.img FROM base_resourcebase INNER JOIN base_curatedthumbnail ON base_resourcebase.id=base_curatedthumbnail.resource_id; ''' c = connection.cursor() c.execute(query) results = c.fetchall() for result in results: resource_id, image = result resource = ResourceBase.objects.filter(id=resource_id).first() try: bytes_file = storage_manager.open(image).read() except Exception: bytes_file = None if resource and bytes_file: filename = _generate_thumbnail_name(resource.get_real_instance()) resource.save_thumbnail(filename, bytes_file)
def test_generate_thumbnail_name_map_empty(self, layers_mock): layers_mock.return_value = [] map_name = thumbnails._generate_thumbnail_name(Map.objects.first()) self.assertIsNone(map_name, "Map name for maps without layers should return None.")
def test_generate_thumbnail_name_layer(self): layer_name = thumbnails._generate_thumbnail_name(Layer.objects.first()) self.assertIsNotNone( re.match(f"layer-{self.re_uuid}-thumb.png", layer_name, re.I), "Layer name should meet a provided pattern")
def test_get_unique_upload_path(self): dataset = Dataset.objects.first() thumbnail_name = thumbnails._generate_thumbnail_name(dataset) upload_path = utils.thumb_path(thumbnail_name) new_upload_path = utils.get_unique_upload_path(thumbnail_name) self.assertNotEqual(upload_path, new_upload_path)
return False def set_thumbnail(self, uuid: str, /, instance: ResourceBase = None, overwrite: bool = True, check_bbox: bool = True, thumbnail=None) -> bool: _resource = instance or ResourceManager._get_instance(uuid) if _resource: _resource.set_processing_state(enumerations.STATE_RUNNING) try: with transaction.atomic(): if thumbnail: file_name = _generate_thumbnail_name( _resource.get_real_instance()) _resource.save_thumbnail(file_name, thumbnail) else: if instance and instance.files and isinstance( instance.get_real_instance(), Document): if overwrite or instance.thumbnail_url == static( thumb_utils.MISSING_THUMB): create_document_thumbnail.apply( (instance.id, )) self._concrete_resource_manager.set_thumbnail( uuid, instance=_resource, overwrite=overwrite, check_bbox=check_bbox) _resource.set_processing_state(enumerations.STATE_PROCESSED) return True