Sorry I probably should have posted this in the Developer group instead. Ron, this is a possible enhancement to the web2py framework itself, not a suggested application.
On Friday, May 29, 2015 at 7:38:16 AM UTC+12, Ron Chatterjee wrote: > > I am little confused. Isn't what bitbucket does anyway. Someone can put > their application there and invite others to join? How is this any > different? > > > > On Thursday, May 28, 2015 at 9:50:31 AM UTC-4, Anthony wrote: >> >> I like the idea, but I wonder if the use case is common enough to justify >> including in the framework (where it will have to be tested and maintained >> by the developers indefinitely). Instead, maybe this could be a plugin. >> >> Anthony >> >> On Thursday, May 28, 2015 at 1:19:07 AM UTC-4, Massimo Di Pierro wrote: >>> >>> 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 web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.