diff --git a/asuzr/models.py b/asuzr/models.py index 032bad1..0606b62 100644 --- a/asuzr/models.py +++ b/asuzr/models.py @@ -6,7 +6,11 @@ from django.contrib.auth.models import User from datetime import date, timedelta from django.utils import dateformat from django.contrib.auth.signals import user_logged_in, user_logged_out, user_login_failed -from django.contrib.admin.models import LogEntry +from django.db.models.signals import post_save, post_delete +from django.contrib.admin.models import LogEntry, ADDITION, CHANGE, DELETION +from django.contrib.contenttypes.models import ContentType +from django.dispatch import receiver +from gadjo.requestprovider.signals import get_request #Изделия class Product(models.Model): @@ -181,3 +185,35 @@ on_login_error = lambda **kwargs: auth_log(u'Ошибка входа польз user_logged_in.connect(on_login) user_logged_out.connect(on_logout) user_login_failed.connect(on_login_error) + +def construct_log_entry(**kwargs): + instance = kwargs['instance'] + content_type = ContentType.objects.get_for_model(instance) + user = User.objects.get(username = get_request().META['USER']) + log_entry = {} + log_entry['user'] = user + log_entry['object_repr'] = str(instance) + log_entry['content_type'] = content_type + log_entry['object_id'] = instance.id + return log_entry + +@receiver(post_save) +def after_save(*args, **kwargs): + instance = kwargs['instance'] + if isinstance(instance, LogEntry): return + log_entry = construct_log_entry(**kwargs) + created = kwargs['created'] + log_entry['action_flag'] = ADDITION if created else CHANGE + entry = LogEntry(**log_entry) + entry.save() + +@receiver(post_delete) +def after_delete(*args, **kwargs): + log_entry = construct_log_entry(**kwargs) + log_entry['action_flag'] = DELETION + entry = LogEntry(**log_entry) + entry.save() + +@receiver(post_delete, sender=Sketch) +def sketch_delete(sender, instance, **kwargs): + instance.sketch_file.delete(False) diff --git a/asuzr/views.py b/asuzr/views.py index b526b1e..71d7fdc 100644 --- a/asuzr/views.py +++ b/asuzr/views.py @@ -219,7 +219,6 @@ def delete_sketch(request): pk = request.GET.get('pk', -1) sketch = get_object_or_404(Sketch, pk = pk) order_id = sketch.order.pk - sketch.sketch_file.delete(save = False) sketch.delete() return redirect(sketches, order_id = order_id) diff --git a/record/settings.py b/record/settings.py index e13cd80..fe485f5 100644 --- a/record/settings.py +++ b/record/settings.py @@ -52,6 +52,7 @@ MIDDLEWARE_CLASSES = ( 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'gadjo.requestprovider.middleware.RequestProvider', ) ROOT_URLCONF = 'record.urls'