diff --git a/core/admin.py b/core/admin.py index a9baff2..90b60d0 100644 --- a/core/admin.py +++ b/core/admin.py @@ -14,7 +14,7 @@ class SiteSettingsAdmin(admin.ModelAdmin): # Petite astuce visuelle pour l'admin fieldsets = ( ('Général', { - 'fields': ('site_name', 'site_logo') + 'fields': ('site_name', 'site_logo', 'receive_emails_active') }), ('Réseaux Sociaux', { 'fields': ('facebook_url', 'twitter_url', 'youtube_url'), diff --git a/core/apps.py b/core/apps.py index 26f78a8..a2ee61b 100644 --- a/core/apps.py +++ b/core/apps.py @@ -1,5 +1,7 @@ from django.apps import AppConfig - class CoreConfig(AppConfig): name = 'core' + + def ready(self): + import courses.signals \ No newline at end of file diff --git a/core/migrations/0005_sitesettings_receive_emails_active.py b/core/migrations/0005_sitesettings_receive_emails_active.py new file mode 100644 index 0000000..81c0441 --- /dev/null +++ b/core/migrations/0005_sitesettings_receive_emails_active.py @@ -0,0 +1,18 @@ +# Generated by Django 6.0 on 2025-12-17 09:36 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0004_visit'), + ] + + operations = [ + migrations.AddField( + model_name='sitesettings', + name='receive_emails_active', + field=models.BooleanField(default=True), + ), + ] diff --git a/core/models.py b/core/models.py index 63d9b18..297916d 100644 --- a/core/models.py +++ b/core/models.py @@ -6,6 +6,7 @@ class SiteSettings(models.Model): site_name = models.CharField(max_length=200, default="Mon Super Site") site_logo = models.ImageField(upload_to='settings/', blank=True) contact_email = models.EmailField(blank=True) + receive_emails_active = models.BooleanField(default=True) # Réseaux sociaux facebook_url = models.URLField(blank=True) diff --git a/courses/context_processors.py b/courses/context_processors.py index 2a4772e..4a22831 100644 --- a/courses/context_processors.py +++ b/courses/context_processors.py @@ -1,5 +1,8 @@ -from .models import Course +from .models import Course, Comment def course_list(request): courses = Course.objects.all() - return {'courses': courses} \ No newline at end of file + return {'courses': courses} + +def courses_comments(request): + return {'comments_count': Comment.objects.all()} \ No newline at end of file diff --git a/courses/signals.py b/courses/signals.py new file mode 100644 index 0000000..0258ca7 --- /dev/null +++ b/courses/signals.py @@ -0,0 +1,12 @@ +from django.db.models.signals import post_save +from django.dispatch import receiver +from django.core.mail import send_mail +from .models import Comment +from core.models import SiteSettings + +@receiver(post_save, sender=Comment) +def send_email_notification(sender, instance, created, **kwargs): + if created and SiteSettings.objects.first().receive_emails_active: + subject = f"Nouveau commentaire sur la leçon - {instance.lesson.name} du cours {instance.lesson.module.course.name}" + message = f"Le commentaire suivant à été envoyé par {instance.user}:\n{instance.content}" + send_mail(subject, message, "infos@partirdezero.com", ['anthony.violet@outlook.be'], fail_silently=False)