From e2751b22b13cc033678a0acc5a29981291f906fb Mon Sep 17 00:00:00 2001 From: BuildTools Date: Sun, 20 Nov 2016 11:43:31 +0100 Subject: [PATCH] group select now many to many field --- jdav_web/mailer/admin.py | 2 +- jdav_web/mailer/models.py | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/jdav_web/mailer/admin.py b/jdav_web/mailer/admin.py index a5913bb..ffb476a 100644 --- a/jdav_web/mailer/admin.py +++ b/jdav_web/mailer/admin.py @@ -8,7 +8,7 @@ from .models import Message class MessageAdmin(admin.ModelAdmin): """Message creation view""" - list_display = ('subject', 'from_addr', 'to_group', 'sent') + list_display = ('subject', 'from_addr', 'get_groups', 'sent') change_form_template = "mailer/change_form.html" actions = ['send_message'] diff --git a/jdav_web/mailer/models.py b/jdav_web/mailer/models.py index 0498719..edabb55 100644 --- a/jdav_web/mailer/models.py +++ b/jdav_web/mailer/models.py @@ -9,17 +9,27 @@ class Message(models.Model): from_addr = models.EmailField(_('from email')) subject = models.CharField(_('subject'), max_length=50) content = models.TextField(_('content')) - to_group = models.ForeignKey('members.Group', verbose_name=_('to group')) + to_groups = models.ManyToManyField('members.Group', + verbose_name=_('to group')) sent = models.BooleanField(_('sent'), default=False) def __str__(self): return self.subject + def get_groups(self): + return ", ".join([g.name for g in self.to_groups.all()]) + get_groups.short_description = _('recipicients') + def submit(self): """Sends the mail to the specified group of members""" + members = set() + for group in self.to_groups.all(): + group_members = group.member_set.all() + for member in group_members: + members.add(member) data = [ (self.subject, self.content, self.from_addr, [member.email]) - for member in self.to_group.member_set.all() + for member in members ] send_mass_mail(data) self.sent = True