Пример #1
0
def one_newsletter_signup(request, template_name):
    success = False

    # not in a footer, but we use the same form
    form = NewsletterFooterForm(request.locale, request.POST or None)

    if form.is_valid():
        data = form.cleaned_data
        request.newsletter_lang = data.get('lang', 'en') or 'en'
        kwargs = {
            'format': data['fmt'],
        }
        # add optional data
        kwargs.update(
            dict((k, data[k]) for k in ['country', 'lang', 'source_url']
                 if data[k]))
        try:
            basket.subscribe(data['email'], data['newsletter'], **kwargs)
        except basket.BasketException:
            log.exception("Error subscribing %s to newsletter %s" %
                          (data['email'], data['newsletter']))
            form.errors['__all__'] = form.error_class([general_error])
        else:
            success = True

    request.newsletter_form = form
    request.newsletter_success = success

    return l10n_utils.render(request, template_name, {})
Пример #2
0
 def create_action(self, request, serializer):
     email = serializer.data['email']
     newsletter = serializer.data['newsletter']
     basket.subscribe(email, newsletter,
                      format='H', country=request.REGION.slug,
                      lang=request.LANG, optin='Y',
                      trigger_welcome='Y')
Пример #3
0
def newsletter_subscribe(request):
    if request.method == 'POST':
        newsletters = request.POST.get('newsletters', None)
        form = NewsletterFooterForm(newsletters,
                                    l10n_utils.get_locale(request),
                                    request.POST)
        errors = []
        if form.is_valid():
            data = form.cleaned_data

            kwargs = {'format': data['fmt']}
            # add optional data
            kwargs.update(dict((k, data[k]) for k in ['country',
                                                      'lang',
                                                      'source_url',
                                                      'first_name',
                                                      'last_name', ]
                               if data[k]))
            try:
                basket.subscribe(data['email'], data['newsletters'],
                                 **kwargs)
            except basket.BasketException as e:
                if e.code == basket.errors.BASKET_INVALID_EMAIL:
                    errors.append(unicode(invalid_email_address))
                else:
                    log.exception("Error subscribing %s to newsletter %s" %
                                  (data['email'], data['newsletters']))
                    errors.append(unicode(general_error))

        else:
            if 'email' in form.errors:
                errors.append(_('Please enter a valid email address'))
            if 'privacy' in form.errors:
                errors.append(_('You must agree to the privacy notice'))
            for fieldname in ('fmt', 'lang', 'country'):
                if fieldname in form.errors:
                    errors.extend(form.errors[fieldname])

        # form error messages may contain unsanitized user input
        errors = map(escape, errors)

        if request.is_ajax():
            # return JSON
            if errors:
                resp = {
                    'success': False,
                    'errors': errors,
                }
            else:
                resp = {'success': True}

            return HttpResponseJSON(resp)
        else:
            ctx = {'newsletter_form': form}
            if not errors:
                ctx['success'] = True

            return l10n_utils.render(request, 'newsletter/mozilla-and-you.html', ctx)

    return l10n_utils.render(request, 'newsletter/mozilla-and-you.html')
Пример #4
0
def newsletter_subscribe(request):
    if request.method == 'POST':
        newsletters = request.POST.get('newsletters', None)
        form = NewsletterFooterForm(newsletters,
                                    l10n_utils.get_locale(request),
                                    request.POST)
        errors = []
        if form.is_valid():
            data = form.cleaned_data

            kwargs = {'format': data['fmt']}
            # add optional data
            kwargs.update(dict((k, data[k]) for k in ['country',
                                                      'lang',
                                                      'source_url',
                                                      'first_name',
                                                      'last_name', ]
                               if data[k]))
            try:
                basket.subscribe(data['email'], data['newsletters'],
                                 **kwargs)
            except basket.BasketException as e:
                if e.code == basket.errors.BASKET_INVALID_EMAIL:
                    errors.append(unicode(invalid_email_address))
                else:
                    log.exception("Error subscribing %s to newsletter %s" %
                                  (data['email'], data['newsletters']))
                    errors.append(unicode(general_error))

        else:
            if 'email' in form.errors:
                errors.append(_('Please enter a valid email address'))
            if 'privacy' in form.errors:
                errors.append(_('You must agree to the privacy notice'))
            for fieldname in ('fmt', 'lang', 'country'):
                if fieldname in form.errors:
                    errors.extend(form.errors[fieldname])

        # form error messages may contain unsanitized user input
        errors = map(escape, errors)

        if request.is_ajax():
            # return JSON
            if errors:
                resp = {
                    'success': False,
                    'errors': errors,
                }
            else:
                resp = {'success': True}

            return HttpResponseJSON(resp)
        else:
            ctx = {'newsletter_form': form}
            if not errors:
                ctx['success'] = True

            return l10n_utils.render(request, 'newsletter/mozilla-and-you.html', ctx)

    return l10n_utils.render(request, 'newsletter/mozilla-and-you.html')
Пример #5
0
 def create_action(self, request, serializer):
     email = serializer.data['email']
     newsletter = serializer.data['newsletter']
     lang = serializer.data['lang']
     country = self.get_country()
     basket.subscribe(email, newsletter, format='H', country=country,
                      lang=lang, optin='Y', trigger_welcome='Y')
Пример #6
0
 def post_list(self, request, **kwargs):
     data = self.deserialize(request, request.raw_post_data,
                             format='application/json')
     basket.subscribe(data['email'], 'marketplace',
                      format='H', country=request.REGION.slug,
                      lang=request.LANG, optin='Y',
                      trigger_welcome='Y')
Пример #7
0
def landing(request):
    """Developer Hub landing page."""
    _refresh_mdn(request)

    videos = [
        {"name": "airbnb", "path": "FirefoxMarketplace-airbnb-BR-RC-SD1%20640"},
        {"name": "evernote", "path": "FirefoxMarketplace-Evernote_BR-RC-SD1%20640"},
        {"name": "uken", "path": "FirefoxMarketplace-uken-BR-RC-SD1%20640"},
        {"name": "soundcloud", "path": "FirefoxMarketplace-Soundcloud-BR-RC-SD1%20640"},
        {"name": "box", "path": "FirefoxMarketplace_box-BR-RC-SD1%20640"},
    ]

    form = DevNewsletterForm(request.POST or None)

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

        try:
            basket.subscribe(data["email"], "app-dev", source_url=settings.SITE_URL)
            messages.success(request, _("Thank you for subscribing!"))
            return redirect("ecosystem.landing")
        except basket.BasketException:
            messages.error(request, _("We apologize, but an error " "occurred in our system. Please try again later."))

    return jingo.render(request, "ecosystem/landing.html", {"videos": videos, "newsletter_form": form})
