Ignore:
Timestamp:
Dec 14, 2012 12:50:24 PM (12 years ago)
Author:
Jae Cho <jhjcho@…>
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
Message:

merging from the release 2.2.0

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sansguiframe/src/sans/guiframe/CategoryInstaller.py

    rdad7cef r657e52c  
    123123         
    124124    @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): 
    127126        """ 
    128127        the main method of this class 
     
    130129        compile it and install 
    131130        :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 
    136132        """ 
    137         model_list = [] 
     133        #model_list = [] 
     134        default_file = CategoryInstaller.get_default_file() 
    138135        serialized_file = None 
     136        master_category_dict = defaultdict(list) 
    139137        if homedir == None: 
    140138            serialized_file = CategoryInstaller.get_user_file() 
    141139        else: 
    142140            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 
    150180         
    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 installed 
    164         # model folder but not in models.py . the excess 
    165         # hard coded ones on the end come from them being 
    166         # present in models.py but not actual models, eg 
    167         # TwoLorenzianModel contains the string 'Lorenzian' 
    168         # but we don't actually want to include Lorenzian 
    169         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 stuff 
    185         default_file = None 
    186         if defaultfile == None: 
    187             default_file = CategoryInstaller.get_default_file() 
    188         else: 
    189             default_file = defaultfile 
    190  
    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] = True 
    202  
    203                 # remove any stray models from categorization  
    204                 # that aren't stored anymore 
    205  
    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.