]> kaliko git repositories - mpd-sima.git/blobdiff - sima/utils/config.py
Update file access controls
[mpd-sima.git] / sima / utils / config.py
index 488eec15a1144c2a53f9711d54f6f8137c6d2b71..854d6df9cb36adc8213354b1e3b0386a4d45fc80 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
 # -*- coding: utf-8 -*-
-# Copyright (c) 2009, 2010, 2011, 2013, 2014, 2015, 2019 Jack Kaliko <kaliko@azylum.org>
+# Copyright (c) 2009-2015, 2019-2021 kaliko <kaliko@azylum.org>
 # Copyright (c) 2019 sacha <sachahony@gmail.com>
 #
 #  This file is part of sima
 # Copyright (c) 2019 sacha <sachahony@gmail.com>
 #
 #  This file is part of sima
@@ -49,14 +49,14 @@ DEFAULT_CONF = {
         'sima': {
             'internal': "Crop, Lastfm, Random",
             'contrib': "",
         'sima': {
             'internal': "Crop, Lastfm, Random",
             'contrib': "",
-            'user_db': "false",
+            'user_db': False,
             'history_duration': 8,
             'queue_length': 2,
             'var_dir': 'empty',
             'history_duration': 8,
             'queue_length': 2,
             'var_dir': 'empty',
-            'musicbrainzid': "true",
-            'repeat_disable_queue': "true",
-            'single_disable_queue': "true",
-            'mopidy_compat': "false",
+            'musicbrainzid': True,
+            'repeat_disable_queue': True,
+            'single_disable_queue': True,
+            'mopidy_compat': False,
             },
         'daemon': {
             'daemon': False,
             },
         'daemon': {
             'daemon': False,
@@ -73,7 +73,7 @@ DEFAULT_CONF = {
         'lastfm': {
             'queue_mode': "track",  # TODO control values
             'max_art': 10,
         'lastfm': {
             'queue_mode': "track",  # TODO control values
             'max_art': 10,
-            'single_album': "false",
+            'single_album': False,
             'track_to_add': 1,
             'album_to_add': 1,
             'shuffle_album': False,
             'track_to_add': 1,
             'album_to_add': 1,
             'shuffle_album': False,
@@ -87,11 +87,31 @@ DEFAULT_CONF = {
             'track_to_add': 1,
             'priority': 50,
             },
             'track_to_add': 1,
             'priority': 50,
             },
+        'tags': {
+            'comment': "",
+            'date': "",
+            'genre': "",
+            'label': "",
+            'originaldate': "",
+            'filter': "",
+            'queue_mode': "track",
+            'single_album': False,
+            'track_to_add': 1,
+            'album_to_add': 1,
+            'priority': 80,
+            },
+        'genre': {
+            'queue_mode': "track",
+            'single_album': False,
+            'track_to_add': 1,
+            'album_to_add': 1,
+            'priority': 80,
+            },
         }
 #
 
 
         }
 #
 
 
-class ConfMan(object):  # CONFIG MANAGER CLASS
+class ConfMan:  # CONFIG MANAGER CLASS
     """
     Configuration manager.
     Default configuration is stored in DEFAULT_CONF dictionnary.
     """
     Configuration manager.
     Default configuration is stored in DEFAULT_CONF dictionnary.
@@ -122,15 +142,15 @@ class ConfMan(object):  # CONFIG MANAGER CLASS
         ## INIT CALLS
         self.init_config()
         self.supersedes_config_with_cmd_line_options()
         ## INIT CALLS
         self.init_config()
         self.supersedes_config_with_cmd_line_options()
-        # Controls files access
-        self.control_facc()
         # set dbfile
         self.config['sima']['db_file'] = join(self.config['sima']['var_dir'], 'sima.db')
         # set dbfile
         self.config['sima']['db_file'] = join(self.config['sima']['var_dir'], 'sima.db')
+        # Controls files access
+        self.control_facc()
 
         # Create directories
         data_dir = self.config['sima']['var_dir']
         if not isdir(data_dir):
 
         # Create directories
         data_dir = self.config['sima']['var_dir']
         if not isdir(data_dir):
-            self.log.trace('Creating "{}"'.format(data_dir))
+            self.log.trace('Creating "%s"', data_dir)
             makedirs(data_dir)
             chmod(data_dir, 0o700)
 
             makedirs(data_dir)
             chmod(data_dir, 0o700)
 
@@ -138,11 +158,12 @@ class ConfMan(object):  # CONFIG MANAGER CLASS
         """Controls file access.
         This is relevant only for file provided through the configuration file
         since files provided on the command line are already checked with
         """Controls file access.
         This is relevant only for file provided through the configuration file
         since files provided on the command line are already checked with
-        argparse.
+        argparse. Also add config['sima']['db_file'] contructed here in init
         """
         ok = True
         for op, ftochk in [('logfile', self.config.get('log', 'logfile')),
         """
         ok = True
         for op, ftochk in [('logfile', self.config.get('log', 'logfile')),
-                           ('pidfile', self.config.get('daemon', 'pidfile')),]:
+                           ('pidfile', self.config.get('daemon', 'pidfile')),
+                           ('db file', self.config.get('sima', 'db_file'))]:
             if not ftochk:
                 continue
             if isdir(ftochk):
             if not ftochk:
                 continue
             if isdir(ftochk):
@@ -159,8 +180,6 @@ class ConfMan(object):  # CONFIG MANAGER CLASS
                     self.log.critical('no write access to "%s" (%s)', ftochk, op)
                     ok = False
         if not ok:
                     self.log.critical('no write access to "%s" (%s)', ftochk, op)
                     ok = False
         if not ok:
-            if exists(self.conf_file):
-                self.log.warning('Try to check the configuration file: %s', self.conf_file)
             sys.exit(2)
 
     def control_mod(self):
             sys.exit(2)
 
     def control_mod(self):
@@ -185,7 +204,6 @@ class ConfMan(object):  # CONFIG MANAGER CLASS
         # honor MPD_HOST format as in mpc(1)  for command line option --host
         if self.startopt.get('host'):
             if '@' in self.startopt.get('host'):
         # honor MPD_HOST format as in mpc(1)  for command line option --host
         if self.startopt.get('host'):
             if '@' in self.startopt.get('host'):
-                print(self.startopt.get('host').split('@'))
                 passwd, host = self.startopt.get('host').split('@')
                 self.config.set('MPD', 'password', passwd)
                 self.config.set('MPD', 'host', host)
                 passwd, host = self.startopt.get('host').split('@')
                 self.config.set('MPD', 'password', passwd)
                 self.config.set('MPD', 'host', host)
@@ -226,6 +244,7 @@ class ConfMan(object):  # CONFIG MANAGER CLASS
             pass
         elif environ.get('XDG_CONFIG_HOME'):
             conf_dir = join(environ.get('XDG_CONFIG_HOME'), DIRNAME)
             pass
         elif environ.get('XDG_CONFIG_HOME'):
             conf_dir = join(environ.get('XDG_CONFIG_HOME'), DIRNAME)
+            self.conf_file = join(conf_dir, CONF_FILE)
         elif homedir and isdir(homedir) and homedir not in ['/']:
             conf_dir = join(homedir, '.config', DIRNAME)
             self.conf_file = join(conf_dir, CONF_FILE)
         elif homedir and isdir(homedir) and homedir not in ['/']:
             conf_dir = join(homedir, '.config', DIRNAME)
             self.conf_file = join(conf_dir, CONF_FILE)
@@ -234,7 +253,7 @@ class ConfMan(object):  # CONFIG MANAGER CLASS
             self.log.critical('Please use "--config" to locate the conf file')
             sys.exit(1)
 
             self.log.critical('Please use "--config" to locate the conf file')
             sys.exit(1)
 
-        ## Sima sqlite DB
+        # Sima sqlite DB
         self.config['sima']['var_dir'] = join(data_dir)
 
         # If no conf file present, uses defaults
         self.config['sima']['var_dir'] = join(data_dir)
 
         # If no conf file present, uses defaults