Ejemplo n.º 1
0
Archivo: admin.py Proyecto: Feowl/API
    def send_voucher(self, request):
        if request.method == 'POST':  # If the form has been submitted...
            form = VoucherForm(request.POST)  # A form bound to the POST data
            if form.is_valid():  # All validation rules pass
                mobile_numbers = form.cleaned_data['mobile_numbers']
                voucher_text = form.cleaned_data['voucher_text']

                mobile_numbers_list = [x.strip() for x in mobile_numbers.split(',')]

                for number in mobile_numbers_list:
                    send_sms(number, voucher_text)
                return HttpResponseRedirect('..')
        else:
            form = VoucherForm()  # An unbound form

        fieldsets = [(None, {'fields': form.base_fields.keys()})]
        adminForm = admin.helpers.AdminForm(form, fieldsets, {})

        context = {
            'adminForm': adminForm,
            'form': form,
            'is_popup': '_popup' in request.REQUEST,
            'add': True,
            'change': False,
            'has_delete_permission': False,
            'has_change_permission': True,
            'has_absolute_url': False,
            'opts': self.model._meta,
            'save_as': False,
            'show_save': True,
        }
        return TemplateResponse(request, 'admin/send_voucher.html',
            context, current_app=self.admin_site.name)
Ejemplo n.º 2
0
    def handle(self, *args, **options):
        limit = options.get("limit")
        frequency = options.get("frequency")

        contributors = Contributor.objects.filter(status=Contributor.ACTIVE, frequency=frequency).exclude(name=settings.ANONYMOUS_USER_NAME).order_by('-enquiry')[:limit]
        messages = []
        plaintext = get_template('email/newsletter.txt')
        html = get_template('email/newsletter.html')
        subject = _('Hello from Feowl')
        connection = get_connection()
        connection.open()
        for i, user in enumerate(contributors):
                if user.channel == EMAIL and is_valid_email(user.email):
                    d = Context({'name': user.name, 'newsletter_language': user.language})
                    text_content = plaintext.render(d)
                    html_content = html.render(d)
                    msg = EmailMultiAlternatives(subject, text_content, settings.NEWSLETTER_FROM, [user.email], connection=connection)
                    msg.attach_alternative(html_content, "text/html")
                    messages.append(msg)
                    logger.info("Poll Email sent to {0}".format(user.email))

                else:
                    if user.channel == SMS:
                        d = Context({'name': user.name, 'newsletter_language': user.language})
                        msg = get_template('sms.txt')
                        content = msg.render(d)
                        try:
                            mobile = Device.objects.get(contributor=user)
                            send_sms(mobile.phone_number, content)
                            logger.info("Poll SMS sent to {0}".format(mobile.phone_number))
                        except:
                            logger.error("Impossible to send an SMS")

                # Update the list of targeted users
                user.enquiry = datetime.today().date()
                user.total_enquiry += 1
                user.save()

        connection.send_messages(messages)
        connection.close()
        logger.info("Poll of {0} sent".format(datetime.today().date()))
Ejemplo n.º 3
0
def send_message(mobile_number, message):
        send_sms(mobile_number, message)
Ejemplo n.º 4
0
    def test_sendSMS(self):
        msg = "hi from feowl"
        bad_phone = "915738710431"
        send_sms(bad_phone, msg)

        good_phone = "4915738710431"