default="+", description="Use international mobile phone number format with plus sign, country code, followed by your mobile number. Example: +1 555 123 1234.", widget=deform.widget.TextInputWidget(type='tel', template="textinput_placeholder") ) def has_pending_phone_number_request(request: Request, user: User): return request.dbsession.query(UserNewPhoneNumberConfirmation).filter_by(user=user, state=ManualConfirmationState.pending).one_or_none() @view_config( context=UserWallet, route_name="wallet", name="new-phone-number", renderer="wallet/new_phone_number.html", decorator=throttled_view(limit=999999)) def new_phone_number(wallet, request): user = wallet.user if has_pending_phone_number_request(request, user): return httpexceptions.HTTPFound(request.resource_url(wallet, "confirm-phone-number")) schema = NewPhoneNumber().bind(request=request) b = deform.Button(name='process', title="Send verification code", css_class="btn-primary btn-block btn-lg") form = deform.Form(schema, buttons=(b,)) # User submitted this form if request.method == "POST": if 'process' in request.POST:
def configure_views(self): self.config.add_route("throttle_sample", "/") self.config.add_view(throttle_sample, route_name="throttle_sample", decorator=throttled_view(limit=1))
description="Please give your mobile phone number in international format using with country code prefix with plus sign notation. Example: +1 555 123 1234.", widget=deform.widget.TextInputWidget(size=6, maxlength=6, type='tel', template="textinput_placeholder") ) def has_pending_phone_number_request(request: Request, user: User): return request.dbsession.query(UserNewPhoneNumberConfirmation).filter_by(user=user, state=ManualConfirmationState.pending).one_or_none() @view_config( context=UserWallet, route_name="wallet", name="new-phone-number", renderer="wallet/new_phone_number.html", decorator=throttled_view(limit=999999)) def new_phone_number(wallet, request): user = wallet.user if has_pending_phone_number_request(request, user): return httpexceptions.HTTPFound(request.resource_url(wallet, "confirm-phone-number")) schema = NewPhoneNumber().bind(request=request) b = deform.Button(name='process', title="Send verification code", css_class="btn-block btn-lg") form = deform.Form(schema, buttons=(b,)) # User submitted this form if request.method == "POST": if 'process' in request.POST:
@simple_route("/login", route_name="login", renderer='magiclogin/login.html') @include_in_sitemap(False) def login(request: Request): """Replace the defaut login view with this simplified version.""" settings = request.registry.settings social_logins = aslist(settings.get("websauna.social_logins", [])) login_slogan = request.registry.settings.get("magiclogin.login_slogan") return locals() @simple_route( "/login-email", route_name="login_email", renderer='magiclogin/login_email.html', decorator=throttled_view(setting="magiclogin.login_email_throttle")) @include_in_sitemap(False) def login_email(request: Request): """Ask user email to start email sign in process.""" schema = AskEmailSchema().bind(request=request) button = deform.Button(name='confirm', title="Email me a link to sign in", css_class="btn btn-primary btn-block") form = deform.Form(schema, buttons=[button]) # User submitted this form if request.method == "POST": if 'confirm' in request.POST: try: # Where to go after user clicks the link in the email.