def register_user(request, domain_type=None): domain_type = domain_type or 'commcare' if domain_type not in DOMAIN_TYPES: raise Http404() prefilled_email = request.GET.get('e', '') context = get_domain_context(domain_type) if request.user.is_authenticated(): # Redirect to a page which lets user choose whether or not to create a new account domains_for_user = Domain.active_for_user(request.user) if len(domains_for_user) == 0: return redirect("registration_domain", domain_type=domain_type) else: return redirect("homepage") else: if request.method == 'POST': form = NewWebUserRegistrationForm(request.POST) if form.is_valid(): activate_new_user(form, ip=get_ip(request)) new_user = authenticate(username=form.cleaned_data['email'], password=form.cleaned_data['password']) login(request, new_user) track_workflow.delay(new_user.email, "Requested new account") meta = { 'HTTP_X_FORWARDED_FOR': request.META.get('HTTP_X_FORWARDED_FOR'), 'REMOTE_ADDR': request.META.get('REMOTE_ADDR'), 'opt_into_emails': form.cleaned_data['email_opt_in'], } track_created_hq_account_on_hubspot.delay(new_user, request.COOKIES, meta) requested_domain = form.cleaned_data['hr_name'] if form.cleaned_data['create_domain']: org = None try: requested_domain = request_new_domain( request, form, org, new_user=True, domain_type=domain_type) except NameUnavailableException: context.update({ 'error_msg': _('Project name already taken - please try another'), 'show_homepage_link': 1 }) return render(request, 'error.html', context) context = get_domain_context(form.cleaned_data['domain_type']).update({ 'alert_message': _("An email has been sent to %s.") % request.user.username, 'requested_domain': requested_domain, 'track_domain_registration': True, }) return render(request, 'registration/confirmation_sent.html', context) else: form = NewWebUserRegistrationForm( initial={'domain_type': domain_type, 'email': prefilled_email, 'create_domain': True}) context.update({ 'form': form, 'domain_type': domain_type, }) return render(request, 'registration/create_new_user.html', context)
def confirm_domain(request, guid=None): error = None # Did we get a guid? if guid is None: error = _( 'An account activation key was not provided. If you think this ' 'is an error, please contact the system administrator.') # Does guid exist in the system? else: req = RegistrationRequest.get_by_guid(guid) if not req: error = _( 'The account activation key "%s" provided is invalid. If you ' 'think this is an error, please contact the system ' 'administrator.') % guid if error is not None: context = { 'message_title': _('Account not activated'), 'message_subtitle': _('Email not yet confirmed'), 'message_body': error, } return render(request, 'registration/confirmation_error.html', context) requested_domain = Domain.get_by_name(req.domain) # Has guid already been confirmed? if requested_domain.is_active: assert (req.confirm_time is not None and req.confirm_ip is not None) messages.success( request, 'Your account %s has already been activated. ' 'No further validation is required.' % req.new_user_username) return HttpResponseRedirect( reverse("dashboard_default", args=[requested_domain])) # Set confirm time and IP; activate domain and new user who is in the req.confirm_time = datetime.utcnow() req.confirm_ip = get_ip(request) req.save() requested_domain.is_active = True requested_domain.save() requesting_user = WebUser.get_by_username(req.new_user_username) send_new_request_update_email(requesting_user, get_ip(request), requested_domain.name, is_confirming=True) messages.success( request, 'Your account has been successfully activated. Thank you for taking ' 'the time to confirm your email address: %s.' % (requesting_user.username)) track_workflow.delay(requesting_user.email, "Confirmed new project") track_confirmed_account_on_hubspot.delay(requesting_user) return HttpResponseRedirect( reverse("dashboard_default", args=[requested_domain]))
def confirm_domain(request, guid=None): error = None # Did we get a guid? if guid is None: error = _('An account activation key was not provided. If you think this ' 'is an error, please contact the system administrator.') # Does guid exist in the system? else: req = RegistrationRequest.get_by_guid(guid) if not req: error = _('The account activation key "%s" provided is invalid. If you ' 'think this is an error, please contact the system ' 'administrator.') % guid if error is not None: context = { 'message_title': _('Account not activated'), 'message_subtitle': _('Email not yet confirmed'), 'message_body': error, } return render(request, 'registration/confirmation_error.html', context) requested_domain = Domain.get_by_name(req.domain) # Has guid already been confirmed? if requested_domain.is_active: assert(req.confirm_time is not None and req.confirm_ip is not None) messages.success(request, 'Your account %s has already been activated. ' 'No further validation is required.' % req.new_user_username) return HttpResponseRedirect(reverse("dashboard_default", args=[requested_domain])) # Set confirm time and IP; activate domain and new user who is in the req.confirm_time = datetime.utcnow() req.confirm_ip = get_ip(request) req.save() requested_domain.is_active = True requested_domain.save() requesting_user = WebUser.get_by_username(req.new_user_username) send_new_request_update_email(requesting_user, get_ip(request), requested_domain.name, is_confirming=True) messages.success(request, 'Your account has been successfully activated. Thank you for taking ' 'the time to confirm your email address: %s.' % (requesting_user.username)) track_workflow.delay(requesting_user.email, "Confirmed new project") track_confirmed_account_on_hubspot.delay(requesting_user) return HttpResponseRedirect(reverse("dashboard_default", args=[requested_domain]))
def register_user(request, domain_type=None): domain_type = domain_type or 'commcare' if domain_type not in DOMAIN_TYPES: raise Http404() prefilled_email = request.GET.get('e', '') context = get_domain_context(domain_type) if request.user.is_authenticated(): # Redirect to a page which lets user choose whether or not to create a new account domains_for_user = Domain.active_for_user(request.user) if len(domains_for_user) == 0: return redirect("registration_domain", domain_type=domain_type) else: return redirect("homepage") else: if request.method == 'POST': form = NewWebUserRegistrationForm(request.POST) if form.is_valid(): activate_new_user(form, ip=get_ip(request)) new_user = authenticate(username=form.cleaned_data['email'], password=form.cleaned_data['password']) login(request, new_user) track_workflow.delay(new_user.email, "Requested new account") track_created_hq_account_on_hubspot.delay(new_user, request.COOKIES) return redirect( 'registration_domain', domain_type=domain_type) else: form = NewWebUserRegistrationForm( initial={'domain_type': domain_type, 'email': prefilled_email}) context.update({ 'form': form, 'domain_type': domain_type }) return render(request, 'registration/create_new_user.html', context)
def register_user(request, domain_type=None): domain_type = domain_type or 'commcare' if domain_type not in DOMAIN_TYPES: raise Http404() prefilled_email = request.GET.get('e', '') context = get_domain_context(domain_type) if request.user.is_authenticated(): # Redirect to a page which lets user choose whether or not to create a new account domains_for_user = Domain.active_for_user(request.user) if len(domains_for_user) == 0: return redirect("registration_domain", domain_type=domain_type) else: return redirect("homepage") else: if request.method == 'POST': form = NewWebUserRegistrationForm(request.POST) if form.is_valid(): activate_new_user(form, ip=get_ip(request)) new_user = authenticate(username=form.cleaned_data['email'], password=form.cleaned_data['password']) login(request, new_user) track_workflow.delay(new_user.email, "Requested new account") meta = { 'HTTP_X_FORWARDED_FOR': request.META.get('HTTP_X_FORWARDED_FOR'), 'REMOTE_ADDR': request.META.get('REMOTE_ADDR'), 'opt_into_emails': form.cleaned_data['email_opt_in'], } track_created_hq_account_on_hubspot.delay( new_user, request.COOKIES, meta) requested_domain = form.cleaned_data['hr_name'] if form.cleaned_data['create_domain']: org = None try: requested_domain = request_new_domain( request, form, org, new_user=True, domain_type=domain_type) except NameUnavailableException: context.update({ 'error_msg': _('Project name already taken - please try another' ), 'show_homepage_link': 1 }) return render(request, 'error.html', context) context = get_domain_context( form.cleaned_data['domain_type']).update({ 'alert_message': _("An email has been sent to %s.") % request.user.username, 'requested_domain': requested_domain, 'track_domain_registration': True, }) return render(request, 'registration/confirmation_sent.html', context) else: form = NewWebUserRegistrationForm( initial={ 'domain_type': domain_type, 'email': prefilled_email, 'create_domain': True }) context.update({ 'form': form, 'domain_type': domain_type, }) return render(request, 'registration/create_new_user.html', context)