think this is an excellent idea. Please submit a pull request.
On Wednesday, 20 May 2015 03:12:24 UTC-5, James Burke wrote:
>
> Hi,
>
> I'm looking for a peer review of some code I put together for email
> inviting users to join an application. I couldn't find anything suitable
> looking around, hopefully I didn't overlook anything!
>
> The idea is, you enter in email addresses into a form, click submit and it
> will send an email to the email address with an invite to your application.
> The email will contain a link which the user clicks to take them to a form
> to fill in the rest of their required details, name etc.
>
> I've tested this and it works, but I would like to know what others
> thoughts are and there are any improvements that could be made.
>
> Thank you!
>
> *default.py controller*
> def index():
> form=FORM('Enter a comma separated list of emails to send invites:',
> BR(),
> INPUT(_id='emails', _value=''),
> INPUT(_type='submit'))
>
> if form.accepts(request,session):
> # send the invitations
> for email in form.vars.email.split(','):
> auth.invite_user(email=email)
> response.flash = 'Invitations sent'
>
> return dict(form=form)
>
> def confirm_registration():
> return dict(form=auth.confirm_registration())
>
>
>
>
> *gluon/tools.py*
> def confirm_registration(
> self,
> next=DEFAULT,
> onvalidation=DEFAULT,
> onaccept=DEFAULT,
> log=DEFAULT,
> ):
> """
> Modified version of Auth.reset_password()
> """
>
>
> table_user = self.table_user()
> request = current.request
> # response = current.response
> session = current.session
>
>
> if next is DEFAULT:
> next = self.get_vars_next() or self.settings.
> reset_password_next
>
>
> if self.settings.prevent_password_reset_attacks:
> key = request.vars.key
> if not key and len(request.args)>1:
> key = request.args[-1]
> if key:
> session._reset_password_key = key
> redirect(self.url('confirm_registration'))
> else:
> key = session._reset_password_key
> else:
> key = request.vars.key or getarg(-1)
> try:
> t0 = int(key.split('-')[0])
> if time.time() - t0 > 60 * 60 * 24:
> raise Exception
> user = table_user(reset_password_key=key)
> if not user:
> raise Exception
> except Exception as e:
> session.flash = self.messages.invalid_reset_password
> redirect(self.url('login', vars=dict(test=e)))
> redirect(next, client_side=self.settings.client_side)
> passfield = self.settings.password_field
> form = SQLFORM.factory(
> Field('first_name',
> label='First Name',
> required=True),
> Field('last_name',
> label='Last Name',
> required=True),
> Field('new_password', 'password',
> label=self.messages.new_password,
> requires=self.table_user()[passfield].requires),
> Field('new_password2', 'password',
> label=self.messages.verify_password,
> requires=[IS_EXPR(
> 'value==%s' % repr(request.vars.new_password),
> self.messages.mismatched_password)]),
> submit_button='Confirm Registration',
> hidden=dict(_next=next),
> formstyle=self.settings.formstyle,
> separator=self.settings.label_separator
> )
> if form.accepts(request, session,
> hideerror=self.settings.hideerror):
> user.update_record(
> **{passfield: str(form.vars.new_password),
> 'first_name': str(form.vars.first_name),
> 'last_name': str(form.vars.last_name),
> 'registration_key': '',
> 'reset_password_key': ''})
> session.flash = self.messages.password_changed
> if self.settings.login_after_password_change:
> self.login_user(user)
> redirect(next, client_side=self.settings.client_side)
> return form
>
>
> def email_registration(self, user):
> """
> Modified version of Auth.email_reset_password()
> """
> import
> ...
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.