Modify input text fonction and add Input Class
This commit is contained in:
		
							parent
							
								
									723f549f73
								
							
						
					
					
						commit
						b7435c4eac
					
				@ -494,6 +494,7 @@ class SortMedias:
 | 
				
			|||||||
        self.summary = Summary(self.root)
 | 
					        self.summary = Summary(self.root)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Attributes
 | 
					        # Attributes
 | 
				
			||||||
 | 
					        self.input = request.Input()
 | 
				
			||||||
        self.theme = request.load_theme()
 | 
					        self.theme = request.load_theme()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _checkcomp(self, dest_path, src_checksum):
 | 
					    def _checkcomp(self, dest_path, src_checksum):
 | 
				
			||||||
@ -580,14 +581,10 @@ class SortMedias:
 | 
				
			|||||||
                    self.log.warning(f'Target directory {dir_path} is a file')
 | 
					                    self.log.warning(f'Target directory {dir_path} is a file')
 | 
				
			||||||
                    # Rename the src_file
 | 
					                    # Rename the src_file
 | 
				
			||||||
                    if self.interactive:
 | 
					                    if self.interactive:
 | 
				
			||||||
                        prompt = [
 | 
					                        answer = self.input.text(
 | 
				
			||||||
                            inquirer.Text(
 | 
					                            "New name for" f"'{dir_path.name}' file"
 | 
				
			||||||
                                'file_path',
 | 
					                        )
 | 
				
			||||||
                                message="New name for" f"'{dir_path.name}' file",
 | 
					                        file_path = dir_path.parent / answer
 | 
				
			||||||
                            ),
 | 
					 | 
				
			||||||
                        ]
 | 
					 | 
				
			||||||
                        answers = inquirer.prompt(prompt, theme=self.theme)
 | 
					 | 
				
			||||||
                        file_path = dir_path.parent / answers['file_path']
 | 
					 | 
				
			||||||
                    else:
 | 
					                    else:
 | 
				
			||||||
                        file_path = dir_path.parent / (dir_path.name + '_file')
 | 
					                        file_path = dir_path.parent / (dir_path.name + '_file')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1201,6 +1198,7 @@ class Collection(SortMedias):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def edit_metadata(self, paths, keys, loc=None, overwrite=False):
 | 
					    def edit_metadata(self, paths, keys, loc=None, overwrite=False):
 | 
				
			||||||
        """Edit metadata and exif data for given key"""
 | 
					        """Edit metadata and exif data for given key"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if self.db.sqlite.is_empty('metadata'):
 | 
					        if self.db.sqlite.is_empty('metadata'):
 | 
				
			||||||
            self.init(loc)
 | 
					            self.init(loc)
 | 
				
			||||||
        for file_path, media in self.medias.get_medias_datas(paths, loc=loc):
 | 
					        for file_path, media in self.medias.get_medias_datas(paths, loc=loc):
 | 
				
			||||||
@ -1225,17 +1223,13 @@ class Collection(SortMedias):
 | 
				
			|||||||
                    print(f"{key}: '{value}'")
 | 
					                    print(f"{key}: '{value}'")
 | 
				
			||||||
                if overwrite or not value:
 | 
					                if overwrite or not value:
 | 
				
			||||||
                    # Prompt value for given key for file_path
 | 
					                    # Prompt value for given key for file_path
 | 
				
			||||||
                    prompt = [
 | 
					                    answer = self.input.text(key)
 | 
				
			||||||
                        inquirer.Text('value', message=key),
 | 
					                    # Check value
 | 
				
			||||||
                    ]
 | 
					 | 
				
			||||||
                    answer = inquirer.prompt(prompt, theme=self.theme)
 | 
					 | 
				
			||||||
                    # answer = {'value': '03-12-2021 08:12:35'}
 | 
					 | 
				
			||||||
                    # Validate value
 | 
					 | 
				
			||||||
                    if key in ('date_original', 'date_created', 'date_modified'):
 | 
					                    if key in ('date_original', 'date_created', 'date_modified'):
 | 
				
			||||||
                        # Check date format
 | 
					                        # Check date format
 | 
				
			||||||
                        value = media.get_date_format(answer['value'])
 | 
					                        value = media.get_date_format(answer)
 | 
				
			||||||
                    else:
 | 
					                    else:
 | 
				
			||||||
                        value = answer['value']
 | 
					                        value = answer
 | 
				
			||||||
                        while not value.isalnum():
 | 
					                        while not value.isalnum():
 | 
				
			||||||
                            if not value: break
 | 
					                            if not value: break
 | 
				
			||||||
                            print("Invalid entry, use alphanumeric chars")
 | 
					                            print("Invalid entry, use alphanumeric chars")
 | 
				
			||||||
 | 
				
			|||||||
@ -345,11 +345,8 @@ class Media(ReadExif):
 | 
				
			|||||||
            sys.exit()
 | 
					            sys.exit()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if not answers['date_list']:
 | 
					        if not answers['date_list']:
 | 
				
			||||||
            prompt = [
 | 
					            answer = self.prompt.text("date")
 | 
				
			||||||
                inquirer.Text('date_custom', message="date"),
 | 
					            return self.get_date_format(answer)
 | 
				
			||||||
            ]
 | 
					 | 
				
			||||||
            answers = inquirer.prompt(prompt, theme=self.theme)
 | 
					 | 
				
			||||||
            return self.get_date_format(answers['date_custom'])
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return answers['date_list']
 | 
					        return answers['date_list']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -467,17 +464,12 @@ class Media(ReadExif):
 | 
				
			|||||||
                default=f'{album}',
 | 
					                default=f'{album}',
 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
        prompt = [
 | 
					 | 
				
			||||||
            inquirer.Text('custom', message="album"),
 | 
					 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        answers = inquirer.prompt(choices_list, theme=self.theme)
 | 
					        answers = inquirer.prompt(choices_list, theme=self.theme)
 | 
				
			||||||
        if not answers:
 | 
					        if not answers:
 | 
				
			||||||
            sys.exit()
 | 
					            sys.exit()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if not answers['album']:
 | 
					        if not answers['album']:
 | 
				
			||||||
            answers = inquirer.prompt(prompt, theme=self.theme)
 | 
					            return self.input.text("album")
 | 
				
			||||||
            return answers['custom']
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return answers['album']
 | 
					        return answers['album']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,6 @@
 | 
				
			|||||||
import inquirer
 | 
					import inquirer
 | 
				
			||||||
from blessed import Terminal
 | 
					from blessed import Terminal
 | 
				
			||||||
 | 
					from colorama import init,Fore,Style,Back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
term = Terminal()
 | 
					term = Terminal()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -34,6 +35,15 @@ def load_theme():
 | 
				
			|||||||
    return inquirer.themes.load_theme_from_dict(custom_theme)
 | 
					    return inquirer.themes.load_theme_from_dict(custom_theme)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Input():
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __init__(self):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        init()
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					    def text(self, message):
 | 
				
			||||||
 | 
					        return input(f'{Fore.BLUE}[{Fore.YELLOW}?{Fore.BLUE}]{Fore.WHITE} {message}: ')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# def edit_prompt(self, key: str, value: str) -> str:
 | 
					# def edit_prompt(self, key: str, value: str) -> str:
 | 
				
			||||||
#         print(f"Date conflict for file: {self.file_path}")
 | 
					#         print(f"Date conflict for file: {self.file_path}")
 | 
				
			||||||
 | 
				
			|||||||
@ -5,6 +5,7 @@ import pytest
 | 
				
			|||||||
import inquirer
 | 
					import inquirer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from ordigi import cli
 | 
					from ordigi import cli
 | 
				
			||||||
 | 
					from ordigi.request import Input
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CONTENT = "content"
 | 
					CONTENT = "content"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -88,10 +89,10 @@ class TestOrdigi:
 | 
				
			|||||||
            *self.filter_options,
 | 
					            *self.filter_options,
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        def mockreturn(prompt, theme):
 | 
					        def mockreturn(self, message):
 | 
				
			||||||
            return {'value': '03-12-2021 08:12:35'}
 | 
					            return '03-12-2021 08:12:35'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        monkeypatch.setattr(inquirer, 'prompt', mockreturn)
 | 
					        monkeypatch.setattr(Input, 'text', mockreturn)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        args = (
 | 
					        args = (
 | 
				
			||||||
            '--key',
 | 
					            '--key',
 | 
				
			||||||
 | 
				
			|||||||
@ -8,13 +8,14 @@ import inquirer
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
from ordigi import LOG
 | 
					from ordigi import LOG
 | 
				
			||||||
from ordigi import constants
 | 
					from ordigi import constants
 | 
				
			||||||
 | 
					from ordigi import utils
 | 
				
			||||||
 | 
					from ordigi.summary import Summary
 | 
				
			||||||
from ordigi.collection import Collection, FPath, Paths
 | 
					from ordigi.collection import Collection, FPath, Paths
 | 
				
			||||||
from ordigi.exiftool import ExifTool, ExifToolCaching, exiftool_is_running, terminate_exiftool
 | 
					from ordigi.exiftool import ExifTool, ExifToolCaching, exiftool_is_running, terminate_exiftool
 | 
				
			||||||
from ordigi.geolocation import GeoLocation
 | 
					from ordigi.geolocation import GeoLocation
 | 
				
			||||||
from ordigi.media import Media, ReadExif
 | 
					from ordigi.media import Media, ReadExif
 | 
				
			||||||
from ordigi import utils
 | 
					from ordigi.request import Input
 | 
				
			||||||
from .conftest import randomize_files, randomize_db
 | 
					from .conftest import randomize_files, randomize_db
 | 
				
			||||||
from ordigi.summary import Summary
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
LOG.setLevel(10)
 | 
					LOG.setLevel(10)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -257,10 +258,10 @@ class TestCollection:
 | 
				
			|||||||
        shutil.copytree(self.src_path, path)
 | 
					        shutil.copytree(self.src_path, path)
 | 
				
			||||||
        collection = Collection(path, {'cache': False})
 | 
					        collection = Collection(path, {'cache': False})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        def mockreturn(prompt, theme):
 | 
					        def mockreturn(self, message):
 | 
				
			||||||
            return {'value': '03-12-2021 08:12:35'}
 | 
					            return '03-12-2021 08:12:35'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        monkeypatch.setattr(inquirer, 'prompt', mockreturn)
 | 
					        monkeypatch.setattr(Input, 'text', mockreturn)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        collection.edit_metadata({path}, {'date_original'}, overwrite=True)
 | 
					        collection.edit_metadata({path}, {'date_original'}, overwrite=True)
 | 
				
			||||||
        # check if db value is set
 | 
					        # check if db value is set
 | 
				
			||||||
@ -278,10 +279,10 @@ class TestCollection:
 | 
				
			|||||||
        collection = Collection(path, {'cache': False})
 | 
					        collection = Collection(path, {'cache': False})
 | 
				
			||||||
        loc = GeoLocation()
 | 
					        loc = GeoLocation()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        def mockreturn(prompt, theme):
 | 
					        def mockreturn(self, message):
 | 
				
			||||||
            return {'value': 'lyon'}
 | 
					            return 'lyon'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        monkeypatch.setattr(inquirer, 'prompt', mockreturn)
 | 
					        monkeypatch.setattr(Input, 'text', mockreturn)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        collection.edit_metadata({path}, {'location'}, loc, True)
 | 
					        collection.edit_metadata({path}, {'location'}, loc, True)
 | 
				
			||||||
        # check if db value is set
 | 
					        # check if db value is set
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user