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.

Reply via email to