Create ActivityLog model

This commit is contained in:
Zaki Benaissa 2024-01-12 18:18:36 +01:00
parent c8baa057cc
commit fbef114a44

View File

@ -2,11 +2,13 @@ from django.db import models
from django.urls import reverse from django.urls import reverse
from django.conf import settings from django.conf import settings
from django.core.validators import FileExtensionValidator from django.core.validators import FileExtensionValidator
from django.db.models.signals import pre_save from django.db.models.signals import pre_save, post_save, post_delete
from django.db.models import Q from django.db.models import Q
from django.dispatch import receiver
# project import # project import
from .utils import * from .utils import *
from core.models import ActivityLog
YEARS = ( YEARS = (
(1, "1"), (1, "1"),
@ -62,6 +64,21 @@ class Program(models.Model):
return reverse("program_detail", kwargs={"pk": self.pk}) return reverse("program_detail", kwargs={"pk": self.pk})
@receiver(post_save, sender=Program)
def log_save(sender, instance, created, **kwargs):
verb = "created" if created else "updated"
ActivityLog.objects.create(
message=f"The program '{instance.title}' has been {verb}."
)
@receiver(post_delete, sender=Program)
def log_delete(sender, instance, **kwargs):
ActivityLog.objects.create(
message=f"The program '{instance.title}' has been deleted."
)
class CourseManager(models.Manager): class CourseManager(models.Manager):
def search(self, query=None): def search(self, query=None):
queryset = self.get_queryset() queryset = self.get_queryset()
@ -118,6 +135,21 @@ def course_pre_save_receiver(sender, instance, *args, **kwargs):
pre_save.connect(course_pre_save_receiver, sender=Course) pre_save.connect(course_pre_save_receiver, sender=Course)
@receiver(post_save, sender=Course)
def log_save(sender, instance, created, **kwargs):
verb = "created" if created else "updated"
ActivityLog.objects.create(
message=f"The course '{instance.title}' has been {verb}."
)
@receiver(post_delete, sender=Course)
def log_delete(sender, instance, **kwargs):
ActivityLog.objects.create(
message=f"The course '{instance.title}' has been deleted."
)
class CourseAllocation(models.Model): class CourseAllocation(models.Model):
lecturer = models.ForeignKey( lecturer = models.ForeignKey(
settings.AUTH_USER_MODEL, settings.AUTH_USER_MODEL,
@ -184,6 +216,25 @@ class Upload(models.Model):
super().delete(*args, **kwargs) super().delete(*args, **kwargs)
@receiver(post_save, sender=Upload)
def log_save(sender, instance, created, **kwargs):
if created:
ActivityLog.objects.create(
message=f"The file '{instance.title}' has been uploaded to the course '{instance.course}'."
)
else:
ActivityLog.objects.create(
message=f"The file '{instance.title}' of the course '{instance.course}' has been updated."
)
@receiver(post_delete, sender=Upload)
def log_delete(sender, instance, **kwargs):
ActivityLog.objects.create(
message=f"The file '{instance.title}' of the course '{instance.course}' has been deleted."
)
class UploadVideo(models.Model): class UploadVideo(models.Model):
title = models.CharField(max_length=100) title = models.CharField(max_length=100)
slug = models.SlugField(blank=True, unique=True) slug = models.SlugField(blank=True, unique=True)
@ -218,6 +269,25 @@ def video_pre_save_receiver(sender, instance, *args, **kwargs):
pre_save.connect(video_pre_save_receiver, sender=UploadVideo) pre_save.connect(video_pre_save_receiver, sender=UploadVideo)
@receiver(post_save, sender=UploadVideo)
def log_save(sender, instance, created, **kwargs):
if created:
ActivityLog.objects.create(
message=f"The video '{instance.title}' has been uploaded to the course {instance.course}."
)
else:
ActivityLog.objects.create(
message=f"The video '{instance.title}' of the course '{instance.course}' has been updated."
)
@receiver(post_delete, sender=UploadVideo)
def log_delete(sender, instance, **kwargs):
ActivityLog.objects.create(
message=f"The video '{instance.title}' of the course '{instance.course}' has been deleted."
)
class CourseOffer(models.Model): class CourseOffer(models.Model):
"""NOTE: Only department head can offer semester courses""" """NOTE: Only department head can offer semester courses"""