def update_tcms_from_save(self, json_data, save_counter): # Check save_counter vs queued_save_counters. queued_save_counter = get_cache_raw(self.QUEUED_TCM_SAVE_COUNTER_KEY, None) if not queued_save_counter or save_counter > queued_save_counter: if not get_cache_state(self.UPDATING_TCMS_KEY, None): set_cache_state(self.UPDATING_TCMS_KEY, True) for d in json.loads(json_data): tcm = TableColumnMapping.objects.get(pk=d["pk"]) for field_name in TableColumnMapping.fields_to_save: if not field_name == "pk": setattr(tcm, field_name, d[field_name]) tcm.was_a_human_decision = True tcm.save() if get_cache_raw(self.QUEUED_TCM_SAVE_COUNTER_KEY, False) is not False: queued_data = get_cache_raw(self.QUEUED_TCM_DATA_KEY) queued_time = get_cache_raw( self.QUEUED_TCM_SAVE_COUNTER_KEY) delete_cache(self.QUEUED_TCM_DATA_KEY) delete_cache(self.QUEUED_TCM_SAVE_COUNTER_KEY) delete_cache(self.UPDATING_TCMS_KEY) self.update_tcms_from_save(queued_data, queued_time) delete_cache(self.UPDATING_TCMS_KEY) delete_cache(self.QUEUED_TCM_DATA_KEY) delete_cache(self.QUEUED_TCM_SAVE_COUNTER_KEY) return True else: set_cache_raw(self.QUEUED_TCM_SAVE_COUNTER_KEY, save_counter) set_cache_raw(self.QUEUED_TCM_DATA_KEY, json_data) return False
def update_tcms_from_save(self, json_data, save_counter): # Check save_counter vs queued_save_counters. queued_save_counter = get_cache_raw(self.QUEUED_TCM_SAVE_COUNTER_KEY, None) if not queued_save_counter or save_counter > queued_save_counter: if not get_cache_state(self.UPDATING_TCMS_KEY, None): set_cache_state(self.UPDATING_TCMS_KEY, True) for d in json.loads(json_data): tcm = TableColumnMapping.objects.get(pk=d["pk"]) for field_name in TableColumnMapping.fields_to_save: if not field_name == "pk": setattr(tcm, field_name, d[field_name]) tcm.was_a_human_decision = True tcm.save() if get_cache_raw(self.QUEUED_TCM_SAVE_COUNTER_KEY, False) is not False: queued_data = get_cache_raw(self.QUEUED_TCM_DATA_KEY) queued_time = get_cache_raw(self.QUEUED_TCM_SAVE_COUNTER_KEY) delete_cache(self.QUEUED_TCM_DATA_KEY) delete_cache(self.QUEUED_TCM_SAVE_COUNTER_KEY) delete_cache(self.UPDATING_TCMS_KEY) self.update_tcms_from_save(queued_data, queued_time) delete_cache(self.UPDATING_TCMS_KEY) delete_cache(self.QUEUED_TCM_DATA_KEY) delete_cache(self.QUEUED_TCM_SAVE_COUNTER_KEY) return True else: set_cache_raw(self.QUEUED_TCM_SAVE_COUNTER_KEY, save_counter) set_cache_raw(self.QUEUED_TCM_DATA_KEY, json_data) return False