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 [email protected].
For more options, visit https://groups.google.com/d/optout.