Ejemplo n.º 1
0
def message(request, group_slug, template_name="user_groups/message.html"):
    """
    Send a message to the group
    """
    from tendenci.apps.emails.models import Email

    group = get_object_or_404(Group, slug=group_slug)
    EventLog.objects.log(instance=group)

    members = GroupMembership.objects.filter(group=group, status=True, status_detail="active")

    num_members = members.count()

    form = MessageForm(request.POST or None, request=request, num_members=num_members)

    if request.method == "POST" and form.is_valid():

        email = Email()
        email.sender_display = request.user.get_full_name()
        email.sender = get_setting("site", "global", "siteemailnoreplyaddress")
        email.reply_to = email.sender
        email.content_type = email.CONTENT_TYPE_HTML
        email.subject = form.cleaned_data["subject"]
        email.body = form.cleaned_data["body"]
        email.save(request.user)

        # send email to myself (testing email)
        if form.cleaned_data["is_test"]:
            email.recipient = request.user.email
            email.send()

            messages.add_message(request, messages.SUCCESS, _("Successfully sent test email to yourself"))

            EventLog.objects.log(instance=email)

        else:
            # send email to members
            for member in members:
                email.recipient = member.member.email
                email.send()

            messages.add_message(
                request,
                messages.SUCCESS,
                _("Successfully sent email to all %(num)s members in this group" % {"num": num_members}),
            )

            EventLog.objects.log(instance=email)

        return redirect("group.detail", group_slug=group_slug)

    else:
        print "form errors", form.errors.items()

    return render(request, template_name, {"group": group, "num_members": num_members, "form": form})
Ejemplo n.º 2
0
def email_invoice(request,
                  invoice_id,
                  form_class=EmailInvoiceForm,
                  template_name='invoices/email_invoice.html'):
    if not request.user.profile.is_superuser:
        raise Http403

    invoice = get_object_or_404(Invoice, pk=invoice_id)

    if request.method == "POST":
        email = Email()
        form = form_class(request.POST, instance=email)

        if form.is_valid():
            email = form.save(commit=False)
            email.sender_display = request.user.get_full_name()
            email.reply_to = request.user.email
            email.recipient = form.cleaned_data['recipient']
            email.content_type = "html"
            email.recipient_cc = form.cleaned_data['cc']

            attachment = form.cleaned_data['attachment']
            kwargs = {}
            if attachment:
                result = invoice_pdf(request, invoice)
                kwargs['attachments'] = [("invoice_{}.pdf".format(invoice.id),
                                          result.getvalue(), 'application/pdf')
                                         ]
            email.send(**kwargs)

            EventLog.objects.log(instance=email)
            msg_string = 'Successfully sent email invoice to {}.'.format(
                email.recipient)
            messages.add_message(request, messages.SUCCESS, msg_string)

            return HttpResponseRedirect(
                reverse('invoice.view', args=([invoice_id])))

    else:
        template = get_template("invoices/email_invoice_template.html")
        body_initial = template.render(context={'invoice': invoice},
                                       request=request)
        form = form_class(
            initial={
                'subject': 'Invoice for {}'.format(invoice.title),
                'recipient': invoice.bill_to_email,
                'body': body_initial
            })

    return render_to_resp(request=request,
                          template_name=template_name,
                          context={
                              'invoice': invoice,
                              'form': form
                          })
Ejemplo n.º 3
0
        def email_script_errors(err_msg):
            """Send error message to us in case of an error.
            """
            email = Email()
            email.sender = get_setting('site', 'global', 'siteemailnoreplyaddress')
            email.sender_display = get_setting('site', 'global', 'sitedisplayname')
            site_url = get_setting('site', 'global', 'siteurl')

            now = datetime.now()
            nowstr = time.strftime("%d-%b-%y %I:%M %p", now.timetuple())
            email.recipient = get_script_support_emails()
            if email.recipient:
                email.body = '%s \n\nTime Submitted: %s\n' % (err_msg, nowstr)
                email.content_type = "text"
                email.subject = 'Error Setting Up Campaign Monitor Account on New Site %s' % site_url

                email.send()
