문제

I'm trying to setup notifications on the django comments framework. I've gone through the documentation here -

https://docs.djangoproject.com/en/dev/ref/contrib/comments/moderation/#django.contrib.comments.moderation.CommentModerator

I've added all of the code into my noticeboard app which is where the comments are currently being posted. When posting a comment to the site it works fine. However when i click the 'enable comments' field which is meant to allow the notifications, i'm not receiving any emails.

**UPDATE:

Just to add the site has a built in mailer so it records all emails being sent out from the website and it's not picked up any of the comments. If i also untick the 'enable comments' box I get an error message like so - comment_will_be_posted receiver 'pre_save_moderation' killed the comment

So i know the functionality is working ok.

Here is the code I've got so far:

//SNIPPET OF MODELS

from django.contrib.comments.moderation import CommentModerator, moderator

class Notice(models.Model):
    class Meta:
        ordering = ['-date']

    content_type = 'noticeboard'

    title = models.CharField(max_length=255)
    sector = models.ForeignKey(BusinessSector, verbose_name="Sector", related_name='notices')
    date = models.DateTimeField(auto_now_add=True, verbose_name="Date posted")
    copy = models.TextField()
    owner = models.ForeignKey('auth.User', related_name='notices')

    owner_company = models.ForeignKey('directory.Company', verbose_name='Company')
    enable_comment = models.BooleanField()

class EntryModerator(CommentModerator):
    email_notification = True
    enable_field = 'enable_comment'

moderator.register(Notice, EntryModerator)

I've also uploaded the file 'comment_notification_email.txt' into templates/contact.

The above code has been included into an exisiting app called noticeboard as this is where the comments are being posted.

Feel free to ask any questions if you think something would be of use to you.

Am I missed anything!?

Thanks!

도움이 되었습니까?

해결책

I had to add an If statement in the code to say if mailer was being used then send the email. Otherwise it wouldn't send the email.

if "mailer" in settings.INSTALLED_APPS:
            from mailer import send_mail
        else:
            from django.core.mail import send_mail
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top