Пример #8
0
    def process_request(self, request):
        success = False
        form = NewsletterFooterForm(request.locale, request.POST or None)

        is_footer_form = (request.method == 'POST' and
                          'newsletter-footer' in request.POST)
        if is_footer_form:
            if form.is_valid():
                data = form.cleaned_data
                kwargs = {
                    'format': data['fmt'],
                }
                # add optional data
                kwargs.update(dict((k, data[k]) for k in ['country',
                                                          'lang',
                                                          'source_url']
                                   if data[k]))
                try:
                    basket.subscribe(data['email'], data['newsletter'],
                                     **kwargs)
                    success = True
                except basket.BasketException:
                    msg = _lazy("We are sorry, but there was a problem "
                                "with our system. Please try again later!")
                    form.errors['__all__'] = form.error_class([msg])

        request.newsletter_form = form
        request.newsletter_success = success
Пример #9
0
def register(request, form):
    """Register a BrowserID-authed user with Affiliates.

    Not hooked up to a urlconf; called by other views.
    """
    if form.is_valid():
        verification = browserid_verify(request)
        if not verification:
            return None

        # Check if user exists (and auth if they do)
        user = authenticate(request=request)
        if user is None:
            email = verification['email']
            username = hashlib.sha1(email).hexdigest()[:30]
            display_name = form.cleaned_data['display_name']

            user = User.objects.create_user(username, email)
            user.is_active = True
            user.save()

            UserProfile.objects.create(user=user, display_name=display_name)

            # Subscribe user to mailing lists
            if form.cleaned_data['email_subscribe']:
                try:
                    subscribe(email, settings.BASKET_NEWSLETTER,
                              lang=get_language())
                except Exception, err:
                    log.warning(err)

            # New user must be authenticated to log in
            user = authenticate(request=request)
        login(request, user)
        return redirect('my_badges')
Пример #10
0
def marketplace(request):
    submitted = False
    error = False
    email = ''

    if request.method == 'POST':
        email = request.POST['email']
        format_ = 'T' if request.POST.get('format') == 'text' else 'H'
        newsletter = 'app-dev'

        if not email_re.match(email):
            error = 'email'

        if not request.POST.get('privacy', None):
            error = 'privacy'

        if not error:
            basket.subscribe(email, newsletter, format=format_)
            submitted = True
            
    return l10n_utils.render(request,
                             "marketplace/marketplace.html",
                             {'submitted': submitted,
                              'error': error,
                              'email': email})
Пример #11
0
def one_newsletter_signup(request, template_name):
    success = False

    # not in a footer, but we use the same form
    form = NewsletterFooterForm(request.locale, request.POST or None)

    if form.is_valid():
        data = form.cleaned_data
        request.newsletter_lang = data.get('lang', 'en') or 'en'
        kwargs = {
            'format': data['fmt'],
        }
        # add optional data
        kwargs.update(dict((k, data[k]) for k in ['country',
                                                  'lang',
                                                  'source_url']
                           if data[k]))
        try:
            basket.subscribe(data['email'], data['newsletter'],
                             **kwargs)
        except basket.BasketException:
            log.exception("Error subscribing %s to newsletter %s" %
                          (data['email'], data['newsletter']))
            form.errors['__all__'] = form.error_class([general_error])
        else:
            success = True

    request.newsletter_form = form
    request.newsletter_success = success

    return l10n_utils.render(request,
                             template_name,
                             {})
Пример #12
0
    def process_request(self, request):
        success = False
        form = NewsletterForm(request.locale, request.POST or None)

        is_footer_form = (request.method == 'POST'
                          and 'newsletter-footer' in request.POST)
        if is_footer_form:
            if form.is_valid():
                data = form.cleaned_data
                kwargs = {
                    'format': data['fmt'],
                }
                # add optional data
                kwargs.update(
                    dict((k, data[k])
                         for k in ['country', 'lang', 'source_url']
                         if data[k]))
                try:
                    basket.subscribe(data['email'], data['newsletter'],
                                     **kwargs)
                    success = True
                except basket.BasketException:
                    msg = _lazy("We are sorry, but there was a problem "
                                "with our system. Please try again later!")
                    form.errors['__all__'] = form.error_class([msg])

        request.newsletter_form = form
        request.newsletter_success = success
Пример #13
0
def handle_form(request, form):
    if form.is_valid():
        data = form.cleaned_data
        send(request, data)
        autorespond(request, data)

        if data.get('newsletter', False):
            if data.get('interest', False) == 'education':
                # custom-1788 is the privacy policy checkbox on this page
                payload = {'email': data['email'], 'custom-1788': '1'}
                try:
                    requests.post(
                        'https://sendto.mozilla.org/page/s/mentor-signup',
                        data=payload,
                        timeout=2)
                except requests.exceptions.RequestException:
                    pass
            else:
                try:
                    basket.subscribe(data['email'],
                                     'about-mozilla',
                                     source_url=request.build_absolute_uri())
                except basket.BasketException:
                    pass

        return True
    return False
Пример #14
0
def contribute(request):
    def has_contribute_form():
        return request.method == "POST" and "contribute-form" in request.POST

    def has_newsletter_form():
        return request.method == "POST" and "newsletter-form" in request.POST

    locale = getattr(request, "locale", "en-US")

    success = False
    newsletter_success = False

    # This is ugly, but we need to handle two forms. I would love if
    # these forms could post to separate pages and get redirected
    # back, but we're forced to keep the error/success workflow on the
    # same page. Please change this.
    if has_contribute_form():
        form = ContributeForm(request.POST)
        success = handle_contribute_form(request, form)
    else:
        form = ContributeForm()

    if has_newsletter_form():
        newsletter_form = NewsletterCountryForm(locale, request.POST, prefix="newsletter")
        if newsletter_form.is_valid():
            data = newsletter_form.cleaned_data

            try:
                basket.subscribe(data["email"], "about-mozilla", format=data["fmt"], country=data["country"])
                newsletter_success = True
            except basket.BasketException, e:
                msg = newsletter_form.error_class(
                    ["We apologize, but an error occurred in our system." "Please try again later."]
                )
                newsletter_form.errors["__all__"] = msg
