def test_log_model(self): with isolate_lru_cache(get_log_model): self.assertIs(get_log_model(), SwappableLogModel) other_model = OtherModel.objects.create(char_field='other') initial_count = SwappableLogModel.objects.count() TestModel.objects.create(char_field='test', fk_field=other_model) sl = SwappableLogModel.objects.latest('pk') self.assertEqual(SwappableLogModel.objects.count(), initial_count + 1) self.assertDictEqual( sl.new, { 'char_field': { 'label': 'Char field', 'value': 'test' }, 'fk_field': { 'label': 'Fk field', 'value': { 'db': other_model.pk, 'repr': force_text(other_model), } }, 'm2m_field': { 'label': 'M2m field', 'value': [] }, 'choice_field': { 'label': 'Choice field', 'value': { 'db': TestModel.ONE, 'repr': 'One' } } })
def get_simple_log_admin_model(self, model=None, object_id=None): simple_log_model = get_log_model() model_admin = admin.site._registry.get(simple_log_model, SimpleLogModelAdmin) return model_admin.__class__(simple_log_model, self.admin_site, self.history_change_list_template, model, object_id)
def log_post_delete(sender, instance, **kwargs): if get_thread_variable('disable_logging'): return SimpleLog = get_log_model() instance._log = SimpleLog.log(instance, action_flag=SimpleLog.DELETE, old=instance._old_values, new=None)
def log_post_save(sender, instance, created, **kwargs): if get_thread_variable('disable_logging'): return if not hasattr(instance, '_log'): SimpleLog = get_log_model() instance._log = SimpleLog.log( instance, action_flag=SimpleLog.ADD if created else SimpleLog.CHANGE, commit=False)
def log_post_save_handler(sender, instance, created, **kwargs): if not is_log_needed(instance, kwargs.get('raw')): return log_model = get_log_model() log_model.log( instance=instance, action_flag=log_model.ADD if created else log_model.CHANGE, commit=False, using=kwargs.get('using'), )
def log_pre_delete_handler(sender, instance, **kwargs): if not is_log_needed(instance, kwargs.get('raw')): return log_model = get_log_model() log_model.set_initial(instance) log_model.log( instance=instance, action_flag=log_model.DELETE, commit=False, object_repr=get_obj_repr(instance), using=kwargs.get('using'), )
def log_m2m_change(sender, instance, action, **kwargs): if get_thread_variable('disable_logging'): return SimpleLog = get_log_model() if action in ('pre_add', 'pre_remove', 'pre_clear'): SimpleLog.set_initial(instance) if action in ('post_add', 'post_remove', 'post_clear'): if not hasattr(instance, '_log'): instance._log = SimpleLog.log(instance, action_flag=SimpleLog.CHANGE, commit=False)
def log_m2m_change_handler(sender, instance, action, **kwargs): # M2m change signal does not provide raw kwarg raw = False for fr in inspect.stack(): if inspect.getmodulename(fr[1]) in ('test', 'loaddata'): raw = True break if not is_log_needed(instance, raw): return log_model = get_log_model() if action in ('pre_add', 'pre_remove', 'pre_clear'): log_model.set_initial(instance) if action in ('post_add', 'post_remove', 'post_clear'): log_model.log( instance=instance, action_flag=log_model.CHANGE, commit=False, using=kwargs.get('using'), )
def log_pre_save_delete(sender, instance, **kwargs): if get_variable('disable_logging'): return SimpleLog = get_log_model() SimpleLog.set_initial(instance)
def test_log_model_not_subclass_simplelog(self): with isolate_lru_cache(get_log_model): msg = 'Log model should be subclass of SimpleLogAbstractBase.' with self.assertRaisesMessage(ImproperlyConfigured, msg): get_log_model()
def test_log_model_not_exist(self): with isolate_lru_cache(get_log_model): msg = ("SIMPLE_LOG_MODEL refers to model 'not_exist.Model' " "that has not been installed") with self.assertRaisesMessage(ImproperlyConfigured, msg): get_log_model()
def test_log_model_wrong_value(self): with isolate_lru_cache(get_log_model): msg = "SIMPLE_LOG_MODEL must be of the form 'app_label.model_name'" with self.assertRaisesMessage(ImproperlyConfigured, msg): get_log_model()
def log_pre_save_handler(sender, instance, **kwargs): if not is_log_needed(instance, kwargs.get('raw')): return log_model = get_log_model() log_model.set_initial(instance, kwargs.get('using'))