Ejemplo n.º 4
0
def email_invoice(request, invoice_id, form_class=EmailInvoiceForm,
                  template_name='invoices/email_invoice.html'):
    if not request.user.profile.is_superuser:
        raise Http403

    invoice = get_object_or_404(Invoice, pk=invoice_id)

    if request.method == "POST":
        email = Email()
        form = form_class(request.POST, instance=email)

        if form.is_valid():
            email = form.save(commit=False)
            email.sender_display = request.user.get_full_name()
            email.reply_to = request.user.email
            email.recipient = form.cleaned_data['recipient']
            email.content_type = "html"
            email.recipient_cc = form.cleaned_data['cc']

            attachment = form.cleaned_data['attachment']
            kwargs = {}
            if attachment:
                result = invoice_pdf(request, invoice)
                kwargs['attachments'] = [("invoice_{}.pdf".format(invoice.id),
                                      result.getvalue(),
                                      'application/pdf')]
            email.send(**kwargs)

            EventLog.objects.log(instance=email)
            msg_string = 'Successfully sent email invoice to {}.'.format(email.recipient)
            messages.add_message(request, messages.SUCCESS, msg_string)

            return HttpResponseRedirect(reverse('invoice.view', args=([invoice_id])))

    else:
        template = get_template("invoices/email_invoice_template.html")
        body_initial  = template.render(RequestContext(request, {
                                       'invoice': invoice,}))
        form = form_class(initial={'subject': 'Invoice for {}'.format(invoice.title),
                                   'recipient': invoice.bill_to_email,
                                   'body': body_initial})

    return render_to_response(template_name, {
        'invoice': invoice,
        'form': form
        },context_instance=RequestContext(request))
        def email_script_errors(err_msg):
            """Send error message to us in case of an error.
            """
            email = Email()
            email.sender = get_setting('site', 'global',
                                       'siteemailnoreplyaddress')
            email.sender_display = get_setting('site', 'global',
                                               'sitedisplayname')
            site_url = get_setting('site', 'global', 'siteurl')

            now = datetime.now()
            nowstr = time.strftime("%d-%b-%y %I:%M %p", now.timetuple())
            email.recipient = get_script_support_emails()
            if email.recipient:
                email.body = '%s \n\nTime Submitted: %s\n' % (err_msg, nowstr)
                email.content_type = "text"
                email.subject = 'Error Setting Up Campaign Monitor Account on New Site %s' % site_url

                email.send()
Ejemplo n.º 6
0
    def save(self, *args, **kwargs):
        data = self.cleaned_data
        subject = ''
        subj = data.get('subject', '')
        inc_last_name = data.get('personalize_subject_last_name')
        inc_first_name = data.get('personalize_subject_first_name')

        if inc_first_name and not inc_last_name:
            subject = '[firstname] ' + subj
        elif inc_last_name and not inc_first_name:
            subject = '[lastname] ' + subj
        elif inc_first_name and inc_last_name:
            subject = '[firstname] [lastname] ' + subj
        else:
            subject = subj
        nl = super(OldGenerateForm, self).save(*args, **kwargs)
        nl.subject = subject
        nl.actionname = subject
        nl.date_created = datetime.datetime.now()
        nl.send_status = 'draft'
        if nl.default_template:
            template = render_to_string(template_name=nl.default_template,
                                        request=self.request)
            email_content = nl.generate_newsletter(self.request, template)

            email = Email()
            email.subject = subject
            email.body = email_content
            email.sender = get_setting('site', 'global',
                                       'siteemailnoreplyaddress')
            email.sender_display = self.request.user.profile.get_name()
            email.reply_to = self.request.user.email
            email.creator = self.request.user
            email.creator_username = self.request.user.username
            email.owner = self.request.user
            email.owner_username = self.request.user.username
            email.save()
            nl.email = email

        nl.save()

        return nl
Ejemplo n.º 7
0
    def save(self, *args, **kwargs):
        data = self.cleaned_data
        subject = ''
        subj = data.get('subject', '')
        inc_last_name = data.get('personalize_subject_last_name')
        inc_first_name = data.get('personalize_subject_first_name')

        if inc_first_name and not inc_last_name:
            subject = '[firstname] ' + subj
        elif inc_last_name and not inc_first_name:
            subject = '[lastname] ' + subj
        elif inc_first_name and inc_last_name:
            subject = '[firstname] [lastname] ' + subj
        else:
            subject = subj
        nl = super(OldGenerateForm, self).save(*args, **kwargs)
        nl.subject = subject
        nl.actionname = subject
        nl.date_created = datetime.datetime.now()
        nl.send_status = 'draft'
        if nl.default_template:
            template = render_to_string(nl.default_template, context_instance=RequestContext(self.request))
            email_content = nl.generate_newsletter(self.request, template)

            email = Email()
            email.subject = subject
            email.body = email_content
            email.sender = self.request.user.email
            email.sender_display = self.request.user.profile.get_name()
            email.reply_to = self.request.user.email
            email.creator = self.request.user
            email.creator_username = self.request.user.username
            email.owner = self.request.user
            email.owner_username = self.request.user.username
            email.save()
            nl.email = email

        nl.save()

        return nl
