mirror of
				https://github.com/ae-utbm/sith.git
				synced 2025-11-04 11:03:04 +00:00 
			
		
		
		
	added path vailidity verification and IOError handling added option to overwrite existing logo and force flag improved uppon suggestions mistake correction fixed string conversion bugs and logical error corrected path conversion f better error handling and corrections ajout d'une section de documentation pour la feature copié coller fixed documentation bullet points added resampling clean up error handling removed useless IOError
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import pathlib
 | 
						|
 | 
						|
from django.apps import apps
 | 
						|
from django.core.management.base import BaseCommand
 | 
						|
from PIL import Image, UnidentifiedImageError
 | 
						|
 | 
						|
 | 
						|
class Command(BaseCommand):
 | 
						|
    def add_arguments(self, parser):
 | 
						|
        parser.add_argument("number", type=int)
 | 
						|
        parser.add_argument("path", type=pathlib.Path)
 | 
						|
        parser.add_argument("-f", "--force", action="store_true")
 | 
						|
 | 
						|
    def handle(self, number: int, path: pathlib.Path, force: int, *args, **options):
 | 
						|
        if not path.exists() or path.is_dir():
 | 
						|
            self.stderr.write(f"{path} is not a file or does not exist")
 | 
						|
            return
 | 
						|
 | 
						|
        dest_path = (
 | 
						|
            pathlib.Path(apps.get_app_config("core").path)
 | 
						|
            / "static"
 | 
						|
            / "core"
 | 
						|
            / "img"
 | 
						|
            / f"promo_{number}.png"
 | 
						|
        )
 | 
						|
 | 
						|
        if dest_path.exists() and not force:
 | 
						|
            over = input("File already exists, do you want to overwrite it? (y/N):")
 | 
						|
            if over.lower() != "y":
 | 
						|
                self.stdout.write("exiting")
 | 
						|
                return
 | 
						|
        try:
 | 
						|
            im = Image.open(path)
 | 
						|
            im.resize((120, 120), resample=Image.Resampling.LANCZOS).save(
 | 
						|
                dest_path, format="PNG"
 | 
						|
            )
 | 
						|
            self.stdout.write(
 | 
						|
                f"Promo logo moved and resized successfully at {dest_path}"
 | 
						|
            )
 | 
						|
        except UnidentifiedImageError:
 | 
						|
            self.stderr.write("image cannot be opened and identified.")
 |