コード例 #1
0
    def create_mailinglist(self, request, queryset):
        """Create a mailing list from selected contact"""
        when = str(datetime.now()).split('.')[0]
        new_mailing = MailingList(
            name=_('New mailinglist at %s') % when,
            description=_('New mailing list created in admin at %s') % when
        )
        new_mailing.save()

        if 'lite' in settings.DATABASES['default']['ENGINE']:
            self.message_user(
                request,
                _('SQLite3 or a SpatialLite database type detected, please note you will be limited to 999 contacts '
                    'per mailing list.')
            )
        try:
            new_mailing.subscribers = queryset.all()
        except DatabaseError:
            new_mailing.subscribers = queryset.none()

        if not request.user.is_superuser and USE_WORKGROUPS:
            for workgroup in request_workgroups(request):
                workgroup.mailinglists.add(new_mailing)

        self.message_user(request, _('%s succesfully created.') % new_mailing)
        urlname = 'admin:%s_mailinglist_change' % self.opts.app_label
        return HttpResponseRedirect(reverse(urlname, args=[new_mailing.pk]))
コード例 #2
0
    def merge_mailinglist(self, request, queryset):
        """Merge multiple mailing list"""
        if queryset.count() == 1:
            self.message_user(request, _('Please select a least 2 mailing list.'))
            return None

        subscribers = {}
        unsubscribers = {}
        for ml in queryset:
            for contact in ml.subscribers.all():
                subscribers[contact] = ''
            for contact in ml.unsubscribers.all():
                unsubscribers[contact] = ''

        when = str(datetime.now()).split('.')[0]
        new_mailing = MailingList(name=_('Merging list at %s') % when,
                                  description=_('Mailing list created by merging at %s') % when)
        new_mailing.save()
        new_mailing.subscribers = subscribers.keys()
        new_mailing.unsubscribers = unsubscribers.keys()

        if not request.user.is_superuser and USE_WORKGROUPS:
            for workgroup in request_workgroups(request):
                workgroup.mailinglists.add(new_mailing)

        self.message_user(request, _('%s succesfully created by merging.') % new_mailing)
        urlname = 'admin:%s_mailinglist_change' % self.opts.app_label
        return HttpResponseRedirect(reverse(urlname, args=[new_mailing.pk]))
コード例 #3
0
def create_contacts(contact_dicts, importer_name, mailing_list=None, segment=None):
    """Create all the contacts to import and associated them in a mailing list"""
    inserted = 0
    when = str(datetime.now()).split('.')[0]

    if not mailing_list:
        mailing_list = MailingList(
            name=_('Mailing list imported at %s') % when,
            description=_('Contacts imported by %s.') % importer_name)
        mailing_list.save()

    for contact_dict in contact_dicts:
        contact, created = create_contact(contact_dict)
        mailing_list.subscribers.add(contact)
        if segment:
            segment.subscribers.add(contact)
        inserted += int(created)

    return inserted
コード例 #4
0
def create_contacts(contact_dicts, importer_name, workgroups=[]):
    """Create all the contacts to import and
    associated them in a mailing list"""
    inserted = 0
    when = str(datetime.now()).split(".")[0]
    mailing_list = MailingList(
        name=_("Mailing list created by importation at %s") % when,
        description=_("Contacts imported by %s.") % importer_name,
    )
    mailing_list.save()

    for workgroup in workgroups:
        workgroup.mailinglists.add(mailing_list)

    for contact_dict in contact_dicts:
        contact, created = create_contact(contact_dict, workgroups)
        mailing_list.subscribers.add(contact)
        inserted += int(created)

    return inserted
コード例 #5
0
    def merge_mailinglist(self, request, queryset):
        """Merge multiple mailing list"""
        if queryset.count() == 1:
            self.message_user(request, _('Please select a least 2 mailing list.'))
            return None

        subscribers = {}
        unsubscribers = {}
        for ml in queryset:
            for contact in ml.subscribers.all():
                subscribers[contact] = ''
            for contact in ml.unsubscribers.all():
                unsubscribers[contact] = ''

        when = str(datetime.now()).split('.')[0]
        new_mailing = MailingList(name=_('Merging list at %s') % when,
                                  description=_('Mailing list created by merging at %s') % when)
        new_mailing.save()
        new_mailing.subscribers = subscribers.keys()
        new_mailing.unsubscribers = unsubscribers.keys()

        if not request.user.is_superuser and USE_WORKGROUPS:
            for workgroup in request_workgroups(request):
                workgroup.mailinglists.add(new_mailing)

        self.message_user(request, _('%s succesfully created by merging.') % new_mailing)
        urlname = 'admin:%s_mailinglist_change' % self.opts.app_label
        return HttpResponseRedirect(reverse(urlname, args=[new_mailing.pk]))
コード例 #6
0
    def create_mailinglist(self, request, queryset):
        """Create a mailing list from selected contact"""
        when = str(datetime.now()).split('.')[0]
        new_mailing = MailingList(
            name=_('New mailinglist at %s') % when,
            description=_('New mailing list created in admin at %s') % when)
        new_mailing.save()

        if 'lite' in settings.DATABASES['default']['ENGINE']:
            self.message_user(
                request,
                _('SQLite3 or a SpatialLite database type detected, please note you will be limited to 999 contacts '
                  'per mailing list.'))
        try:
            new_mailing.subscribers = queryset.all()
        except DatabaseError:
            new_mailing.subscribers = queryset.none()

        if not request.user.is_superuser and USE_WORKGROUPS:
            for workgroup in request_workgroups(request):
                workgroup.mailinglists.add(new_mailing)

        self.message_user(request, _('%s succesfully created.') % new_mailing)
        urlname = 'admin:%s_mailinglist_change' % self.opts.app_label
        return HttpResponseRedirect(reverse(urlname, args=[new_mailing.pk]))
コード例 #7
0
 def test_subscribers_count(self):
     mailinglist = MailingList(name='Test MailingList')
     mailinglist.save()
     self.assertEquals(mailinglist.subscribers_count(), 0)
     mailinglist.subscribers.add(self.contact_1, self.contact_2,
                                 self.contact_3)
     self.assertEquals(mailinglist.subscribers_count(), 3)
コード例 #8
0
 def test_subscribers_count(self):
     mailinglist = MailingList(name='Test MailingList')
     mailinglist.save()
     self.assertEquals(mailinglist.subscribers_count(), 0)
     mailinglist.subscribers.add(self.contact_1, self.contact_2, self.contact_3)
     self.assertEquals(mailinglist.subscribers_count(), 3)