Пример #15
0
def contribute(request, template, return_to_form):
    has_contribute_form = (request.method == 'POST'
                           and 'contribute-form' in request.POST)

    has_newsletter_form = (request.method == 'POST'
                           and 'newsletter-form' in request.POST)

    locale = getattr(request, 'locale', 'en-US')

    contribute_success = False
    newsletter_success = False

    # This is ugly, but we need to handle two forms. I would love if
    # these forms could post to separate pages and get redirected
    # back, but we're forced to keep the error/success workflow on the
    # same page. Please change this.
    if has_contribute_form:
        form = ContributeForm(request.POST)
        contribute_success = email_contribute.handle_form(request, form)
        if contribute_success:
            # If form was submitted successfully, return a new, empty
            # one.
            form = ContributeForm()
    else:
        form = ContributeForm()

    if has_newsletter_form:
        newsletter_form = NewsletterFooterForm(locale,
                                               request.POST,
                                               prefix='newsletter')
        if newsletter_form.is_valid():
            data = newsletter_form.cleaned_data

            try:
                basket.subscribe(data['email'],
                                 'about-mozilla',
                                 format=data['fmt'],
                                 country=data['country'])
                newsletter_success = True
            except basket.BasketException:
                msg = newsletter_form.error_class([
                    _('We apologize, but an error occurred in our system. '
                      'Please try again later.')
                ])
                newsletter_form.errors['__all__'] = msg
    else:
        newsletter_form = NewsletterFooterForm(locale, prefix='newsletter')

    return l10n_utils.render(
        request, template, {
            'form': form,
            'contribute_success': contribute_success,
            'newsletter_form': newsletter_form,
            'newsletter_success': newsletter_success,
            'return_to_form': return_to_form,
            'hide_form': hide_contrib_form(request.locale),
            'has_moz15': locale in settings.LOCALES_WITH_MOZ15
        })
Пример #16
0
def contribute(request, template, return_to_form):
    newsletter_id = 'about-mozilla'
    has_contribute_form = (request.method == 'POST' and
                           'contribute-form' in request.POST)

    has_newsletter_form = (request.method == 'POST' and
                           'newsletter-form' in request.POST)

    locale = getattr(request, 'locale', 'en-US')

    contribute_success = False
    newsletter_success = False

    # This is ugly, but we need to handle two forms. I would love if
    # these forms could post to separate pages and get redirected
    # back, but we're forced to keep the error/success workflow on the
    # same page. Please change this.
    if has_contribute_form:
        form = ContributeForm(request.POST)
        contribute_success = email_contribute.handle_form(request, form)
        if contribute_success:
            # If form was submitted successfully, return a new, empty
            # one.
            form = ContributeForm()
    else:
        form = ContributeForm()

    if has_newsletter_form:
        newsletter_form = NewsletterFooterForm(newsletter_id, locale,
                                               request.POST,
                                               prefix='newsletter')
        if newsletter_form.is_valid():
            data = newsletter_form.cleaned_data

            try:
                basket.subscribe(data['email'],
                                 newsletter_id,
                                 format=data['fmt'],
                                 country=data['country'])
                newsletter_success = True
            except basket.BasketException:
                msg = newsletter_form.error_class(
                    [_('We apologize, but an error occurred in our system. '
                       'Please try again later.')]
                )
                newsletter_form.errors['__all__'] = msg
    else:
        newsletter_form = NewsletterFooterForm(newsletter_id, locale, prefix='newsletter')

    return l10n_utils.render(request,
                             template,
                             {'form': form,
                              'contribute_success': contribute_success,
                              'newsletter_form': newsletter_form,
                              'newsletter_success': newsletter_success,
                              'return_to_form': return_to_form,
                              'hide_form': hide_contrib_form(request.locale),
                              'has_moz15': locale in settings.LOCALES_WITH_MOZ15})
Пример #17
0
 def create_action(self, request, serializer):
     email = serializer.data['email']
     basket.subscribe(email,
                      'marketplace',
                      format='H',
                      country=request.REGION.slug,
                      lang=request.LANG,
                      optin='Y',
                      trigger_welcome='Y')
Пример #18
0
def send_to_device_ajax(request):
    locale = l10n_utils.get_locale(request)
    phone_or_email = request.POST.get('phone-or-email')
    if not phone_or_email:
        return HttpResponseJSON({'success': False, 'errors': ['phone-or-email']})

    data = {
        'platform': request.POST.get('platform'),
    }

    data_type = 'email' if '@' in phone_or_email else 'number'
    data[data_type] = phone_or_email
    form = SendToDeviceWidgetForm(data)

    if form.is_valid():
        phone_or_email = form.cleaned_data.get(data_type)
        platform = form.cleaned_data.get('platform')

        # check for android & valid send to device test value
        # update email/sms message if conditions match
        send_to_device_test = request.POST.get('android-send-to-device-test')
        if (platform == 'android' and send_to_device_test in
                ['android-test-modal', 'android-test-embed']):

            platform = send_to_device_test

        if data_type == 'number':
            if platform in SMS_MESSAGES:
                try:
                    basket.send_sms(phone_or_email, SMS_MESSAGES[platform])
                except basket.BasketException:
                    return HttpResponseJSON({'success': False, 'errors': ['system']},
                                            status=400)
            else:
                # TODO define all platforms in SMS_MESSAGES
                return HttpResponseJSON({'success': False, 'errors': ['platform']})
        else:  # email
            if platform in EMAIL_MESSAGES:
                try:
                    basket.subscribe(phone_or_email, EMAIL_MESSAGES[platform],
                                     source_url=request.POST.get('source-url'),
                                     lang=locale)
                except basket.BasketException:
                    return HttpResponseJSON({'success': False, 'errors': ['system']},
                                            status=400)
            else:
                # TODO define all platforms in EMAIL_MESSAGES
                return HttpResponseJSON({'success': False, 'errors': ['platform']})

        resp_data = {'success': True}
    else:
        resp_data = {
            'success': False,
            'errors': form.errors.keys(),
        }

    return HttpResponseJSON(resp_data)
Пример #19
0
def send_to_device_ajax(request):
    locale = l10n_utils.get_locale(request)
    phone_or_email = request.POST.get('phone-or-email')
    if not phone_or_email:
        return HttpResponseJSON({'success': False, 'errors': ['phone-or-email']})

    data = {
        'platform': request.POST.get('platform'),
    }

    data_type = 'email' if '@' in phone_or_email else 'number'
    data[data_type] = phone_or_email
    form = SendToDeviceWidgetForm(data)

    if form.is_valid():
        phone_or_email = form.cleaned_data.get(data_type)
        platform = form.cleaned_data.get('platform')

        # check for customized widget and update email/sms
        # message if conditions match
        send_to_device_basket_id = request.POST.get('send-to-device-basket-id')
        if (platform == 'android' and
                send_to_device_basket_id == 'android-embed'):

            platform = 'android-embed'

        if data_type == 'number':
            if platform in SMS_MESSAGES:
                try:
                    basket.send_sms(phone_or_email, SMS_MESSAGES[platform])
                except basket.BasketException:
                    return HttpResponseJSON({'success': False, 'errors': ['system']},
                                            status=400)
            else:
                # TODO define all platforms in SMS_MESSAGES
                return HttpResponseJSON({'success': False, 'errors': ['platform']})
        else:  # email
            if platform in EMAIL_MESSAGES:
                try:
                    basket.subscribe(phone_or_email, EMAIL_MESSAGES[platform],
                                     source_url=request.POST.get('source-url'),
                                     lang=locale)
                except basket.BasketException:
                    return HttpResponseJSON({'success': False, 'errors': ['system']},
                                            status=400)
            else:
                # TODO define all platforms in EMAIL_MESSAGES
                return HttpResponseJSON({'success': False, 'errors': ['platform']})

        resp_data = {'success': True}
    else:
        resp_data = {
            'success': False,
            'errors': form.errors.keys(),
        }

    return HttpResponseJSON(resp_data)