Ejemplo n.º 8
0
def message(request, group_slug, template_name='user_groups/message.html'):
    """
    Send a message to the group
    """
    from tendenci.apps.emails.models import Email

    group = get_object_or_404(Group, slug=group_slug)
    EventLog.objects.log(instance=group)

    members = GroupMembership.objects.filter(
        group=group,
        status=True,
        status_detail='active')

    num_members = members.count()

    form = MessageForm(request.POST or None,
        request=request,
        num_members=num_members)


    if request.method == 'POST' and form.is_valid():

        email = Email()
        email.sender_display = request.user.get_full_name()
        email.sender = get_setting('site', 'global', 'siteemailnoreplyaddress')
        email.reply_to = email.sender
        email.content_type = 'text/html'
        email.subject = form.cleaned_data['subject']
        email.body = form.cleaned_data['body']
        email.save(request.user)

        # send email to myself (testing email)
        if form.cleaned_data['is_test']:
            email.recipient = request.user.email
            email.send()

            messages.add_message(
                request,
                messages.SUCCESS,
                _('Successfully sent test email to yourself'))

            EventLog.objects.log(instance=email)

        else:
            # send email to members
            for member in members:
                email.recipient = member.member.email
                email.send()

            messages.add_message(
                request,
                messages.SUCCESS,
                _('Successfully sent email to all %(num)s members in this group' % {'num': num_members}))

            EventLog.objects.log(instance=email)

        return redirect('group.detail', group_slug=group_slug)

    else:
        print 'form errors', form.errors.items()


    return render(request, template_name, {
        'group': group,
        'num_members': num_members,
        'form': form})
Ejemplo n.º 9
0
def message(request, group_slug, template_name='user_groups/message.html'):
    """
    Send a message to the group
    """
    from tendenci.apps.emails.models import Email

    group = get_object_or_404(Group, slug=group_slug)
    EventLog.objects.log(instance=group)

    members = GroupMembership.objects.filter(group=group,
                                             status=True,
                                             status_detail='active')

    num_members = members.count()

    form = MessageForm(request.POST or None,
                       request=request,
                       num_members=num_members)

    if request.method == 'POST' and form.is_valid():

        email = Email()
        email.sender_display = request.user.get_full_name()
        email.sender = get_setting('site', 'global', 'siteemailnoreplyaddress')
        email.reply_to = email.sender
        email.content_type = email.CONTENT_TYPE_HTML
        email.subject = form.cleaned_data['subject']
        email.body = form.cleaned_data['body']
        email.save(request.user)

        # send email to myself (testing email)
        if form.cleaned_data['is_test']:
            email.recipient = request.user.email
            email.send()

            messages.add_message(request, messages.SUCCESS,
                                 _('Successfully sent test email to yourself'))

            EventLog.objects.log(instance=email)

        else:
            # send email to members
            for member in members:
                email.recipient = member.member.email
                email.send()

            messages.add_message(
                request, messages.SUCCESS,
                _('Successfully sent email to all %(num)s members in this group'
                  % {'num': num_members}))

            EventLog.objects.log(instance=email)

        return redirect('group.detail', group_slug=group_slug)

    else:
        print('form errors', list(form.errors.items()))

    return render_to_resp(request=request,
                          template_name=template_name,
                          context={
                              'group': group,
                              'num_members': num_members,
                              'form': form
                          })
