def settings(request, settings_form=UserProfileForm): """ Presents the user a form with their settings, basically the register form minus username minus password. Also presents additional app-specific forms listed in the KSP_LOGIN_PROFILE_FORMS setting to the user. """ form_classes = [settings_form] + get_profile_forms() if request.method == "POST": forms = [ form(request.POST, user=request.user) for form in form_classes ] if all(form.is_valid() for form in forms): for form in forms: form.save() return redirect('account_settings') else: forms = [form(user=request.user) for form in form_classes] return render( request, 'ksp_login/settings.html', { 'account_associations': UserSocialAuth.get_social_auth_for_user(request.user), 'forms': forms, })
def settings(request, settings_form=UserProfileForm): """ Presents the user a form with their settings, basically the register form minus username minus password. Also presents additional app-specific forms listed in the KSP_LOGIN_PROFILE_FORMS setting to the user. """ UserPropsFormSet = _get_user_props_formset(request.user.is_staff) form_classes = [settings_form] + get_profile_forms() _forms = None user_props_form_set = None competition_select_form = None if request.method == "POST": if request.POST.get('user_props_submit', None): user_props_form_set = UserPropsFormSet(request.POST, instance=request.user) if user_props_form_set.is_valid(): user_props_form_set.save() return redirect(reverse('account_settings') + '#props') elif request.POST.get('contests_submit', None): competition_select_form = IgnoreCompetitionForm( request.user, request.POST) if competition_select_form.is_valid(): competition_select_form.save() return redirect(reverse('account_settings') + '#contests') else: _forms = [ form(request.POST, user=request.user) for form in form_classes ] if all(form.is_valid() for form in _forms): for form in _forms: form.save() return redirect('account_settings') if not _forms: _forms = [form(user=request.user) for form in form_classes] if not user_props_form_set: user_props_form_set = UserPropsFormSet( instance=request.user, queryset=UserProperty.objects.visible(request.user)) if not competition_select_form: competition_select_form = IgnoreCompetitionForm(user=request.user) return render( request, 'trojsten/people/settings.html', { 'account_associations': UserSocialAuth.get_social_auth_for_user(request.user), 'forms': _forms, 'user_props_form_set': user_props_form_set, 'competition_select_form': competition_select_form, })
def register(request, creation_form=KspUserCreationForm): """ As the name suggests, registers a new user. Can replace the create_user function in the SOCIAL_AUTH pipeline (through ksp_login.pipeline.register_user, with the corresponding save_status_to_session, of course) to make it possible for the user to pick a username. Also presents additional app-specific forms listed in the KSP_LOGIN_PROFILE_FORMS setting to the user. """ if request.user.is_authenticated(): return redirect('account_settings') try: pipeline_state = request.session[setting('SOCIAL_AUTH_PARTIAL_PIPELINE_KEY', SOCIAL_AUTH_PARTIAL_PIPELINE_KEY)] backend = pipeline_state['backend'] pipeline_state = pipeline_state['kwargs'] standalone = False except KeyError: standalone = True form_classes = [creation_form] + get_profile_forms() if request.method == "POST": forms = [form(request.POST, request=request) for form in form_classes] if all(form.is_valid() for form in forms): user = forms[0].save() for form in forms[1:]: form.set_user(user) form.save() if standalone: return redirect('account_login') pipeline_state['user'] = user.id # This ensures the top-level session dict changes, otherwise # our changes in pipeline_state might not get stored. request.session.setdefault('ksp_login_dummy_key', 0) request.session['ksp_login_dummy_key'] += 1 return redirect('social:complete', backend=backend) else: forms = [form(request=request) for form in form_classes] return render(request, "ksp_login/registration.html", { 'forms': forms, })
def register(request, creation_form=KspUserCreationForm): """ As the name suggests, registers a new user. Can replace the create_user function in the SOCIAL_AUTH pipeline (through ksp_login.pipeline.register_user, with the corresponding save_status_to_session, of course) to make it possible for the user to pick a username. Also presents additional app-specific forms listed in the KSP_LOGIN_PROFILE_FORMS setting to the user. """ if request.user.is_authenticated(): return redirect('account_settings') try: pipeline_state = request.session[setting( 'SOCIAL_AUTH_PARTIAL_PIPELINE_KEY', SOCIAL_AUTH_PARTIAL_PIPELINE_KEY)] backend = pipeline_state['backend'] pipeline_state = pipeline_state['kwargs'] standalone = False except KeyError: standalone = True form_classes = [creation_form] + get_profile_forms() if request.method == "POST": forms = [form(request.POST, request=request) for form in form_classes] if all(form.is_valid() for form in forms): user = forms[0].save() for form in forms[1:]: form.set_user(user) form.save() if standalone: return redirect('account_login') pipeline_state['user'] = user.id # This ensures the top-level session dict changes, otherwise # our changes in pipeline_state might not get stored. request.session.setdefault('ksp_login_dummy_key', 0) request.session['ksp_login_dummy_key'] += 1 return redirect('social:complete', backend=backend) else: forms = [form(request=request) for form in form_classes] return render(request, "ksp_login/registration.html", { 'forms': forms, })
def settings(request, settings_form=UserProfileForm): """ Presents the user a form with their settings, basically the register form minus username minus password. Also presents additional app-specific forms listed in the KSP_LOGIN_PROFILE_FORMS setting to the user. """ form_classes = [settings_form] + get_profile_forms() if request.method == "POST": forms = [form(request.POST, user=request.user) for form in form_classes] if all(form.is_valid() for form in forms): for form in forms: form.save() return redirect('account_settings') else: forms = [form(user=request.user) for form in form_classes] return render(request, 'ksp_login/settings.html', { 'account_associations': UserSocialAuth.get_social_auth_for_user(request.user), 'forms': forms, })
def register(request, creation_form=KspUserCreationForm): """ As the name suggests, registers a new user. Can replace the create_user function in the SOCIAL_AUTH pipeline (through ksp_login.pipeline.register_user) to make it possible for the user to pick a username. Also presents additional app-specific forms listed in the KSP_LOGIN_PROFILE_FORMS setting to the user. """ if request.user.is_authenticated(): return redirect('account_settings') partial = get_partial_pipeline(request) form_classes = [creation_form] + get_profile_forms() if request.method == "POST": forms = [form(request.POST, request=request) for form in form_classes] if all(form.is_valid() for form in forms): user = forms[0].save() for form in forms[1:]: form.set_user(user) form.save() if not partial: return redirect('account_login') partial.kwargs['user'] = user.id partial.save() return redirect('social:complete', backend=partial.backend) else: forms = [form(request=request) for form in form_classes] return render(request, "ksp_login/registration.html", { 'forms': forms, })