Пример #20
0
def send_to_device_ajax(request):
    locale = l10n_utils.get_locale(request)
    email = request.POST.get('s2d-email')

    # ensure a value was entered in phone or email field
    if not email:
        return JsonResponse({'success': False, 'errors': ['s2d-email']})

    # pull message set from POST (not part of form, so wont be in cleaned_data)
    message_set = request.POST.get('message-set', 'default')

    # begin collecting data to pass to form constructor
    data = {
        'platform': request.POST.get('platform'),
        'email': email,
    }

    # instantiate the form with processed POST data
    form = SendToDeviceWidgetForm(data)

    if form.is_valid():
        email = form.cleaned_data.get('email')
        platform = form.cleaned_data.get('platform')

        # if no platform specified, default to 'all'
        if not platform:
            platform = 'all'

        # ensure we have a valid message set. if not, fall back to default
        if message_set not in SEND_TO_DEVICE_MESSAGE_SETS:
            MESSAGES = SEND_TO_DEVICE_MESSAGE_SETS['default']
        else:
            MESSAGES = SEND_TO_DEVICE_MESSAGE_SETS[message_set]

        if platform in MESSAGES['email']:
            try:
                basket.subscribe(
                    email,
                    MESSAGES['email'][platform],
                    source_url=request.POST.get('source-url'),
                    lang=locale,
                )
            except basket.BasketException:
                return JsonResponse({
                    'success': False,
                    'errors': ['system']
                },
                                    status=400)
        else:
            return JsonResponse({'success': False, 'errors': ['platform']})

        resp_data = {'success': True}
    else:
        resp_data = {'success': False, 'errors': list(form.errors)}

    return JsonResponse(resp_data)
Пример #21
0
def newsletter_subscribe(request):
    form = NewsletterSubscriptionForm(request.user, request.POST)
    if form.is_valid():
        data = form.cleaned_data
        try:
            basket.subscribe(
                data["email"], settings.FACEBOOK_MAILING_LIST, format=data["format"], country=data["country"]
            )
        except basket.BasketException, e:
            log.error("Error subscribing email %s to mailing list: %s" % (data["email"], e))
Пример #22
0
def newsletter_subscribe(request):
    form = NewsletterForm(request.POST)
    if form.is_valid():
        try:
            basket.subscribe(form.cleaned_data['email'],
                             settings.BASKET_NEWSLETTER,
                             source_url=request.build_absolute_uri())
        except basket.BasketException, e:
            log.error('Error subscribing email %s to mailing list: %s' %
                      (form.cleaned_data['email'], e))
Пример #23
0
def newsletter_subscribe(request):
    form = NewsletterForm(request.POST)
    if form.is_valid():
        try:
            basket.subscribe(form.cleaned_data['email'],
                             settings.BASKET_NEWSLETTER,
                             source_url=request.build_absolute_uri())
        except basket.BasketException, e:
            log.error('Error subscribing email %s to mailing list: %s' %
                      (form.cleaned_data['email'], e))
Пример #24
0
def contribute(request):
    def has_contribute_form():
        return (request.method == 'POST' and
                'contribute-form' in request.POST)

    def has_newsletter_form():
        return (request.method == 'POST' and
                'newsletter-form' in request.POST)


    locale = getattr(request, 'locale', 'en-US')

    success = False
    newsletter_success = False

    # This is ugly, but we need to handle two forms. I would love if
    # these forms could post to separate pages and get redirected
    # back, but we're forced to keep the error/success workflow on the
    # same page. Please change this.
    if has_contribute_form():
        form = ContributeForm(request.POST)

        if form.is_valid():
            data = form.cleaned_data
            contribute_send(data)
            contribute_autorespond(request, data)

            if data['newsletter']:
                try:
                    basket.subscribe(data['email'], 'about-mozilla')
                except basket.BasketException, e: pass

            success = True
    else:
        form = ContributeForm()

    if has_newsletter_form():
        newsletter_form = NewsletterCountryForm(locale,
                                                request.POST,
                                                prefix='newsletter')
        if newsletter_form.is_valid():
            data = newsletter_form.cleaned_data

            try:
                basket.subscribe(data['email'],
                                 'about-mozilla',
                                 format=data['fmt'],
                                 country=data['country'])
                newsletter_success = True
            except basket.BasketException, e:
                msg = newsletter_form.error_class(
                    ['We apologize, but an error occurred in our system.'
                     'Please try again later.']
                )
                newsletter_form.errors['__all__'] = msg
Пример #25
0
 def create_action(self, request, serializer):
     email = serializer.data["email"]
     basket.subscribe(
         email,
         "marketplace",
         format="H",
         country=request.REGION.slug,
         lang=request.LANG,
         optin="Y",
         trigger_welcome="Y",
     )
Пример #26
0
def newsletter_subscribe(request):
    form = NewsletterSubscriptionForm(request.user, request.POST)
    if form.is_valid():
        data = form.cleaned_data
        try:
            basket.subscribe(data['email'], settings.FACEBOOK_MAILING_LIST,
                             format=data['format'], country=data['country'],
                             source_url=request.build_absolute_uri())
        except basket.BasketException, e:
            log.error('Error subscribing email %s to mailing list: %s' %
                      (data['email'], e))
Пример #27
0
 def post_list(self, request, **kwargs):
     data = self.deserialize(request,
                             request.raw_post_data,
                             format='application/json')
     basket.subscribe(data['email'],
                      'marketplace',
                      format='H',
                      country=request.REGION.slug,
                      lang=request.LANG,
                      optin='Y',
                      trigger_welcome='Y')
Пример #28
0
 def save(self):
     self.instance.read_dev_agreement = datetime.datetime.now()
     self.instance.save()
     if self.cleaned_data.get('newsletter'):
         UserNotification.update_or_create(user=self.instance,
             notification_id=app_surveys.id, update={'enabled': True})
         basket.subscribe(self.instance.email,
                          'app-dev',
                          format='H',
                          source_url=os.path.join(settings.SITE_URL,
                                                  'developers/submit'))
