Esempio n. 1
0
 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'
                     }
                 }
             })
Esempio n. 2
0
 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)
Esempio n. 3
0
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)
Esempio n. 4
0
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)
Esempio n. 5
0
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'),
    )
Esempio n. 6
0
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'),
    )
Esempio n. 7
0
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)
Esempio n. 8
0
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'),
        )
Esempio n. 9
0
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()
Esempio n. 13
0
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'))