source: sasview/src/sas/sasgui/guiframe/customdir.py @ 92583049

Last change on this file since 92583049 was 92583049, checked in by wojciech, 8 years ago

Adding back-compatibility support if SAS_OPENCL is not set in config_file

  • Property mode set to 100644
File size: 2.0 KB
Line 
1# Setup and find Custom config dir
2import os.path
3import shutil
4
5CONF_DIR = 'config' 
6APPLICATION_NAME = 'sasview'
7
8def _find_usersasview_dir():
9    """
10    Find and return user/.sasview dir
11    """
12    return os.path.join(os.path.expanduser("~"), ("." + APPLICATION_NAME))
13
14def _find_customconf_dir():
15    """
16    Find path of the config directory.
17    The plugin directory is located in the user's home directory.
18    """
19    u_dir = _find_usersasview_dir()
20    return os.path.join(u_dir, CONF_DIR)
21
22def _setup_conf_dir(path):
23    """
24    Setup the custom config dir and cat file
25    """
26    conf_dir = _find_customconf_dir()
27    # If the plugin directory doesn't exist, create it
28    if not os.path.isdir(conf_dir):
29        os.makedirs(conf_dir)
30    config_file = os.path.join(conf_dir, "custom_config.py")
31
32    # Place example user models as needed
33    try:
34        if not os.path.isfile(config_file):
35            shutil.copyfile(os.path.join(path, "custom_config.py"), config_file)
36
37        #Adding SAS_OPENCL if it doesn't exist in the config file
38        # - to support backcompability
39        if not "SAS_OPENCL" in open(config_file).read():
40            open(config_file,"a+").write("SAS_OPENCL = \"None\"\n")
41    except:
42        # Check for data path next to exe/zip file.
43        #Look for maximum n_dir up of the current dir to find plugins dir
44        n_dir = 12
45        is_dir = False
46        f_dir = path
47        for i in range(n_dir):
48            if i > 1:
49                f_dir, _ = os.path.split(f_dir)
50            temp_path = os.path.join(f_dir, "custom_config.py")
51            if os.path.isfile(temp_path):
52                shutil.copyfile(temp_path, config_file)
53                is_dir = True
54                break
55        if not is_dir:
56            raise
57    return conf_dir
58
59
60class SetupCustom(object):
61    """
62    implement custom config dir
63    """
64    def find_dir(self):
65        return _find_customconf_dir()
66   
67    def setup_dir(self, path):
68        return _setup_conf_dir(path)
Note: See TracBrowser for help on using the repository browser.