Example #1
0
    def MakeFollows(self):
        """
        # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        ADD FOLLOWS FOR ADMIN USERS
        # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
        """
        nextURL = None
        firstURL = self.request.get('nexturl')
        query = PointRoot.query().order(PointRoot.url)
        if firstURL:
            query = query.filter(PointRoot.url >= firstURL)
        pointRoots = query.fetch(11)
        if len(pointRoots) == 11:
            nextURL = pointRoots[-1].url
            pointRootsToReview = pointRoots[:10]
        else:
            pointRootsToReview = pointRoots

        i = 0
        for pointRoot in pointRootsToReview:
            pointRootKey = pointRoot.key
            followers = {}

            versions = pointRoot.getAllVersions()
            for point in versions:
                if point.version == 1:
                    followers[point.authorURL] = 'created'
                elif not point.authorURL in followers:
                    followers[point.authorURL] = 'edited'

            for comment in pointRoot.getComments():
                if not comment.userUrl in followers:
                    followers[comment.userUrl] = 'commented'

            logging.info('ROOT: %s FOLLOWERS: %s' %
                         (pointRoot.url, str(followers)))
            for url in followers.iterkeys():
                followType = followers[url]
                previousNamespace = namespace_manager.get_namespace()
                if previousNamespace and previousNamespace != '':
                    namespace_manager.set_namespace('')  # DEFAULT NAMESPACE
                    usr = WhysaurusUser.getByUrl(url)
                    namespace_manager.set_namespace(previousNamespace)
                else:
                    usr = WhysaurusUser.getByUrl(url)
                logging.info('Trying to follow for U:%s, R:%s, T:%s' %
                             (url, pointRoot.url, followType))
                f = None
                f = Follow.createFollow(usr.key, pointRootKey, followType)
                if f:
                    i = i + 1
                    logging.info('ADDED follow for U:%s, R:%s, T:%s' %
                                 (url, pointRoot.url, followType))

        logging.info('Added %d follows' % i)
        if nextURL:
            t = Task(url="/MakeFollows", params={'nexturl': nextURL})
            t.add(queue_name="notifications")
            logging.info('Requeing MakeFollows task to start at url %s ' %
                         nextURL)
Example #2
0
    def MakeFollows(self):
        """
        # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        ADD FOLLOWS FOR ADMIN USERS
        # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
        """
        nextURL = None
        firstURL = self.request.get('nexturl')
        query = PointRoot.query().order(PointRoot.url)
        if firstURL:
            query = query.filter(PointRoot.url >= firstURL)
        pointRoots = query.fetch(11)
        if len(pointRoots) == 11:
            nextURL = pointRoots[-1].url
            pointRootsToReview = pointRoots[:10]
        else:
            pointRootsToReview = pointRoots
        
        i = 0
        for pointRoot in pointRootsToReview:
            pointRootKey = pointRoot.key
            followers = {}     
                          
            versions = pointRoot.getAllVersions()
            for point in versions:
                if point.version == 1:
                    followers[point.authorURL] = 'created'         
                elif not point.authorURL in followers:
                    followers[point.authorURL] = 'edited'  
            
            for comment in pointRoot.getComments():
                if not comment.userUrl in followers:
                    followers[comment.userUrl] = 'commented'  
                
            logging.info('ROOT: %s FOLLOWERS: %s' % (pointRoot.url, str(followers)))       
            for url in followers.iterkeys():
                followType = followers[url]
                previousNamespace = namespace_manager.get_namespace()
                if previousNamespace and previousNamespace != '':                
                    namespace_manager.set_namespace('') # DEFAULT NAMESPACE
                    usr = WhysaurusUser.getByUrl(url)
                    namespace_manager.set_namespace(previousNamespace)
                else:
                    usr = WhysaurusUser.getByUrl(url)
                logging.info('Trying to follow for U:%s, R:%s, T:%s' % (url, pointRoot.url, followType))
                f = None
                f = Follow.createFollow(usr.key, pointRootKey, followType)
                if f:
                    i = i + 1
                    logging.info('ADDED follow for U:%s, R:%s, T:%s' % (url, pointRoot.url, followType))

                       
        logging.info('Added %d follows' % i)
        if nextURL:
            t = Task(url="/MakeFollows", params={'nexturl':nextURL})
            t.add(queue_name="notifications")
            logging.info('Requeing MakeFollows task to start at url %s ' % nextURL)