Пример #29
0
 def save(self):
     self.instance.read_dev_agreement = datetime.datetime.now()
     self.instance.save()
     if self.cleaned_data.get('newsletter'):
         UserNotification.update_or_create(user=self.instance,
                                           notification_id=app_surveys.id,
                                           update={'enabled': True})
         basket.subscribe(self.instance.email,
                          'app-dev',
                          format='H',
                          source_url=os.path.join(settings.SITE_URL,
                                                  'developers/submit'))
Пример #30
0
def email_newsletter_form(ctx,
                          newsletters='mozilla-and-you',
                          title=None,
                          include_country=True,
                          include_language=True,
                          use_thankyou=True,
                          footer=True,
                          process_form=True):
    request = ctx['request']
    context = ctx.get_all()
    context.update(
        dict(
            id=newsletters,
            title=title,
            include_country=include_country,
            include_language=include_language,
            use_thankyou=use_thankyou,
            footer=footer,
        ))
    success = False
    form = NewsletterFooterForm(newsletters, get_locale(request), request.POST
                                or None)

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

            # If data['lang'] is set, pass it to the template.
            # If it's None, empty, or nonexistent, pass 'en'.
            context['lang'] = data.get('lang', 'en').strip() or 'en'

            kwargs = {'format': data['fmt']}
            # add optional data
            kwargs.update(
                dict((k, data[k]) for k in ['country', 'lang', 'source_url']
                     if data[k]))
            try:
                basket.subscribe(data['email'], form.newsletters, **kwargs)
            except basket.BasketException:
                log.exception("Error subscribing %s to newsletter %s" %
                              (data['email'], newsletters))
                msg = _lazy("We are sorry, but there was a problem "
                            "with our system. Please try again later!")
                form.errors['__all__'] = form.error_class([msg])
            else:
                success = True

    request.newsletter_success = success
    context.update(dict(form=form, success=success))
    html = jingo.render_to_string(request, 'newsletter/includes/form.html',
                                  context)
    if not (success and not use_thankyou):
        return jinja2.Markup(html)
Пример #31
0
 def post_list(self, request, **kwargs):
     data = self.deserialize(request, request.raw_post_data,
                             format='application/json')
     email = data['email']
     try:
         validate_email(email)
     except ValidationError:
         raise http_error(http.HttpBadRequest, 'Invalid email address')
     basket.subscribe(data['email'], 'marketplace',
                      format='H', country=request.REGION.slug,
                      lang=request.LANG, optin='Y',
                      trigger_welcome='Y')
Пример #32
0
 def post_list(self, request, **kwargs):
     data = self.deserialize(request, request.raw_post_data,
                             format='application/json')
     email = data['email']
     try:
         validate_email(email)
     except ValidationError:
         raise http_error(http.HttpBadRequest, 'Invalid email address')
     basket.subscribe(data['email'], 'marketplace',
                      format='H', country=request.REGION.slug,
                      lang=request.LANG, optin='Y',
                      trigger_welcome='Y')
Пример #33
0
def handle_contribute_form(request, form):
    if form.is_valid():
        data = form.cleaned_data
        contribute_send(data)
        contribute_autorespond(request, data)

        if data['newsletter']:
            try:
                basket.subscribe(data['email'], 'about-mozilla')
            except basket.BasketException, e:
                pass

        return True
Пример #34
0
def handle_contribute_form(request, form):
    if form.is_valid():
        data = form.cleaned_data
        contribute_send(data)
        contribute_autorespond(request, data)

        if data["newsletter"]:
            try:
                basket.subscribe(data["email"], "about-mozilla")
            except basket.BasketException, e:
                pass

        return True
Пример #35
0
def newsletter_subscribe(request):
    form = NewsletterSubscriptionForm(request.POST)
    if form.is_valid():
        data = form.cleaned_data
        try:
            basket.subscribe(data['email'], 'affiliates',
                             format=data['format'], country=data['country'],
                             source_url=request.build_absolute_uri())
        except basket.BasketException as e:
            log.error('Error subscribing email {0} to mailing list: {1}'.format(data['email'], e))
            return JSONResponse({'error': 'basket_error'}, status=500)

    return JSONResponse({'success': 'success'})
Пример #36
0
def newsletter_subscribe(request):
    form = NewsletterSubscriptionForm(request.user, request.POST)
    if form.is_valid():
        data = form.cleaned_data
        try:
            basket.subscribe(data['email'],
                             settings.FACEBOOK_MAILING_LIST,
                             format=data['format'],
                             country=data['country'],
                             source_url=request.build_absolute_uri())
        except basket.BasketException, e:
            log.error('Error subscribing email %s to mailing list: %s' %
                      (data['email'], e))
Пример #37
0
def partners(request):
    success = False
    form = NewsletterForm(request.POST or None)

    if request.method == 'POST':
        if form.is_valid():
            data = form.cleaned_data
            basket.subscribe(data['email'], 'app-dev', format=data['fmt'])
            success = True

    return l10n_utils.render(request, "marketplace/partners.html", {
        'form': form,
        'success': success
    })
Пример #38
0
def handle_contribute_form(request, form):
    if form.is_valid():
        data = form.cleaned_data
        locale = getattr(request, 'locale', 'en-US')
        contribute_send(data, locale)
        contribute_autorespond(request, data, locale)

        if data['newsletter']:
            try:
                basket.subscribe(data['email'], 'about-mozilla')
            except basket.BasketException, e: pass

        return True
    return False
Пример #39
0
def marketplace(request):
    success = False
    form = NewsletterForm(request.POST or None)

    if request.method == 'POST':
        if form.is_valid():
            data = form.cleaned_data
            basket.subscribe(data['email'], 'app-dev', format=data['fmt'])
            success = True
            
    return l10n_utils.render(request,
                             "marketplace/marketplace.html",
                             {'form': form,
                              'success': success})
Пример #40
0
def handle_form(request, form):
    if form.is_valid():
        data = form.cleaned_data
        send(request, data)
        autorespond(request, data)

        if data['newsletter']:
            try:
                basket.subscribe(data['email'], 'about-mozilla')
            except basket.BasketException:
                pass

        return True
    return False
