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)
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)
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}
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)
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)
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)
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)