Ejemplo n.º 10
0
def message(request, group_slug, template_name='user_groups/message.html'):
    """
    Send a message to the group
    """
    from tendenci.apps.emails.models import Email

    group = get_object_or_404(Group, slug=group_slug)
    if group.membership_types.all().exists():
        membership_type = group.membership_types.all()[0]
    else:
        membership_type = None
    EventLog.objects.log(instance=group)

    members = GroupMembership.objects.filter(group=group,
                                             status=True,
                                             status_detail='active')

    num_members = members.count()

    form = MessageForm(request.POST or None,
                       request=request,
                       num_members=num_members)

    if request.method == 'POST' and form.is_valid():

        email = Email()
        email.sender_display = request.user.get_full_name()
        email.sender = get_setting('site', 'global', 'siteemailnoreplyaddress')
        email.reply_to = email.sender
        email.content_type = email.CONTENT_TYPE_HTML
        email.subject = form.cleaned_data['subject']
        email.body = form.cleaned_data['body']
        email.save(request.user)

        # send email to myself (testing email)
        if form.cleaned_data['is_test']:
            email.recipient = request.user.email
            email.send()

            messages.add_message(request, messages.SUCCESS,
                                 _('Successfully sent test email to yourself'))

            EventLog.objects.log(instance=email)

        else:
            # send email to members
            for member in members:
                original_body = email.body
                email.recipient = member.member.email
                if membership_type:
                    [membership] = member.member.membershipdefault_set.exclude(
                        status_detail='archive').order_by(
                            '-create_dt')[:1] or [None]
                    if membership:
                        # do find and replace
                        urls_dict = membership.get_common_urls()
                        for key in urls_dict.keys():
                            email.body = email.body.replace(
                                '[%s]' % key, urls_dict[key])
                email.send()
                # restore back to the original
                email.body = original_body

            messages.add_message(
                request, messages.SUCCESS,
                _('Successfully sent email to all %(num)s members in this group'
                  % {'num': num_members}))

            EventLog.objects.log(instance=email)

        return redirect('group.detail', group_slug=group_slug)

    else:
        print('form errors', list(form.errors.items()))

    if membership_type:
        available_tokens = '[membership_link], [membership_type], [directory_url], [directory_edit_url], [invoice_link]'
    else:
        available_tokens = ''

    return render_to_resp(request=request,
                          template_name=template_name,
                          context={
                              'group': group,
                              'num_members': num_members,
                              'membership_type': membership_type,
                              'available_tokens': available_tokens,
                              'form': form
                          })
Ejemplo n.º 11
0
def message(request, group_slug, template_name='user_groups/message.html'):
    """
    Send a message to the group
    """
    from tendenci.apps.emails.models import Email
    from django.core.mail import send_mail
    from django.core.mail import EmailMessage

    group = get_object_or_404(Group, slug=group_slug)
    EventLog.objects.log(instance=group)

    members = GroupMembership.objects.filter(group=group,
                                             status=True,
                                             status_detail='active')

    num_members = members.count()

    form = MessageForm(request.POST or None,
                       request=request,
                       num_members=num_members)

    if request.method == 'POST' and form.is_valid():

        email = Email()
        email.sender_display = request.user.get_full_name()
        email.sender = get_setting('site', 'global', 'siteemailnoreplyaddress')
        email.reply_to = email.sender
        email.content_type = email.CONTENT_TYPE_HTML
        email.subject = form.cleaned_data['subject']
        email.body = form.cleaned_data['body']
        email.save(request.user)

        # send email to myself (testing email)
        if form.cleaned_data['is_test']:
            email.recipient = request.user.email
            print(email.recipient)
            email.send()

            messages.add_message(request, messages.SUCCESS,
                                 _('Successfully sent test email to yourself'))

            EventLog.objects.log(instance=email)

        else:
            #api_url = settings.MAILCHIMP_API_URL + '/campaigns/'
            #api_key = settings.MAILCHIMP_API_KEY
            #headers = {'Content-Type': 'application/json', 'Authorization': api_key}
            #response = requests.get(api_url, headers=headers);
            #jsonInput = json.loads(response.text);
            #list_results = [[x['id'], x['name']] for x in jsonInput['lists']]
            # print(list_results)
            #body_content = {"plain_text": "Hi There,\r\nThis is a test again.\r\n-Blake B\n==============================================\n\n"}
            msg = EmailMessage('Request Callback',
                               'Here is the message.',
                               to=['*****@*****.**'])
            msg.send()

            #send email to members
            for member in members:
                email.recipient = member.member.email
                print(email.recipient)
                #try:
                #test = send_mail(
                #    'Subject here',
                #    'Here is the message.',
                #    ['*****@*****.**'],
                #    fail_silently=False,
                #)
                #print(test)
                #except SMTPException as e:
                #print('%s (%s)' % (e.message, type(e)))
                #email.send()

            messages.add_message(
                request, messages.SUCCESS,
                _('Successfully sent email to all %(num)s members in this group'
                  % {'num': num_members}))

            EventLog.objects.log(instance=email)

        return redirect('group.detail', group_slug=group_slug)

    else:
        print('form errors', form.errors.items())

    return render(request, template_name, {
        'group': group,
        'num_members': num_members,
        'form': form
    })
