diff --git a/Code/Mantid/scripts/Inelastic/Direct/ISISDirecInelasticConfig.py b/Code/Mantid/scripts/Inelastic/Direct/ISISDirecInelasticConfig.py index 9bffe08d63d2..2ac4f3b5b7db 100644 --- a/Code/Mantid/scripts/Inelastic/Direct/ISISDirecInelasticConfig.py +++ b/Code/Mantid/scripts/Inelastic/Direct/ISISDirecInelasticConfig.py @@ -4,6 +4,7 @@ import re import copy from datetime import date +import time # the list of instruments this configuration is applicable to INELASTIC_INSTRUMENTS = ['MAPS','LET','MERLIN','MARI','HET'] @@ -207,34 +208,26 @@ def config_need_replacing(self,config_file_name): # def script_need_replacing(self,source_script_name,target_script_name): """Method specifies conditions when existing reduction file should be replaced - by sample file + by a sample file. """ if self._force_change_script: return True - # missing file should always be replaced + # non-existing file should always be replaced if not os.path.isfile(target_script_name): return True - # if user already started -- do not replace his config - #except when changes are forced - now_is = date.today() + #Always replace sample file if it has not been touched start_date = self._user.get_start_date() - if now_is >start_date: - return False - # - time_targ = os.path.getmtime(target_script_name) - - time_source = os.path.getmtime(source_script_name) - # we may want better granularity in a future -# source_mod_date = date.fromtimestamp(time_source) -# targ_mod_date = date.fromtimestamp(time_targ) - if time_targ < time_source: + # this time is set up to the file, copied from the repository + sample_file_time = time.mktime(start_date.timetuple()) + targ_file_time = os.path.getmtime(target_script_name) + if sample_file_time == targ_file_time: return True - else: + else: # somebody have modified the target file. Leave it alone return False # def copy_reduction_sample(self,InstrName,CycleID,rb_folder): - """ Method copies sample reduction script from user script repository - to user folder. + """Method copies sample reduction script from user script repository + to user folder. """ source_file = self._sample_reduction_file(InstrName) @@ -254,8 +247,13 @@ def copy_reduction_sample(self,InstrName,CycleID,rb_folder): os.remove(full_target) shutil.copyfile(full_source,full_target) os.chmod(full_target,0777) + if platform.system() != 'Windows': os.system('chown '+self._fedid+':'+self._fedid+' '+full_target) + # Set up the file creation and modification dates to the users start date + start_date = self._user.get_start_date() + file_time = time.mktime(start_date.timetuple()) + os.utime(full_target,(file_time,file_time)) def get_data_folder_name(self,instr,cycle_ID): diff --git a/Code/Mantid/scripts/test/ISISDirecInelasticConfigTest.py b/Code/Mantid/scripts/test/ISISDirecInelasticConfigTest.py index b0bc01897dee..a05404a48040 100644 --- a/Code/Mantid/scripts/test/ISISDirecInelasticConfigTest.py +++ b/Code/Mantid/scripts/test/ISISDirecInelasticConfigTest.py @@ -227,7 +227,7 @@ def test_build_3Experiments_config(self): os.makedirs(user1RootDir) # user1 = UserProperties() - user1.set_user_properties('MARI','39990124','CYCLE39991',rbdir2) + user1.set_user_properties('MARI','20990124','CYCLE20991',rbdir2) mcf.init_user(user1ID,user1) source_file = self.makeFakeSourceReductionFile(mcf) @@ -247,11 +247,14 @@ def test_build_3Experiments_config(self): target_file = mcf._target_reduction_file(instr,cycle_id) full_target_file = os.path.join(full_rb_path,target_file) self.assertTrue(os.path.exists(full_target_file)) - # target file does not need replacing + # Fresh target file should always be replaced + self.assertTrue(mcf.script_need_replacing(source_file,full_target_file)) + # modify target file access time: + access_time = os.path.getmtime(full_target_file) + now = time.time() + os.utime(full_target_file,(access_time ,now)) + # should not replace modified target file self.assertFalse(mcf.script_need_replacing(source_file,full_target_file)) - # make new fake configuration file - new_source = self.makeFakeSourceReductionFile(mcf,'New') - self.assertTrue(mcf.script_need_replacing(new_source,full_target_file)) #-------------------------------------------------------------------- # clean up