コード例 #1
0
ファイル: invitation.py プロジェクト: fdgonthier/kas
    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)
コード例 #2
0
ファイル: old_wleu.py プロジェクト: fdgonthier/kas
 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))
コード例 #3
0
ファイル: skurl_teambox.py プロジェクト: fdgonthier/kas
    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.')
コード例 #4
0
ファイル: skurl_teambox.py プロジェクト: fdgonthier/kas
    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.');