Пример #41
0
def send_to_device_ajax(request):
    locale = l10n_utils.get_locale(request)
    phone_or_email = request.POST.get("phone-or-email")
    if not phone_or_email:
        return HttpResponseJSON({"success": False, "errors": ["phone-or-email"]})

    data = {"platform": request.POST.get("platform")}

    data_type = "email" if "@" in phone_or_email else "number"
    data[data_type] = phone_or_email
    form = SendToDeviceWidgetForm(data)

    if form.is_valid():
        phone_or_email = form.cleaned_data.get(data_type)
        platform = form.cleaned_data.get("platform")

        # check for customized widget and update email/sms
        # message if conditions match
        send_to_device_basket_id = request.POST.get("send-to-device-basket-id")
        if platform == "android" and send_to_device_basket_id == "android-embed":

            platform = "android-embed"

        if data_type == "number":
            if platform in SMS_MESSAGES:
                try:
                    basket.send_sms(phone_or_email, SMS_MESSAGES[platform])
                except basket.BasketException:
                    return HttpResponseJSON({"success": False, "errors": ["system"]}, status=400)
            else:
                # TODO define all platforms in SMS_MESSAGES
                return HttpResponseJSON({"success": False, "errors": ["platform"]})
        else:  # email
            if platform in EMAIL_MESSAGES:
                try:
                    basket.subscribe(
                        phone_or_email, EMAIL_MESSAGES[platform], source_url=request.POST.get("source-url"), lang=locale
                    )
                except basket.BasketException:
                    return HttpResponseJSON({"success": False, "errors": ["system"]}, status=400)
            else:
                # TODO define all platforms in EMAIL_MESSAGES
                return HttpResponseJSON({"success": False, "errors": ["platform"]})

        resp_data = {"success": True}
    else:
        resp_data = {"success": False, "errors": form.errors.keys()}

    return HttpResponseJSON(resp_data)
Пример #42
0
def email_newsletter_form(ctx, newsletters='mozilla-and-you', title=None,
                          include_country=True, include_language=True,
                          use_thankyou=True, footer=True, process_form=True):
    request = ctx['request']
    context = ctx.get_all()
    context.update(dict(
        id=newsletters,
        title=title,
        include_country=include_country,
        include_language=include_language,
        use_thankyou=use_thankyou,
        footer=footer,
    ))
    success = False
    form = NewsletterFooterForm(newsletters, get_locale(request),
                                request.POST or None)

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

            # If data['lang'] is set, pass it to the template.
            # If it's None, empty, or nonexistent, pass 'en'.
            context['lang'] = data.get('lang', 'en').strip() or 'en'

            kwargs = {'format': data['fmt']}
            # add optional data
            kwargs.update(dict((k, data[k]) for k in ['country',
                                                      'lang',
                                                      'source_url']
                               if data[k]))
            try:
                basket.subscribe(data['email'], form.newsletters,
                                 **kwargs)
            except basket.BasketException as e:
                if e.code == basket.errors.BASKET_INVALID_EMAIL:
                    form.errors['email'] = form.error_class([invalid_email_address])
                else:
                    log.exception("Error subscribing %s to newsletter %s" %
                                  (data['email'], form.newsletters))
                    form.errors['__all__'] = form.error_class([general_error])
            else:
                success = True

    request.newsletter_success = success
    context.update(dict(form=form, success=success))
    html = jingo.render_to_string(request, 'newsletter/includes/form.html', context)
    if not (success and not use_thankyou):
        return jinja2.Markup(html)
Пример #43
0
 def save(self):
     self.instance.read_dev_agreement = datetime.datetime.now()
     self.instance.save()
     if self.cleaned_data.get("newsletter"):
         UserNotification.update_or_create(
             user=self.instance, notification_id=app_surveys.id, update={"enabled": True}
         )
         basket.subscribe(
             self.instance.email,
             "app-dev",
             format="H",
             country=self.request.REGION.slug,
             lang=self.request.LANG,
             source_url=os.path.join(settings.SITE_URL, "developers/submit"),
         )
Пример #44
0
    def test_subscribe_sync_y_api_key_not_in_args(self):
        """
        subscribe calls request with the expected parms and returns the result
        when sync='Y', adds the API key from the settings to the headers
        """
        api_key = 'foo_bar'
        email = "*****@*****.**"
        newsletters = ['news1', 'news2']
        kwargs = {
            'arg1': 100,
            'arg2': 200,
            'sync': 'Y',
        }
        expected_kwargs = kwargs.copy()
        expected_kwargs['email'] = email
        expected_kwargs['newsletters'] = newsletters
        with nested(patch('basket.base.request', autospec=True),
                    patch('basket.base.BASKET_API_KEY', api_key)) \
                as (request_call, API_KEY):
            result = subscribe(email, newsletters, **kwargs)

        request_call.assert_called_with('post',
                                        'subscribe',
                                        data=expected_kwargs,
                                        headers={'x-api-key': api_key})
        self.assertEqual(request_call.return_value, result)
Пример #45
0
def apps_newsletter(request):
    if request.method == 'POST':
        form = SubscriptionForm(request.locale, data=request.POST)
        context = {'form': form}
        if form.is_valid():
            optin = 'N'
            if request.locale == 'en-US':
                optin = 'Y'
            for i in range(constance.config.BASKET_RETRIES):
                try:
                    result = basket.subscribe(email=form.cleaned_data['email'],
                                 newsletters=settings.BASKET_APPS_NEWSLETTER,
                                 country=form.cleaned_data['country'],
                                 format=form.cleaned_data['format'],
                                 lang=request.locale,
                                 optin=optin)
                    if result.get('status') != 'error':
                        break
                except BasketException:
                    if i == constance.config.BASKET_RETRIES:
                        return HttpResponseServerError()
                    else:
                        time.sleep(constance.config.BASKET_RETRY_WAIT * i)
            del context['form']

    else:
        context = {'form': SubscriptionForm(request.locale)}

    return render(request, 'landing/apps_newsletter.html', context)
Пример #46
0
def newsletter_subscribe(request, email, cleaned_data):
    subscription_details = get_subscription_details(email)
    subscribed = subscribed_to_newsletter(subscription_details)

    if cleaned_data['newsletter'] and not subscribed:
        if not cleaned_data['agree']:
            raise forms.ValidationError(PRIVACY_REQUIRED)
        optin = 'N'
        if request.locale == 'en-US':
            optin = 'Y'
        for i in range(constance.config.BASKET_RETRIES):
            try:
                result = basket.subscribe(
                    email=email,
                    newsletters=settings.BASKET_APPS_NEWSLETTER,
                    country=cleaned_data['country'],
                    format=cleaned_data['format'],
                    lang=request.locale,
                    optin=optin,
                    source_url=request.build_absolute_uri())
                if result.get('status') != 'error':
                    break
            except BasketException:
                if i == constance.config.BASKET_RETRIES:
                    return HttpResponseServerError()
                else:
                    time.sleep(constance.config.BASKET_RETRY_WAIT * i)
    elif subscription_details:
        basket.unsubscribe(subscription_details['token'],
                           email,
                           newsletters=settings.BASKET_APPS_NEWSLETTER)
