Changeset 657e52c in sasview for sansguiframe/src/sans/guiframe/CategoryInstaller.py
- Timestamp:
- Dec 14, 2012 12:50:24 PM (12 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- 0203ade
- Parents:
- aa01d07b
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sansguiframe/src/sans/guiframe/CategoryInstaller.py
rdad7cef r657e52c 123 123 124 124 @staticmethod 125 def check_install(homedir = None, defaultfile = None, 126 modelsdir = None, installed_models_dir = None): 125 def check_install(homedir = None, model_list=None): 127 126 """ 128 127 the main method of this class … … 130 129 compile it and install 131 130 :param homefile: Override the default home directory 132 :param defaultfile: Override the default file location 133 :param modelsfile: The file where models.py lives. This 134 MUST be overwritten in setup.py 135 :param installed_models_dir: Where installed_models.txt is to go: 131 :param model_list: List of model names except customized models 136 132 """ 137 model_list = [] 133 #model_list = [] 134 default_file = CategoryInstaller.get_default_file() 138 135 serialized_file = None 136 master_category_dict = defaultdict(list) 139 137 if homedir == None: 140 138 serialized_file = CategoryInstaller.get_user_file() 141 139 else: 142 140 serialized_file = os.path.join(homedir, USER_FILE) 143 144 if os.path.exists(serialized_file): 145 return 146 147 if installed_models_dir == None: 148 installed_models_dir = \ 149 CategoryInstaller._get_installed_model_dir() 141 if os.path.isfile(serialized_file): 142 cat_file = open(serialized_file, 'rb') 143 else: 144 cat_file = open(default_file, 'rb') 145 master_category_dict = pickle.Unpickler(cat_file).load() 146 (by_model_dict, model_enabled_dict) = \ 147 CategoryInstaller._regenerate_model_dict(master_category_dict) 148 cat_file.close() 149 add_list = model_list 150 del_name = False 151 for cat in master_category_dict.keys(): 152 for ind in range(len(master_category_dict[cat])): 153 model_name, enabled = master_category_dict[cat][ind] 154 if model_name not in model_list: 155 del_name = True 156 try: 157 by_model_dict.pop(model_name) 158 model_enabled_dict.pop(model_name) 159 except: 160 pass 161 else: 162 add_list.remove(model_name) 163 if del_name or (len(add_list) > 0): 164 for model in add_list: 165 model_enabled_dict[model]= True 166 by_model_dict[model].append('Uncategorized') 167 168 master_category_dict = \ 169 CategoryInstaller._regenerate_master_dict(by_model_dict, 170 model_enabled_dict) 171 172 pickle.dump( master_category_dict, 173 open(serialized_file, 'wb') ) 174 175 try: 176 #It happens only in source environment 177 shutil.copyfile(serialized_file, default_file) 178 except: 179 pass 150 180 151 installed_model_file = open(152 os.path.join(installed_models_dir,153 "installed_models.txt"), 'w')154 155 if modelsdir == None:156 modelsdir = CategoryInstaller._get_models_py_dir()157 python_model_file = open(os.path.join(modelsdir,158 "models.py"),159 'r')160 161 python_models = python_model_file.read()162 163 # we remove models that appear in the installed164 # model folder but not in models.py . the excess165 # hard coded ones on the end come from them being166 # present in models.py but not actual models, eg167 # TwoLorenzianModel contains the string 'Lorenzian'168 # but we don't actually want to include Lorenzian169 model_list = [mod for mod in model_list if \170 mod in python_models and \171 not 'init' in mod and \172 not 'BaseComponent' in mod \173 and not 'MultiplicationModel' in mod \174 and not 'pluginmodel' in mod \175 and mod != 'PowerLawModel' \176 and mod != 'Lorentzian']177 178 179 for mod in model_list:180 installed_model_file.write(mod + '\n')181 182 installed_model_file.close()183 184 # start sorting category stuff185 default_file = None186 if defaultfile == None:187 default_file = CategoryInstaller.get_default_file()188 else:189 default_file = defaultfile190 191 master_category_dict = pickle.load(open(default_file, 'rb'))192 193 (by_model_dict, model_enabled_dict) = \194 CategoryInstaller._regenerate_model_dict(master_category_dict)195 196 197 for found_model in model_list:198 if not found_model in by_model_dict:199 print found_model + ' : ' + str(by_model_dict[found_model])200 by_model_dict[found_model].append("Uncategorized")201 model_enabled_dict[found_model] = True202 203 # remove any stray models from categorization204 # that aren't stored anymore205 206 models_to_delete = []207 for model in by_model_dict:208 if not model in model_list:209 models_to_delete.append(model)210 211 for model in models_to_delete:212 by_model_dict.pop(model)213 214 master_category_dict = \215 CategoryInstaller._regenerate_master_dict(by_model_dict,216 model_enabled_dict)217 218 pickle.dump( master_category_dict,219 open(default_file, 'wb') )220 221 #shutil.copyfile(default_file, serialized_file)
Note: See TracChangeset
for help on using the changeset viewer.