Source code for heromessage.models

from django.contrib.auth.models import User
from django.core.mail import send_mail
from django.db import models
from django.db.models.signals import post_save
from django.utils.translation import ugettext as t
from django.utils.translation import ugettext_lazy as _
# Create your models here.
import logging

logger = logging.getLogger('youarehero.heromessage')

[docs]class Message(models.Model): title = models.CharField(max_length=255, verbose_name=_("title")) text = models.TextField(verbose_name=_("text")) sent = models.DateTimeField(auto_now_add=True) read = models.DateTimeField(blank=True, null=True) recipient_archived = models.DateTimeField(blank=True, null=True) recipient_deleted = models.DateTimeField(blank=True, null=True) sender_archived = models.DateTimeField(blank=True, null=True) sender_deleted = models.DateTimeField(blank=True, null=True) recipient = models.ForeignKey(User, related_name='sent_messages', verbose_name=_("recipient")) sender = models.ForeignKey(User, related_name='received_messages', verbose_name=_("sender")) class Meta: ordering = ['-sent'] @property def is_read(self): return self.read is not None def __unicode__(self): return '%s' % self.title @classmethod def send(cls, sender, recipient, title, text): return cls.objects.create( recipient=recipient, sender=sender, title=title, text=text )
def send_email_for_message(message): send_mail(t('You are Hero - new Message - %s') % message.title, message.text, 'noreply@youarehero.net', [message.recipient.email], fail_silently=True ) def send_mail_on_message_save(sender, **kwargs): from herobase.models import get_system_user if 'instance' in kwargs and kwargs.get('created', False): message = kwargs['instance'] recipient = message.recipient if message.sender == get_system_user() and recipient.get_profile().receive_system_email: send_email_for_message(message) elif message.sender != get_system_user() and recipient.get_profile().receive_private_email: send_email_for_message(message) post_save.connect(send_mail_on_message_save, Message, dispatch_uid="heromessage.models")