def resend_create(self, workspace_id): #verify email valid and send invitation mail if 'email' in request.params: if request.params['email'] == '': return render('invitation/resend_show.mako') user = User.get_by_lower_email(int(workspace_id), request.params['email']) if (user): # Instantiate a Kcd client. invitees = [] invitee = WorkspaceInvitee() invitee.email_address = user.email invitee.send_mail = True invitees.append(invitee) message = "click on the link to join the teambox" kc = KcdClient(get_cached_kcd_external_conf_object()) #TODO handle kcd errors, render confirmation messages kc.invite_users(workspace_id, message, invitees) ui_info(message="You have been re-invited to the Teambox, please check you email and follow instructions.") return render('invitation/resend_success.mako') else: #please contact ws owner ui_error(message="No invitation to this teambox had been sent to this email address." + \ " If you were not invited to this teambox, please contact the teambox owner.") return render('invitation/resend_show.mako') pass else: abort(403)
def _invite_and_login(self, usr, workspace_id, password): invitation = Invitation.get_by(kws_id=workspace_id, inviting_user_id=0, user_id=usr.user_id) if invitation: email_id = invitation.email_id else: invitees = [] invitee = WorkspaceInvitee() invitee.email_address = usr.email invitee.send_mail = False invitees.append(invitee) kc = KcdClient(get_cached_kcd_external_conf_object()) #TODO handle kcd errors ws_url, invitees_result = kc.invite_users(workspace_id, '', invitees) email_id = invitees_result[0].email_id redirect_to(url('invite_create',workspace_id=workspace_id, email_id=email_id, password=password))
def pb_set_identity(self, workspace_id): import select from kcd_lib import WorkspaceInvitee workspace_id = int(workspace_id) # Get the workspace. if not c.workspace.public: log.warning("pb_set_identity: Workspace %i is not public." % (workspace_id)) abort(404) # Get POST parameters. identity_id = request.params['identity_id'] identity_id = int(identity_id) # Shortcuts identity = session['identities'][identity_id] log.debug("Recipient: %s" % (str(identity))) if identity_id == 0: # This is the sender (user 1). user = User.get_by(workspace_id=workspace_id, id=1) self._login(user) log.debug("Found matching user(0): '%s'." % (str(user))) return {'result': 'ok', 'user': session['user']} # This is a real recipient... try to get the user. user = User.get_by(workspace_id=workspace_id, email=identity['email']) if user: self._login(user) log.debug("Found matching user(1): '%s'." % (str(user))) return {'result': 'ok', 'user': session['user']} # Instantiate a Kcd client. kc = KcdClient(get_cached_kcd_external_conf_object()) # Invite user. invitee = WorkspaceInvitee(real_name=identity['name'], email_address=identity['email']) junk_url, invitees = kc.invite_users(workspace_id, "empty message", [invitee]) if invitees[0].error: log.debug("User could not be invited: '%s'." % (str(invitees[0].error))) raise Exception('Internal error.') # Get user. If not present, retry a few times, until new user is fetched by kwsfetcher or until timeout. wait_seconds = 0.5 timeout_seconds = 8 time_started = time.time() while 1: # Get user, if it exists (fetched by kwsfetcher). user = User.get_by(workspace_id=workspace_id, email=identity['email']) if user: self._login(user) log.debug("Found matching user (2): '%s'." % (str(user))) return {'result': 'ok', 'user': session['user']} # Check for timeout. if time.time() > time_started + timeout_seconds: break # Wait select.select([], [], [], wait_seconds) # Reached timeout. log.error( "Error: reached end of pb_set_identity(). KWSFetcher might be too loaded or down." ) raise Exception('Temporary server error: please try again later.')
def pb_set_identity(self, workspace_id): import select from kcd_lib import WorkspaceInvitee workspace_id = int(workspace_id) # Get the workspace. if not c.workspace.public: log.warning("pb_set_identity: Workspace %i is not public." % ( workspace_id ) ) abort(404) # Get POST parameters. identity_id = request.params['identity_id'] identity_id = int(identity_id) # Shortcuts identity = session['identities'][identity_id] log.debug("Recipient: %s" % ( str(identity) ) ) if identity_id == 0: # This is the sender (user 1). user = User.get_by(workspace_id=workspace_id, id=1) self._login(user) log.debug("Found matching user(0): '%s'." % ( str(user) ) ) return { 'result' : 'ok', 'user' : session['user'] } # This is a real recipient... try to get the user. user = User.get_by(workspace_id=workspace_id, email=identity['email']) if user: self._login(user) log.debug("Found matching user(1): '%s'." % ( str(user) ) ) return { 'result' : 'ok', 'user' : session['user'] } # Instantiate a Kcd client. kc = KcdClient(get_cached_kcd_external_conf_object()) # Invite user. invitee = WorkspaceInvitee(real_name=identity['name'], email_address=identity['email']) junk_url, invitees = kc.invite_users(workspace_id, "empty message", [invitee]) if invitees[0].error: log.debug("User could not be invited: '%s'." % ( str(invitees[0].error) ) ) raise Exception('Internal error.') # Get user. If not present, retry a few times, until new user is fetched by kwsfetcher or until timeout. wait_seconds = 0.5 timeout_seconds = 8 time_started = time.time() while 1: # Get user, if it exists (fetched by kwsfetcher). user = User.get_by(workspace_id=workspace_id, email=identity['email']) if user: self._login(user) log.debug("Found matching user (2): '%s'." % ( str(user) ) ) return { 'result' : 'ok', 'user' : session['user'] } # Check for timeout. if time.time() > time_started + timeout_seconds: break # Wait select.select([], [], [], wait_seconds) # Reached timeout. log.error("Error: reached end of pb_set_identity(). KWSFetcher might be too loaded or down."); raise Exception('Temporary server error: please try again later.');