Skip to content
Permalink
Browse files

Add configuration to optionally capitalize file names (#313)

This commit adds a `capitalization` field under `[File]` in `config.ini` which allows file names to be capitalized.
  • Loading branch information...
muff1nman authored and jmathai committed Jun 12, 2019
1 parent 23e3b45 commit 92605764f8eec3972c9ec4583579ad8d39bdd8c0
Showing with 74 additions and 3 deletions.
  1. +5 −2 Readme.md
  2. +6 −1 elodie/filesystem.py
  3. +63 −0 elodie/tests/filesystem_test.py
@@ -260,15 +260,18 @@ You can configure how Elodie names your files using placeholders. This works sim

If you'd like to specify your own naming convention it's recommended you include something that's mostly unique like the time including seconds. You'll need to include a `[File]` section in your `config.ini` file with a name attribute. If a placeholder doesn't have a value then it plus any preceding characters which are not alphabetic are removed.

By default the resulting filename is all lowercased. To change this behavior to upppercasing add capitalization=upper.

```
[File]
date=%Y-%m-%b-%H-%M-%S
name=%date-%original_name-%title.jpg
# -> 2012-05-Mar-12-59-30-dsc_1234-my-title.jpg
# -> 2012-05-mar-12-59-30-dsc_1234-my-title.jpg
date=%Y-%m-%b-%H-%M-%S
name=%date-%original_name-%album.jpg
# -> 2012-05-Mar-12-59-30-dsc_1234-my-album.jpg
capitalization=uppper
# -> 2012-05-MAR-12-59-30-DSC_1234-MY-ALBUM.JPG
```

### Reorganize by changing location and dates
@@ -211,7 +211,12 @@ def get_file_name(self, media):
name,
)

return name.lower()
config = load_config()

if('File' in config and 'capitalization' in config['File'] and config['File']['capitalization'] == 'upper'):
return name.upper()
else:
return name.lower()

def get_file_name_definition(self):
"""Returns a list of folder definitions.
@@ -299,6 +299,69 @@ def test_get_file_name_custom_with_empty_value():

assert file_name == helper.path_tz_fix('2015-12-05-plain.jpg'), file_name

@mock.patch('elodie.config.config_file', '%s/config.ini-filename-custom-with-lowercase' % gettempdir())
def test_get_file_name_custom_with_lower_capitalization():
with open('%s/config.ini-filename-custom-with-lowercase' % gettempdir(), 'w') as f:
f.write("""
[File]
date=%Y-%m-%d
name=%date-%original_name-%title.%extension
capitalization=lower
""")
if hasattr(load_config, 'config'):
del load_config.config

filesystem = FileSystem()
media = Photo(helper.get_file('plain.jpg'))
file_name = filesystem.get_file_name(media)

if hasattr(load_config, 'config'):
del load_config.config

assert file_name == helper.path_tz_fix('2015-12-05-plain.jpg'), file_name

@mock.patch('elodie.config.config_file', '%s/config.ini-filename-custom-with-invalidcase' % gettempdir())
def test_get_file_name_custom_with_invalid_capitalization():
with open('%s/config.ini-filename-custom-with-invalidcase' % gettempdir(), 'w') as f:
f.write("""
[File]
date=%Y-%m-%d
name=%date-%original_name-%title.%extension
capitalization=garabage
""")
if hasattr(load_config, 'config'):
del load_config.config

filesystem = FileSystem()
media = Photo(helper.get_file('plain.jpg'))
file_name = filesystem.get_file_name(media)

if hasattr(load_config, 'config'):
del load_config.config

assert file_name == helper.path_tz_fix('2015-12-05-plain.jpg'), file_name

@mock.patch('elodie.config.config_file', '%s/config.ini-filename-custom-with-uppercase' % gettempdir())
def test_get_file_name_custom_with_upper_capitalization():
with open('%s/config.ini-filename-custom-with-uppercase' % gettempdir(), 'w') as f:
f.write("""
[File]
date=%Y-%m-%d
name=%date-%original_name-%title.%extension
capitalization=upper
""")
if hasattr(load_config, 'config'):
del load_config.config

filesystem = FileSystem()
media = Photo(helper.get_file('plain.jpg'))
file_name = filesystem.get_file_name(media)

if hasattr(load_config, 'config'):
del load_config.config

assert file_name == helper.path_tz_fix('2015-12-05-PLAIN.JPG'), file_name

def test_get_folder_path_plain():
filesystem = FileSystem()
media = Photo(helper.get_file('plain.jpg'))

0 comments on commit 9260576

Please sign in to comment.
You can’t perform that action at this time.