def content_file_name(upload_to_path, instance, filename=None, new_extension=None):
    """
    Méthode à utiliser pour l'attribut "upload_to" d'un FileField/ImageField pour 
    renommer automatiquement le nom de fichier avec un nom unique et empêcher la 
    conservation de fichier avec des caractères spéciaux.
    
    À ne pas utiliser directement sur l'attribut "FileField.upload_to" 
    mais via un callable pour indiquer le chemin "upload_to" par exemple :
    
        ATTACH_FILE_UPLOADTO = lambda x,y: content_file_name('attach/%Y/%m/%d', x, y)
    
    puis
    
        file = models.FileField(u'fichier', upload_to=ATTACH_FILE_UPLOADTO)
    
    TODO: Should enforce lowercase on the file extension
    """
    upload_to = real_datetime.now().strftime(upload_to_path)
    if not filename:
        return upload_to
    filename = get_unique_filename(filename, new_extension=new_extension)
    return '/'.join([upload_to, filename])
def content_file_name ( upload_to_path , instance , filename = None , new_extension = None ) : upload_to = real_datetime . now ( ) . strftime ( upload_to_path ) if not filename : return upload_to filename = get_unique_filename ( filename , new_extension = new_extension ) return '/' . join ( [ upload_to , filename ] )
Méthode à utiliser pour l'attribut "upload_to" d'un FileField/ImageField pour 
    renommer automatiquement le nom de fichier avec un nom unique et empêcher la 
    conservation de fichier avec des caractères spéciaux.
    
    À ne pas utiliser directement sur l'attribut "FileField.upload_to" 
    mais via un callable pour indiquer le chemin "upload_to" par exemple :
    
        ATTACH_FILE_UPLOADTO = lambda x,y: content_file_name('attach/%Y/%m/%d', x, y)
    
    puis
    
        file = models.FileField(u'fichier', upload_to=ATTACH_FILE_UPLOADTO)
    
    TODO: Should enforce lowercase on the file extension