directories first in browser

This commit is contained in:
Dima Goltsman 2017-10-15 23:43:21 +03:00
parent 1017da3839
commit 07d8120d35
3 changed files with 17 additions and 3 deletions

View file

@ -63,6 +63,8 @@ Set this variable to `True` to enable Git integration. This feature requires [Gi
to be installed on the system that is running the configurator. For thechnical reasons this feature can't be enabled with a static configuration file. to be installed on the system that is running the configurator. For thechnical reasons this feature can't be enabled with a static configuration file.
To push local commits to a remote repository, you have to add the remote manually: `git remote add origin ssh://somehost:/user/repo.git` To push local commits to a remote repository, you have to add the remote manually: `git remote add origin ssh://somehost:/user/repo.git`
Verify, that the user that is running the configurator is allowed to push without any interaction (by using SSH PubKey authentication for example). Verify, that the user that is running the configurator is allowed to push without any interaction (by using SSH PubKey authentication for example).
#### DIRSFIRST (bool)
if set to `true`, directories will be displayed at the top
__Note regarding `ALLOWED_NETWORKS`, `BANNED_IPS` and `BANLIMIT`__: __Note regarding `ALLOWED_NETWORKS`, `BANNED_IPS` and `BANLIMIT`__:
The way this is implemented works in the following order: The way this is implemented works in the following order:

View file

@ -53,6 +53,8 @@ GIT = False
# Files to ignore in the UI. A good example list that cleans up the UI is # Files to ignore in the UI. A good example list that cleans up the UI is
# [".*", "*.log", "deps", "icloud", "*.conf", "*.json", "certs", "__pycache__"] # [".*", "*.log", "deps", "icloud", "*.conf", "*.json", "certs", "__pycache__"]
IGNORE_PATTERN = [] IGNORE_PATTERN = []
# if DIRSFIRST is set to `true`, directories will be displayed at the top
DIRSFIRST = False
### End of options ### End of options
LOGLEVEL = logging.INFO LOGLEVEL = logging.INFO
@ -2732,7 +2734,7 @@ def signal_handler(sig, frame):
def load_settings(settingsfile): def load_settings(settingsfile):
global LISTENIP, LISTENPORT, BASEPATH, SSL_CERTIFICATE, SSL_KEY, HASS_API, \ global LISTENIP, LISTENPORT, BASEPATH, SSL_CERTIFICATE, SSL_KEY, HASS_API, \
HASS_API_PASSWORD, CREDENTIALS, ALLOWED_NETWORKS, BANNED_IPS, BANLIMIT, DEV, \ HASS_API_PASSWORD, CREDENTIALS, ALLOWED_NETWORKS, BANNED_IPS, BANLIMIT, DEV, \
IGNORE_PATTERN IGNORE_PATTERN, DIRSFIRST
try: try:
if os.path.isfile(settingsfile): if os.path.isfile(settingsfile):
with open(settingsfile) as fptr: with open(settingsfile) as fptr:
@ -2750,6 +2752,7 @@ def load_settings(settingsfile):
BANLIMIT = settings.get("BANLIMIT", BANLIMIT) BANLIMIT = settings.get("BANLIMIT", BANLIMIT)
DEV = settings.get("DEV", DEV) DEV = settings.get("DEV", DEV)
IGNORE_PATTERN = settings.get("IGNORE_PATTERN", IGNORE_PATTERN) IGNORE_PATTERN = settings.get("IGNORE_PATTERN", IGNORE_PATTERN)
DIRSFIRST = settings.get("DIRSFIRST", DIRSFIRST)
except Exception as err: except Exception as err:
LOG.warning(err) LOG.warning(err)
LOG.warning("Not loading static settings") LOG.warning("Not loading static settings")
@ -2776,7 +2779,15 @@ def get_dircontent(path, repo=None):
staged = {} staged = {}
unstaged = {} unstaged = {}
for elem in sorted(os.listdir(path), key=lambda x: x.lower()): def sorted_file_list():
dirlist = [x for x in os.listdir(path) if os.path.isdir(os.path.join(path, x))]
filelist = [x for x in os.listdir(path) if not os.path.isdir(os.path.join(path, x))]
if DIRSFIRST:
return sorted(dirlist, key=lambda x: x.lower()) + sorted(filelist, key=lambda x: x.lower())
else:
return sorted(dirlist + filelist, key=lambda x: x.lower())
for elem in sorted_file_list():
edata = {} edata = {}
edata['name'] = elem edata['name'] = elem
edata['dir'] = path edata['dir'] = path

View file

@ -10,5 +10,6 @@
"ALLOWED_NETWORKS": [], "ALLOWED_NETWORKS": [],
"BANNED_IPS": [], "BANNED_IPS": [],
"BANLIMIT": 0, "BANLIMIT": 0,
"IGNORE_PATTERN": [] "IGNORE_PATTERN": [],
"DIRSFIRST": false
} }