Пример #47
0
def apps_newsletter(request):
    if request.method == 'POST':
        form = SubscriptionForm(request.locale, data=request.POST)
        context = {'form': form}
        if form.is_valid():
            optin = 'N'
            if request.locale == 'en-US':
                optin = 'Y'
            for i in range(constance.config.BASKET_RETRIES):
                try:
                    result = basket.subscribe(
                        email=form.cleaned_data['email'],
                        newsletters=settings.BASKET_APPS_NEWSLETTER,
                        country=form.cleaned_data['country'],
                        format=form.cleaned_data['format'],
                        lang=request.locale,
                        optin=optin)
                    if result.get('status') != 'error':
                        break
                except BasketException:
                    if i == constance.config.BASKET_RETRIES:
                        return HttpResponseServerError()
                    else:
                        time.sleep(constance.config.BASKET_RETRY_WAIT * i)
            del context['form']

    else:
        context = {'form': SubscriptionForm(request.locale)}

    return render(request, 'landing/apps_newsletter.html', context)
Пример #48
0
 def subscribe(self, request, email):
     subscription_details = self.get_subscription_details(email)
     if 'subscribe_needed' in self.cleaned_data:
         optin = 'N'
         if request.locale == 'en-US':
             optin = 'Y'
         basket_data = {
             'email': email,
             'newsletters': settings.BASKET_APPS_NEWSLETTER,
             'country': self.cleaned_data['country'],
             'format': self.cleaned_data['format'],
             'lang': request.locale,
             'optin': optin,
             'source_url': request.build_absolute_uri()
         }
         for retry in range(config.BASKET_RETRIES):
             try:
                 result = basket.subscribe(**basket_data)
                 if result.get('status') != 'error':
                     break
             except BasketException:
                 if retry == config.BASKET_RETRIES:
                     return HttpResponseServerError()
                 else:
                     time.sleep(config.BASKET_RETRY_WAIT * retry)
     elif subscription_details:
         basket.unsubscribe(subscription_details['token'],
                            email,
                            newsletters=settings.BASKET_APPS_NEWSLETTER)
Пример #49
0
    def test_subscribe_sync_y_api_key_not_in_args(self):
        """
        subscribe calls request with the expected parms and returns the result
        when sync='Y', adds the API key from the settings to the headers
        """
        api_key = 'foo_bar'
        email = "*****@*****.**"
        newsletters = ['news1', 'news2']
        kwargs = {
            'arg1': 100,
            'arg2': 200,
            'sync': 'Y',
        }
        expected_kwargs = kwargs.copy()
        expected_kwargs['email'] = email
        expected_kwargs['newsletters'] = newsletters
        with nested(patch('basket.base.request', autospec=True),
                    patch('basket.base.BASKET_API_KEY', api_key)) \
                as (request_call, API_KEY):
            result = subscribe(email, newsletters, **kwargs)

        request_call.assert_called_with('post', 'subscribe',
                                        data=expected_kwargs,
                                        headers={'x-api-key': api_key})
        self.assertEqual(request_call.return_value, result)
Пример #50
0
 def subscribe(self, request, email):
     subscription_details = self.get_subscription_details(email)
     if 'subscribe_needed' in self.cleaned_data:
         optin = 'N'
         if request.locale == 'en-US':
             optin = 'Y'
         basket_data = {
             'email': email,
             'newsletters': settings.BASKET_APPS_NEWSLETTER,
             'country': self.cleaned_data['country'],
             'format': self.cleaned_data['format'],
             'lang': request.locale,
             'optin': optin,
             'source_url': request.build_absolute_uri()
         }
         for retry in range(config.BASKET_RETRIES):
             try:
                 result = basket.subscribe(**basket_data)
                 if result.get('status') != 'error':
                     break
             except BasketException:
                 if retry == config.BASKET_RETRIES:
                     return HttpResponseServerError()
                 else:
                     time.sleep(config.BASKET_RETRY_WAIT * retry)
     elif subscription_details:
         basket.unsubscribe(subscription_details['token'], email,
                            newsletters=settings.BASKET_APPS_NEWSLETTER)
Пример #51
0
    def save(self):
        data = self.cleaned_data
        result = basket.subscribe(
            data['email'],
            self.newsletters(),
            format=data['fmt'],
            country=data['country'],
            welcome_message='Student_Ambassadors_Welcome',
            source_url=data['source_url'],
            sync='Y')

        data = {
            'FIRST_NAME': data['first_name'],
            'LAST_NAME': data['last_name'],
            'STUDENTS_CURRENT_STATUS': data['status'],
            'STUDENTS_SCHOOL': data['school'],
            'STUDENTS_GRAD_YEAR': data['grad_year'],
            'STUDENTS_MAJOR': data['major'],
            'COUNTRY_': data['country'],
            'STUDENTS_CITY': data['city'],
            'STUDENTS_ALLOW_SHARE': data['share_information'],
        }
        request('post',
                'custom_update_student_ambassadors',
                token=result['token'],
                data=data)
Пример #52
0
def vpn_invite_waitlist(request):
    errors = []
    locale = l10n_utils.get_locale(request)
    form = VPNWaitlistForm(locale, request.POST)
    if form.is_valid():
        data = form.cleaned_data
        kwargs = {
            "email": data["email"],
            "fpn_platform": ",".join(data["platforms"]),
            "fpn_country": data["country"],
            "lang": data["lang"],
            "newsletters": "guardian-vpn-waitlist",
        }
        if settings.BASKET_API_KEY:
            kwargs["api_key"] = settings.BASKET_API_KEY

        # NOTE this is not a typo; Referrer is misspelled in the HTTP spec
        # https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.36
        if not kwargs.get("source_url") and request.headers.get("Referer"):
            kwargs["source_url"] = request.headers["Referer"]

        try:
            basket.subscribe(**kwargs)
        except basket.BasketException as e:
            if e.code == basket.errors.BASKET_INVALID_EMAIL:
                errors.append(str(invalid_email_address))
            else:
                errors.append(str(general_error))
    else:
        if "email" in form.errors:
            errors.append(ftl("newsletter-form-please-enter-a-valid"))
        if "privacy" in form.errors:
            errors.append(ftl("newsletter-form-you-must-agree-to"))
        for fieldname in ("fmt", "lang", "country"):
            if fieldname in form.errors:
                errors.extend(form.errors[fieldname])

    if errors:
        errors = [escape(e) for e in errors]
        resp = {
            "success": False,
            "errors": errors,
        }
    else:
        resp = {"success": True}

    return JsonResponse(resp)
