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