Example #3
0
    def get(self, userURL):
        userNamespace = namespace_manager.get_namespace()
        user = self.current_user

        # USERS ARE STORED IN THE DEFAULT NAMESPACE
        namespace_manager.set_namespace('')
        profileUser = WhysaurusUser.getByUrl(userURL)
        if profileUser:
            logging.info("got Profile User. Areas were: " +
                         str(profileUser.privateAreas))
        namespace_manager.set_namespace(userNamespace)

        if user:
            permissionToView = user.isAdmin or profileUser.privateAreas == [] or self.session.get(
                'currentArea') in profileUser.privateAreas
        else:
            permissionToView = len(profileUser.privateAreas) == 0

        if profileUser and permissionToView:
            self.response.out.write(
                self.template_render(
                    'profile.html', self.makeTemplateValues(user,
                                                            profileUser)))
        else:
            self.response.out.write('Could not find user: ' + userURL)
 def saveUsers(self, users):
     for user in users:
         u = WhysaurusUser.getByUrl(user['url'])
         if u:
             u.updatePrivateArea(user['newPrivateArea'])
         else:
             results = {
                 'result': False, 
                 'error': "COuld not find user %s. Other users may have been updated." % user['userAuthIDs']
             } 
             return results       
     return {'result': True}
Example #5
0
 def resetPassword(self): 
     results = {'result': False}
     loggedInUser = self.current_user 
     if loggedInUser and loggedInUser.isAdmin:                             
         targetUserUrl = self.request.get('userurl')
         if targetUserUrl:
             u = WhysaurusUser.getByUrl(targetUserUrl)
             if u:
                 newPassword = u.resetPassword()
                 results = {'result': True, 'username': u.name, 'password': newPassword}
     resultJSON = json.dumps(results)
     self.response.headers["Content-Type"] = 'application/json; charset=utf-8'
     self.response.out.write(resultJSON)
Example #6
0
 def setInternalUser(self):
     results = {'result': False}
     loggedInUser = self.current_user
     if loggedInUser and loggedInUser.isAdmin:
         targetUserUrl = self.request.get('userurl')
         if targetUserUrl:
             u = WhysaurusUser.getByUrl(targetUserUrl)
             if u:
                 u.setInternalUser()
                 results = {'result': True, 'username': u.name}
     resultJSON = json.dumps(results)
     self.response.headers["Content-Type"] = 'application/json; charset=utf-8'
     self.response.out.write(resultJSON)
Example #7
0
    def saveUsers(self, users):

        for user in users:
            u = WhysaurusUser.getByUrl(user['url'])
            if u:
                u.updateUserSettings(user['privateAreas'], user['role'])
            else:
                results = {
                    'result': False, 
                    'error': "Could not find user %s. Other users may have been updated." % user['userAuthIDs']
                } 
                return results     
        
        return {'result': True}
    def get(self, userURL):
        userNamespace = namespace_manager.get_namespace()
        user = self.current_user

        # USERS ARE STORED IN THE DEFAULT NAMESPACE
        namespace_manager.set_namespace('')
        profileUser = WhysaurusUser.getByUrl(userURL)
        namespace_manager.set_namespace(userNamespace)

        if user:
            permissionToView = user.admin or user.privateArea == profileUser.privateArea 
        else:
            permissionToView = profileUser.privateArea is None or profileUser.privateArea == ''
        if profileUser and permissionToView:                
            path = os.path.join(constants.ROOT, 'templates/profile.html')
            # self.response.headers["Pragma"]="no-cache"
            # self.response.headers["Cache-Control"]="no-cache, no-store, must-revalidate, pre-check=0, post-check=0"
            # self.response.headers["Expires"]="Thu, 01 Dec 1994 16:00:00"
            self.response.out.write(template.render(path, self.makeTemplateValues(user, profileUser))) 
        else:
            self.response.out.write('Could not find user: ' + userURL)
Example #9
0
    def get(self, userURL):
        userNamespace = namespace_manager.get_namespace()
        user = self.current_user

        # USERS ARE STORED IN THE DEFAULT NAMESPACE
        namespace_manager.set_namespace('')
        profileUser = WhysaurusUser.getByUrl(userURL)
        if profileUser:
            logging.info("got Profile User. Areas were: " + str(profileUser.privateAreas))
        namespace_manager.set_namespace(userNamespace)

        if user:
            permissionToView = user.isAdmin or profileUser.privateAreas == [] or self.session.get('currentArea') in profileUser.privateAreas
        else:
            permissionToView = len(profileUser.privateAreas) == 0

        if profileUser and permissionToView:
            self.response.out.write(
                self.template_render(
                    'profile.html', 
                    self.makeTemplateValues(user, profileUser))) 
        else:
            self.response.out.write('Could not find user: ' + userURL)