def register_user(request, domain_type=None): domain_type = domain_type or 'commcare' assert domain_type in DOMAIN_TYPES 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") 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) return redirect('registration_domain', domain_type=domain_type) else: form = NewWebUserRegistrationForm( initial={'domain_type': domain_type}) 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" assert domain_type in DOMAIN_TYPES 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") 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) return redirect("registration_domain", domain_type=domain_type) else: form = NewWebUserRegistrationForm(initial={"domain_type": domain_type}) 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() 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) return redirect( 'registration_domain', domain_type=domain_type) else: form = NewWebUserRegistrationForm( initial={'domain_type': domain_type}) 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)
def register_user(request): prefilled_email = request.GET.get('e', '') context = get_domain_context() 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") 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']) track_workflow(new_user.email, "Requested new account") login(request, new_user) requested_domain = form.cleaned_data['hr_name'] if form.cleaned_data['create_domain']: try: requested_domain = request_new_domain( request, form, is_new_user=True) except NameUnavailableException: context.update({ 'current_page': {'page_name': _('Oops!')}, 'error_msg': _('Project name already taken - please try another'), 'show_homepage_link': 1 }) return render(request, 'error.html', context) context.update({ 'requested_domain': requested_domain, 'track_domain_registration': True, 'current_page': {'page_name': _('Confirmation Email Sent')}, }) return render(request, 'registration/confirmation_sent.html', context) context.update({'create_domain': form.cleaned_data['create_domain']}) else: form = NewWebUserRegistrationForm( initial={'email': prefilled_email, 'create_domain': True}) context.update({'create_domain': True}) meta = get_meta(request) track_clicked_signup_on_hubspot(prefilled_email, request.COOKIES, meta) context.update({ 'form': form, 'current_page': {'page_name': _('Create an Account')}, 'hide_password_feedback': settings.ENABLE_DRACONIAN_SECURITY_FEATURES, 'is_register_user': True, }) return render(request, 'registration/create_new_user.html', context)
def __call__(self, request, invitation_id, **kwargs): # add the correct parameters to this instance self.request = request for k, v in kwargs.iteritems(): if k in self.need: setattr(self, k, v) if request.GET.get('switch') == 'true': logout(request) return redirect_to_login(request.path) if request.GET.get('create') == 'true': logout(request) return HttpResponseRedirect(request.path) invitation = self.inv_type.get(invitation_id) if invitation.is_accepted: messages.error(request, "Sorry, that invitation has already been used up. " "If you feel this is a mistake please ask the inviter for " "another invitation.") return HttpResponseRedirect(reverse("login")) self.validate_invitation(invitation) if request.user.is_authenticated(): if request.couch_user.username != invitation.email: messages.error(request, "The invited user %s and your user %s do not match!" % (invitation.email, request.couch_user.username)) if request.method == "POST": couch_user = CouchUser.from_django_user(request.user) self._invite(invitation, couch_user) return HttpResponseRedirect(self.redirect_to_on_success) else: mobile_user = CouchUser.from_django_user(request.user).is_commcare_user() context = self.added_context() context.update({ 'mobile_user': mobile_user, "invited_user": invitation.email if request.couch_user.username != invitation.email else "", }) return render(request, self.template, context) else: if request.method == "POST": form = NewWebUserRegistrationForm(request.POST) if form.is_valid(): # create the new user user = activate_new_user(form) user.save() messages.success(request, "User account for %s created! You may now login." % form.cleaned_data["email"]) self._invite(invitation, user) return HttpResponseRedirect(reverse("login")) else: form = NewWebUserRegistrationForm(initial={'email': invitation.email}) return render(request, self.template, {"form": form})
def accept_invitation(request, domain, invitation_id): if request.GET.get('switch') == 'true': logout(request) return redirect_to_login(request.path) if request.GET.get('create') == 'true': logout(request) return HttpResponseRedirect(request.path) invitation = Invitation.get(invitation_id) assert(invitation.domain == domain) if invitation.is_accepted: messages.error(request, "Sorry that invitation has already been used up. " "If you feel this is a mistake please ask the inviter for " "another invitation.") return HttpResponseRedirect(reverse("login")) if request.user.is_authenticated(): # if you are already authenticated, just add the domain to your # list of domains if request.couch_user.username != invitation.email: messages.error(request, "The invited user %s and your user %s do not match!" % (invitation.email, request.couch_user.username)) if request.method == "POST": couch_user = CouchUser.from_django_user(request.user) couch_user.add_domain_membership(domain=domain) couch_user.set_role(domain, invitation.role) couch_user.save() invitation.is_accepted = True invitation.save() messages.success(request, "You have been added to the %s domain" % domain) return HttpResponseRedirect(reverse("domain_homepage", args=[domain,])) else: return render_to_response(request, 'users/accept_invite.html', {'domain': domain, "invited_user": invitation.email if request.couch_user.username != invitation.email else ""}) else: # if you're not authenticated we need you to fill out your information if request.method == "POST": form = NewWebUserRegistrationForm(request.POST) if form.is_valid(): user = activate_new_user(form, is_domain_admin=False, domain=invitation.domain) user.set_role(domain, invitation.role) user.save() invitation.is_accepted = True invitation.save() messages.success(request, "User account for %s created! You may now login." % form.cleaned_data["email"]) return HttpResponseRedirect(reverse("login")) else: form = NewWebUserRegistrationForm(initial={'email': invitation.email}) return render_to_response(request, "users/accept_invite.html", {"form": form})
def register_user(request): if request.user.is_authenticated(): # Redirect to a page which lets user choose whether or not to create a new account vals = {} domains_for_user = Domain.active_for_user(request.user) if len(domains_for_user) == 0: return redirect("registration_domain") else: return redirect("domain_list") else: if request.method == 'POST': # If the form has been submitted... form = NewWebUserRegistrationForm(request.POST) # A form bound to the POST data if form.is_valid(): # All validation rules pass activate_new_user(form) new_user = authenticate(username=form.cleaned_data['email'], password=form.cleaned_data['password']) login(request, new_user) return redirect('registration_domain') else: form = NewWebUserRegistrationForm() # An unbound form vals = dict(form = form) return render_to_response(request, 'registration/create_new_user.html', vals)
def __call__(self, request, invitation_id, **kwargs): logging.warning( "Don't use this view in more apps until it gets cleaned up.") # add the correct parameters to this instance self.request = request for k, v in kwargs.iteritems(): if k in self.need: setattr(self, k, v) if request.GET.get('switch') == 'true': logout(request) return redirect_to_login(request.path) if request.GET.get('create') == 'true': logout(request) return HttpResponseRedirect(request.path) try: invitation = self.inv_type.get(invitation_id) except ResourceNotFound: messages.error( request, _("Sorry, we couldn't find that invitation. Please double check " "the invitation link you received and try again.")) return HttpResponseRedirect(reverse("login")) if invitation.is_accepted: messages.error( request, _("Sorry, that invitation has already been used up. " "If you feel this is a mistake please ask the inviter for " "another invitation.")) return HttpResponseRedirect(reverse("login")) self.validate_invitation(invitation) if request.user.is_authenticated(): is_invited_user = request.couch_user.username.lower( ) == invitation.email.lower() if self.is_invited(invitation, request.couch_user ) and not request.couch_user.is_superuser: if is_invited_user: # if this invite was actually for this user, just mark it accepted messages.info( request, _("You are already a member of {entity}.").format( entity=self.inviting_entity)) invitation.is_accepted = True invitation.save() else: messages.error( request, _("It looks like you are trying to accept an invitation for " "{invited} but you are already a member of {entity} with the " "account {current}. Please sign out to accept this invitation " "as another user.").format( entity=self.inviting_entity, invited=invitation.email, current=request.couch_user.username, )) return HttpResponseRedirect(self.redirect_to_on_success) if not is_invited_user: messages.error( request, _("The invited user {invited} and your user {current} do not match!" ).format(invited=invitation.email, current=request.couch_user.username)) if request.method == "POST": couch_user = CouchUser.from_django_user(request.user) self._invite(invitation, couch_user) return HttpResponseRedirect(self.redirect_to_on_success) else: mobile_user = CouchUser.from_django_user( request.user).is_commcare_user() context = self.added_context() context.update({ 'mobile_user': mobile_user, "invited_user": invitation.email if request.couch_user.username != invitation.email else "", }) return render(request, self.template, context) else: if request.method == "POST": form = NewWebUserRegistrationForm(request.POST) if form.is_valid(): # create the new user user = activate_new_user(form) user.save() messages.success( request, _("User account for %s created! You may now login.") % form.cleaned_data["email"]) self._invite(invitation, user) return HttpResponseRedirect(reverse("login")) else: form = NewWebUserRegistrationForm( initial={'email': invitation.email}) return render(request, self.template, {"form": form})
def __call__(self, request, invitation_id, **kwargs): logging.warning("Don't use this view in more apps until it gets cleaned up.") # add the correct parameters to this instance self.request = request for k, v in kwargs.iteritems(): if k in self.need: setattr(self, k, v) if request.GET.get('switch') == 'true': logout(request) return redirect_to_login(request.path) if request.GET.get('create') == 'true': logout(request) return HttpResponseRedirect(request.path) try: invitation = self.inv_type.get(invitation_id) except ResourceNotFound: messages.error(request, _("Sorry, it looks like your invitation has expired. " "Please check the invitation link you received and try again, or request a " "project administrator to send you the invitation again.")) return HttpResponseRedirect(reverse("login")) if invitation.is_accepted: messages.error(request, _("Sorry, that invitation has already been used up. " "If you feel this is a mistake please ask the inviter for " "another invitation.")) return HttpResponseRedirect(reverse("login")) self.validate_invitation(invitation) if invitation.invited_on.date() + relativedelta(months=1) < datetime.now().date() and isinstance(invitation, DomainInvitation): return HttpResponseRedirect(reverse("no_permissions")) if request.user.is_authenticated(): is_invited_user = request.couch_user.username.lower() == invitation.email.lower() if self.is_invited(invitation, request.couch_user) and not request.couch_user.is_superuser: if is_invited_user: # if this invite was actually for this user, just mark it accepted messages.info(request, _("You are already a member of {entity}.").format( entity=self.inviting_entity)) invitation.is_accepted = True invitation.save() else: messages.error(request, _("It looks like you are trying to accept an invitation for " "{invited} but you are already a member of {entity} with the " "account {current}. Please sign out to accept this invitation " "as another user.").format( entity=self.inviting_entity, invited=invitation.email, current=request.couch_user.username, )) return HttpResponseRedirect(self.redirect_to_on_success) if not is_invited_user: messages.error(request, _("The invited user {invited} and your user {current} do not match!").format( invited=invitation.email, current=request.couch_user.username)) if request.method == "POST": couch_user = CouchUser.from_django_user(request.user) self._invite(invitation, couch_user) return HttpResponseRedirect(self.redirect_to_on_success) else: mobile_user = CouchUser.from_django_user(request.user).is_commcare_user() context = self.added_context() context.update({ 'mobile_user': mobile_user, "invited_user": invitation.email if request.couch_user.username != invitation.email else "", }) return render(request, self.template, context) else: if request.method == "POST": form = NewWebUserRegistrationForm(request.POST) if form.is_valid(): # create the new user user = activate_new_user(form) user.save() messages.success(request, _("User account for %s created! You may now login.") % form.cleaned_data["email"]) self._invite(invitation, user) return HttpResponseRedirect(reverse("login")) else: form = NewWebUserRegistrationForm(initial={'email': invitation.email}) return render(request, self.template, {"form": form})
def __call__(self, request, invitation_id, **kwargs): logging.warning("Don't use this view in more apps until it gets cleaned up.") # add the correct parameters to this instance self.request = request self.inv_id = invitation_id if 'domain' in kwargs: self.domain = kwargs['domain'] if request.GET.get('switch') == 'true': logout(request) return redirect_to_login(request.path) if request.GET.get('create') == 'true': logout(request) return HttpResponseRedirect(request.path) try: invitation = Invitation.get(invitation_id) except ResourceNotFound: messages.error(request, _("Sorry, it looks like your invitation has expired. " "Please check the invitation link you received and try again, or request a " "project administrator to send you the invitation again.")) return HttpResponseRedirect(reverse("login")) if invitation.is_accepted: messages.error(request, _("Sorry, that invitation has already been used up. " "If you feel this is a mistake please ask the inviter for " "another invitation.")) return HttpResponseRedirect(reverse("login")) self.validate_invitation(invitation) if invitation.is_expired: return HttpResponseRedirect(reverse("no_permissions")) context = self.added_context() if request.user.is_authenticated(): is_invited_user = request.couch_user.username.lower() == invitation.email.lower() if self.is_invited(invitation, request.couch_user) and not request.couch_user.is_superuser: if is_invited_user: # if this invite was actually for this user, just mark it accepted messages.info(request, _("You are already a member of {entity}.").format( entity=self.inviting_entity)) invitation.is_accepted = True invitation.save() else: messages.error(request, _("It looks like you are trying to accept an invitation for " "{invited} but you are already a member of {entity} with the " "account {current}. Please sign out to accept this invitation " "as another user.").format( entity=self.inviting_entity, invited=invitation.email, current=request.couch_user.username, )) return HttpResponseRedirect(self.redirect_to_on_success) if not is_invited_user: messages.error(request, _("The invited user {invited} and your user {current} do not match!").format( invited=invitation.email, current=request.couch_user.username)) if request.method == "POST": couch_user = CouchUser.from_django_user(request.user) self._invite(invitation, couch_user) track_workflow(request.couch_user.get_email(), "Current user accepted a project invitation", {"Current user accepted a project invitation": "yes"}) update_hubspot_properties.delay(request.couch_user, {'user_accepted_domain_invitation': 'yes'}) return HttpResponseRedirect(self.redirect_to_on_success) else: mobile_user = CouchUser.from_django_user(request.user).is_commcare_user() context.update({ 'mobile_user': mobile_user, "invited_user": invitation.email if request.couch_user.username != invitation.email else "", }) return render(request, self.template, context) else: if request.method == "POST": form = NewWebUserRegistrationForm(request.POST) if form.is_valid(): # create the new user user = activate_new_user(form) user.save() messages.success(request, _("User account for %s created!") % form.cleaned_data["email"]) self._invite(invitation, user) authenticated = authenticate(username=form.cleaned_data["email"], password=form.cleaned_data["password"]) if authenticated is not None and authenticated.is_active: login(request, authenticated) track_workflow(request.POST['email'], "New User Accepted a project invitation", {"New User Accepted a project invitation": "yes"}) update_hubspot_properties.delay(user, {'new_user_accepted_invitation_created_account': 'yes'}) return HttpResponseRedirect(reverse("domain_homepage", args=[invitation.domain])) else: if CouchUser.get_by_username(invitation.email): return HttpResponseRedirect(reverse("login") + '?next=' + reverse('domain_accept_invitation', args=[invitation.domain, invitation.get_id])) domain = Domain.get_by_name(invitation.domain) form = NewWebUserRegistrationForm(initial={ 'email': invitation.email, 'hr_name': domain.display_name() if domain else invitation.domain, 'create_domain': False, }) context.update({"form": form}) return render(request, self.template, context)
def __call__(self, request, invitation_id, **kwargs): logging.info( "Don't use this view in more apps until it gets cleaned up.") # add the correct parameters to this instance self.request = request self.inv_id = invitation_id if 'domain' in kwargs: self.domain = kwargs['domain'] if request.GET.get('switch') == 'true': logout(request) return redirect_to_login(request.path) if request.GET.get('create') == 'true': logout(request) return HttpResponseRedirect(request.path) try: invitation = Invitation.get(invitation_id) except ResourceNotFound: messages.error( request, _("Sorry, it looks like your invitation has expired. " "Please check the invitation link you received and try again, or request a " "project administrator to send you the invitation again.")) return HttpResponseRedirect(reverse("login")) if invitation.is_accepted: messages.error( request, _("Sorry, that invitation has already been used up. " "If you feel this is a mistake please ask the inviter for " "another invitation.")) return HttpResponseRedirect(reverse("login")) self.validate_invitation(invitation) if invitation.is_expired: return HttpResponseRedirect(reverse("no_permissions")) # Add zero-width space to username for better line breaking username = self.request.user.username.replace("@", "​@") context = { 'create_domain': False, 'formatted_username': username, 'domain': self.domain, 'invite_to': self.domain, 'invite_type': _('Project'), 'hide_password_feedback': settings.ENABLE_DRACONIAN_SECURITY_FEATURES, } if request.user.is_authenticated: context['current_page'] = {'page_name': _('Project Invitation')} else: context['current_page'] = { 'page_name': _('Project Invitation, Account Required') } if request.user.is_authenticated(): is_invited_user = request.couch_user.username.lower( ) == invitation.email.lower() if self.is_invited(invitation, request.couch_user ) and not request.couch_user.is_superuser: if is_invited_user: # if this invite was actually for this user, just mark it accepted messages.info( request, _("You are already a member of {entity}.").format( entity=self.inviting_entity)) invitation.is_accepted = True invitation.save() else: messages.error( request, _("It looks like you are trying to accept an invitation for " "{invited} but you are already a member of {entity} with the " "account {current}. Please sign out to accept this invitation " "as another user.").format( entity=self.inviting_entity, invited=invitation.email, current=request.couch_user.username, )) return HttpResponseRedirect(self.redirect_to_on_success) if not is_invited_user: messages.error( request, _("The invited user {invited} and your user {current} do not match!" ).format(invited=invitation.email, current=request.couch_user.username)) if request.method == "POST": couch_user = CouchUser.from_django_user(request.user) self._invite(invitation, couch_user) track_workflow( request.couch_user.get_email(), "Current user accepted a project invitation", {"Current user accepted a project invitation": "yes"}) meta = get_meta(request) track_existing_user_accepted_invite_on_hubspot.delay( request.couch_user, request.COOKIES, meta) return HttpResponseRedirect(self.redirect_to_on_success) else: mobile_user = CouchUser.from_django_user( request.user).is_commcare_user() context.update({ 'mobile_user': mobile_user, "invited_user": invitation.email if request.couch_user.username != invitation.email else "", }) return render(request, self.template, context) else: if request.method == "POST": form = NewWebUserRegistrationForm(request.POST) if form.is_valid(): # create the new user user = activate_new_user(form, domain=invitation.domain) user.save() messages.success( request, _("User account for %s created!") % form.cleaned_data["email"]) self._invite(invitation, user) authenticated = authenticate( username=form.cleaned_data["email"], password=form.cleaned_data["password"]) if authenticated is not None and authenticated.is_active: login(request, authenticated) track_workflow( request.POST['email'], "New User Accepted a project invitation", {"New User Accepted a project invitation": "yes"}) meta = get_meta(request) track_new_user_accepted_invite_on_hubspot.delay( user, request.COOKIES, meta) return HttpResponseRedirect( reverse("domain_homepage", args=[invitation.domain])) else: if CouchUser.get_by_username(invitation.email): return HttpResponseRedirect( reverse("login") + '?next=' + reverse('domain_accept_invitation', args=[invitation.domain, invitation.get_id])) form = NewWebUserRegistrationForm( initial={ 'email': invitation.email, 'hr_name': invitation.domain, 'create_domain': False, }) context.update({"form": form}) return render(request, self.template, context)
def __call__(self, request, invitation_id, **kwargs): # add the correct parameters to this instance self.request = request for k, v in kwargs.iteritems(): if k in self.need: setattr(self, k, v) if request.GET.get('switch') == 'true': logout(request) return redirect_to_login(request.path) if request.GET.get('create') == 'true': logout(request) return HttpResponseRedirect(request.path) invitation = self.inv_type.get(invitation_id) if invitation.is_accepted: messages.error(request, _("Sorry, that invitation has already been used up. " "If you feel this is a mistake please ask the inviter for " "another invitation.")) return HttpResponseRedirect(reverse("login")) self.validate_invitation(invitation) if request.user.is_authenticated(): is_invited_user = request.couch_user.username == invitation.email if request.couch_user.is_member_of(invitation.domain): if is_invited_user: # if this invite was actually for this user, just mark it accepted messages.info(request, _("You are already a member of {domain}.").format( domain=invitation.domain)) invitation.is_accepted = True invitation.save() else: messages.error(request, _("It looks like you are trying to accept an invitation for " "{invited} but you are already a member of {domain} with the " "account {current}. Please sign out to accept this invitation " "as another user.").format( domain=invitation.domain, invited=invitation.email, current=request.couch_user.username, )) return HttpResponseRedirect(self.redirect_to_on_success) if not is_invited_user: messages.error(request, _("The invited user {invited} and your user {current} do not match!").format( invited=invitation.email, current=request.couch_user.username)) if request.method == "POST": couch_user = CouchUser.from_django_user(request.user) self._invite(invitation, couch_user) return HttpResponseRedirect(self.redirect_to_on_success) else: mobile_user = CouchUser.from_django_user(request.user).is_commcare_user() context = self.added_context() context.update({ 'mobile_user': mobile_user, "invited_user": invitation.email if request.couch_user.username != invitation.email else "", }) return render(request, self.template, context) else: if request.method == "POST": form = NewWebUserRegistrationForm(request.POST) if form.is_valid(): # create the new user user = activate_new_user(form) user.save() messages.success(request, _("User account for %s created! You may now login.") % form.cleaned_data["email"]) self._invite(invitation, user) return HttpResponseRedirect(reverse("login")) else: form = NewWebUserRegistrationForm(initial={'email': invitation.email}) return render(request, self.template, {"form": form})
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)