Ejemplo n.º 12
0
    def handle(self, *args, **options):
        from tendenci.apps.events.models import Event, Registrant, Organizer
        from tendenci.apps.emails.models import Email
        from tendenci.apps.site_settings.utils import get_setting
        from tendenci.apps.base.utils import convert_absolute_urls
        from tendenci.apps.events.utils import (render_event_email,
                                                get_default_reminder_template)

        verbosity = options['verbosity']
        site_url = get_setting('site', 'global', 'siteurl')
        now = datetime.now()
        today_tuple = (datetime(now.year, now.month, now.day, 0, 0, 0),
                       datetime(now.year, now.month, now.day, 23, 59, 59))

        # get a list of upcoming events that are specified to send reminders.
        events = Event.objects.filter(
            start_dt__gt=now,
            registration_configuration__enabled=True,
            registration_configuration__send_reminder=True,
            status=True,
            status_detail='active')
        events_list = []

        if events:
            for event in events:
                reg_conf = event.registration_configuration
                reminder_days = reg_conf.reminder_days
                if not reminder_days:
                    reminder_days = '1'
                days_list = reminder_days.split(',')

                for day in days_list:
                    try:
                        day = int(day)
                    except:
                        continue

                    start_dt = event.start_dt - timedelta(days=day)

                    if today_tuple[0] <= start_dt and start_dt <= today_tuple[
                            1]:
                        events_list.append(event)

            for event in events_list:
                registrants = Registrant.objects.filter(
                    reminder=True, registration__event=event, cancel_dt=None)

                reg_conf = event.registration_configuration
                [organizer
                 ] = Organizer.objects.filter(event=event)[:1] or [None]
                event.organizer = organizer

                email = reg_conf.email
                if not email:
                    email = Email()

                if not email.sender_display:
                    if organizer.name:
                        email.sender_display = organizer.name

                if not email.reply_to:
                    if organizer.user and organizer.user.email:
                        email.reply_to = organizer.user.email

                if not email.subject:
                    email.subject = 'Reminder: %s' % event.title
                else:
                    email.subject = 'Reminder: %s' % email.subject

                if not email.body:
                    email.body = get_default_reminder_template(event)

                email = render_event_email(event, email)

                # replace the relative links with absolute urls
                # in the email body and subject
                email.body = convert_absolute_urls(email.body, site_url)

                event.email = email
                self.send_reminders(event, registrants, verbosity=verbosity)
Ejemplo n.º 13
0
    def handle(self, *args, **options):
        from tendenci.apps.events.models import Event, Registrant, Organizer
        from tendenci.apps.emails.models import Email
        from tendenci.apps.site_settings.utils import get_setting
        from tendenci.apps.base.utils import convert_absolute_urls
        from tendenci.apps.events.utils import (render_event_email,
                                  get_default_reminder_template)

        verbosity = options['verbosity']
        site_url = get_setting('site', 'global', 'siteurl')
        now = datetime.now()
        today_tuple = (datetime(now.year, now.month, now.day, 0, 0, 0),
                       datetime(now.year, now.month, now.day, 23, 59, 59))

        # get a list of upcoming events that are specified to send reminders.
        events = Event.objects.filter(start_dt__gt=now,
                                registration_configuration__enabled=True,
                                registration_configuration__send_reminder=True,
                                status=True,
                                status_detail='active')
        events_list = []

        if events:
            for event in events:
                reg_conf = event.registration_configuration
                reminder_days = reg_conf.reminder_days
                if not reminder_days:
                    reminder_days = '1'
                days_list = reminder_days.split(',')

                for day in days_list:
                    try:
                        day = int(day)
                    except:
                        continue

                    start_dt = event.start_dt - timedelta(days=day)

                    if today_tuple[0] <= start_dt and start_dt <= today_tuple[1]:
                        events_list.append(event)

            for event in events_list:
                registrants = Registrant.objects.filter(
                                reminder=True,
                                registration__event=event,
                                cancel_dt=None
                                )

                reg_conf = event.registration_configuration
                [organizer] = Organizer.objects.filter(event=event)[:1] or [None]
                event.organizer = organizer

                email = reg_conf.email
                if not email:
                    email = Email()

                if not email.sender_display:
                    if organizer.name:
                        email.sender_display = organizer.name

                if not email.reply_to:
                    if organizer.user and organizer.user.email:
                        email.reply_to = organizer.user.email

                if not email.subject:
                    email.subject = 'Reminder: %s' % event.title
                else:
                    email.subject = 'Reminder: %s' % email.subject

                if not email.body:
                    email.body = get_default_reminder_template(event)

                email = render_event_email(event, email)

                # replace the relative links with absolute urls
                # in the email body and subject
                email.body = convert_absolute_urls(email.body, site_url)

                event.email = email
                self.send_reminders(event, registrants, verbosity=verbosity)