def manage_subscriptions(request): user = request.user email = UserEmail.get_primary_email(user) if request.method == 'GET': context = csrf(request) context.update({ 'page': 'subscriptions', 'email': email, 'AUTH_PROVIDERS': auth.get_auth_providers(), 'has_newsletters': newsletter.is_enabled, 'subscriptions': newsletter.get_subscriptions(user), }) return render_to_response('sentry/account/subscriptions.html', context, request) subscribed = request.POST.get('subscribed') == '1' try: list_id = int(request.POST.get('listId', '')) except ValueError: return HttpResponse('bad request', status=400) kwargs = { 'list_id': list_id, 'subscribed': subscribed, 'verified': email.is_verified, } if not subscribed: kwargs['unsubscribed_date'] = timezone.now() else: kwargs['subscribed_date'] = timezone.now() newsletter.create_or_update_subscription(user, **kwargs) return HttpResponse()
def put(self, request, user): """ Update Account Subscriptions ```````````````````````````` Update account subscriptions to newsletter :param int listId: id of newsletter list :param boolean subscribed: should be subscribed to newsletter :auth: required """ validator = NewsletterValidator(data=request.DATA) if not validator.is_valid(): return self.respond(validator.errors, status=400) result = validator.object email = UserEmail.get_primary_email(user) kwargs = { 'list_id': result['listId'], 'subscribed': result['subscribed'], 'verified': email.is_verified, } if not result['subscribed']: kwargs['unsubscribed_date'] = timezone.now() else: kwargs['subscribed_date'] = timezone.now() newsletter.create_or_update_subscription(user, **kwargs) return self.respond(status=204)
def put(self, request, user): """ Update Account Subscriptions ```````````````````````````` Update account subscriptions to newsletter :param int listId: id of newsletter list :param boolean subscribed: should be subscribed to newsletter :auth: required """ validator = NewsletterValidator(data=request.data) if not validator.is_valid(): return self.respond(validator.errors, status=400) result = validator.validated_data email = UserEmail.get_primary_email(user) kwargs = { 'list_id': result['listId'], 'subscribed': result['subscribed'], 'verified': email.is_verified, } if not result['subscribed']: kwargs['unsubscribed_date'] = timezone.now() else: kwargs['subscribed_date'] = timezone.now() newsletter.create_or_update_subscription(user, **kwargs) return self.respond(status=204)
def manage_subscriptions(request): user = request.user email = UserEmail.get_primary_email(user) if request.method == 'GET': context = csrf(request) context.update( { 'page': 'subscriptions', 'email': email, 'AUTH_PROVIDERS': auth.get_auth_providers(), 'has_newsletters': newsletter.is_enabled, 'subscriptions': newsletter.get_subscriptions(user), } ) return render_to_response('sentry/account/subscriptions.html', context, request) subscribed = request.POST.get('subscribed') == '1' try: list_id = int(request.POST.get('listId', '')) except ValueError: return HttpResponse('bad request', status=400) kwargs = { 'list_id': list_id, 'subscribed': subscribed, 'verified': email.is_verified, } if not subscribed: kwargs['unsubscribed_date'] = timezone.now() else: kwargs['subscribed_date'] = timezone.now() newsletter.create_or_update_subscription(user, **kwargs) return HttpResponse()
def add_email(email, user, subscribe_newsletter=False): """ Adds an email to user account Can be either primary or secondary """ # Bad email if email is None: raise InvalidEmailError try: with transaction.atomic(): new_email = UserEmail.objects.create(user=user, email=email) except IntegrityError: raise DuplicateEmailError else: new_email.set_hash() new_email.save() user.send_confirm_email_singular(new_email) # Update newsletter subscription and mark as unverified if subscribe_newsletter: newsletter.create_or_update_subscription( user=user, verified=False, list_id=newsletter.get_default_list_id(), ) return new_email
def post(self, request, user): """ Configure Newsletter Subscription ````````````````````````````````` Update the default newsletter subscription. :param boolean subscribed: should be subscribed to newsletter :auth: required """ validator = DefaultNewsletterValidator(data=request.DATA) if not validator.is_valid(): return self.respond(validator.errors, status=400) result = validator.object email = UserEmail.get_primary_email(user) kwargs = { 'subscribed': result['subscribed'], 'verified': email.is_verified, 'list_id': newsletter.get_default_list_id(), } if not result['subscribed']: kwargs['unsubscribed_date'] = timezone.now() else: kwargs['subscribed_date'] = timezone.now() newsletter.create_or_update_subscription(user, **kwargs) user.update( flags=F('flags').bitand(~User.flags.newsletter_consent_prompt), ) return self.respond(status=204)
def save(self, commit=True): user = super(RegistrationForm, self).save(commit=False) user.email = user.username user.set_password(self.cleaned_data['password']) if commit: user.save() if self.cleaned_data.get('subscribe'): newsletter.create_or_update_subscription(user, list_id=newsletter.get_default_list_id()) return user
def put(self, request, user): """ Update Account Subscriptionsoptions ````````````````````````````````` Update account subscriptions to newsletter :param int listId: id of newsletter list :param boolean subscribed: should be subscribed to newsletter :auth: required """ email = UserEmail.get_primary_email(user) # Can't handle subscriptions without a verified email if not email.is_verified: return Response( { 'detail': 'Must have verified email to subscribe to newsletter.' }, status=status.HTTP_400_BAD_REQUEST) subscribed = request.DATA.get('subscribed') try: list_id = int(request.DATA.get('listId', '')) except ValueError: return Response(status=status.HTTP_400_BAD_REQUEST) kwargs = { 'list_id': list_id, 'subscribed': subscribed, 'verified': email.is_verified, } if not subscribed: kwargs['unsubscribed_date'] = timezone.now() else: kwargs['subscribed_date'] = timezone.now() newsletter.create_or_update_subscription(user, **kwargs) return Response(status=status.HTTP_204_NO_CONTENT)