Пример #53
0
def vpn_invite_waitlist(request):
    errors = []
    locale = l10n_utils.get_locale(request)
    form = VPNWaitlistForm(locale, request.POST)
    if form.is_valid():
        data = form.cleaned_data
        kwargs = {
            'email': data['email'],
            'fpn_platform': ','.join(data['platforms']),
            'fpn_country': data['country'],
            'lang': data['lang'],
            'newsletters': 'guardian-vpn-waitlist',
        }
        if settings.BASKET_API_KEY:
            kwargs['api_key'] = settings.BASKET_API_KEY

        # NOTE this is not a typo; Referrer is misspelled in the HTTP spec
        # https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.36
        if not kwargs.get('source_url') and request.META.get('HTTP_REFERER'):
            kwargs['source_url'] = request.META['HTTP_REFERER']

        try:
            basket.subscribe(**kwargs)
        except basket.BasketException as e:
            if e.code == basket.errors.BASKET_INVALID_EMAIL:
                errors.append(str(invalid_email_address))
            else:
                errors.append(str(general_error))
    else:
        if 'email' in form.errors:
            errors.append(ftl('newsletter-form-please-enter-a-valid'))
        if 'privacy' in form.errors:
            errors.append(ftl('newsletter-form-you-must-agree-to'))
        for fieldname in ('fmt', 'lang', 'country'):
            if fieldname in form.errors:
                errors.extend(form.errors[fieldname])

    if errors:
        errors = [escape(e) for e in errors]
        resp = {
            'success': False,
            'errors': errors,
        }
    else:
        resp = {'success': True}

    return JsonResponse(resp)
Пример #54
0
def send_to_device_ajax(request):
    locale = l10n_utils.get_locale(request)
    phone_or_email = request.POST.get('phone-or-email')
    if not phone_or_email:
        return HttpResponseJSON({'success': False, 'errors': ['phone-or-email']})

    data = {
        'platform': request.POST.get('platform'),
    }

    data_type = 'email' if '@' in phone_or_email else 'number'
    data[data_type] = phone_or_email
    form = SendToDeviceWidgetForm(data)
    if form.is_valid():
        phone_or_email = form.cleaned_data.get(data_type)
        platform = form.cleaned_data.get('platform')
        if data_type == 'number':
            if platform in SMS_MESSAGES:
                try:
                    basket.send_sms(phone_or_email, SMS_MESSAGES[platform])
                except basket.BasketException:
                    return HttpResponseJSON({'success': False, 'errors': ['system']},
                                            status=400)
            else:
                # TODO define all platforms in SMS_MESSAGES
                return HttpResponseJSON({'success': False, 'errors': ['platform']})
        else:  # email
            if platform in EMAIL_MESSAGES:
                try:
                    basket.subscribe(phone_or_email, EMAIL_MESSAGES[platform],
                                     source_url=request.POST.get('source-url'),
                                     lang=locale)
                except basket.BasketException:
                    return HttpResponseJSON({'success': False, 'errors': ['system']},
                                            status=400)
            else:
                # TODO define all platforms in EMAIL_MESSAGES
                return HttpResponseJSON({'success': False, 'errors': ['platform']})

        resp_data = {'success': True}
    else:
        resp_data = {
            'success': False,
            'errors': form.errors.keys(),
        }

    return HttpResponseJSON(resp_data)
Пример #55
0
def landing(request):
    """Developer Hub landing page."""
    videos = [
        {
            'name': 'airbnb',
            'path': 'FirefoxMarketplace-airbnb-BR-RC-SD1%20640'
        },
        {
            'name': 'evernote',
            'path': 'FirefoxMarketplace-Evernote_BR-RC-SD1%20640'
        },
        {
            'name': 'uken',
            'path': 'FirefoxMarketplace-uken-BR-RC-SD1%20640'
        },
        {
            'name': 'soundcloud',
            'path': 'FirefoxMarketplace-Soundcloud-BR-RC-SD1%20640'
        },
        {
            'name': 'box',
            'path': 'FirefoxMarketplace_box-BR-RC-SD1%20640'
        }
    ]

    form = DevNewsletterForm(request.LANG, request.POST or None)

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

        try:
            basket.subscribe(data['email'],
                             'app-dev',
                             format=data['email_format'],
                             source_url=settings.SITE_URL)
            messages.success(request, _('Thank you for subscribing!'))
            return redirect('ecosystem.landing')
        except basket.BasketException as e:
            log.error(
                'Basket exception in ecosystem newsletter: %s' % e)
            messages.error(
                request, _('We apologize, but an error occurred in our '
                           'system. Please try again later.'))

    return jingo.render(request, 'ecosystem/landing.html',
        {'videos': videos, 'newsletter_form': form})
Пример #56
0
 def save(self):
     data = self.cleaned_data
     basket.subscribe(
         data['email'],
         self.newsletters(),
         format=data['fmt'],
         country=data['country'],
         source_url=data['source_url'],
         first_name=data['first_name'],
         last_name=data['last_name'],
         fsa_current_status=data['status'],
         fsa_school=data['school'],
         fsa_grad_year=data['grad_year'],
         fsa_major=data['major_free_text'] or data['major'],
         fsa_city=data['city'],
         fsa_allow_share=data['share_information'],
     )
Пример #57
0
def newsletter_subscribe(request):
    form = NewsletterSubscriptionForm(request.POST)
    if form.is_valid():
        data = form.cleaned_data
        try:
            basket.subscribe(data['email'],
                             'affiliates',
                             format=data['format'],
                             country=data['country'],
                             source_url=request.build_absolute_uri())
        except basket.BasketException as e:
            log.error(
                'Error subscribing email {0} to mailing list: {1}'.format(
                    data['email'], e))
            return JSONResponse({'error': 'basket_error'}, status=500)

    return JSONResponse({'success': 'success'})
Пример #58
0
def subscribe_newsletter(user_profile, basket_id, request=None):
    response = basket.subscribe(
        user_profile.email,
        basket_id,
        sync='Y',
        source_url=request.build_absolute_uri() if request else None,
        optin='Y')
    return response['status'] == 'ok'
Пример #59
0
def contribute(request, template, return_to_form):
    def has_contribute_form():
        return (request.method == 'POST' and 'contribute-form' in request.POST)

    def has_newsletter_form():
        return (request.method == 'POST' and 'newsletter-form' in request.POST)

    locale = getattr(request, 'locale', 'en-US')

    success = False
    newsletter_success = False

    # This is ugly, but we need to handle two forms. I would love if
    # these forms could post to separate pages and get redirected
    # back, but we're forced to keep the error/success workflow on the
    # same page. Please change this.
    if has_contribute_form():
        form = ContributeForm(request.POST)
        success = handle_contribute_form(request, form)
        if success:
            # If form was submitted successfully, return a new, empty
            # one.
            form = ContributeForm()
    else:
        form = ContributeForm()

    if has_newsletter_form():
        newsletter_form = NewsletterCountryForm(locale,
                                                request.POST,
                                                prefix='newsletter')
        if newsletter_form.is_valid():
            data = newsletter_form.cleaned_data

            try:
                basket.subscribe(data['email'],
                                 'about-mozilla',
                                 format=data['fmt'],
                                 country=data['country'])
                newsletter_success = True
            except basket.BasketException, e:
                msg = newsletter_form.error_class([
                    'We apologize, but an error occurred in our system.'
                    'Please try again later.'
                ])
                newsletter_form.errors['__all__'] = msg