def getUnreviewedResources(self): limit = util.try_f(int, self.request('n_limit'), 10) offset = util.try_f(int, self.request('offset'), 0) return self.json( mProjectResource.getUnreviewedProjectResources( self.db, limit, offset))
def getMessages(self): projectId = self.request('project_id') limit = util.try_f(int, self.request('n_messages'), 10) offset = util.try_f(int, self.request('offset'), 0) filterBy = self.request('filter') return self.json(mProject.getMessages(self.db, projectId, limit, offset, filterBy))
def getMessages(self): projectId = self.request('project_id') limit = util.try_f(int, self.request('n_messages'), 10) offset = util.try_f(int, self.request('offset'), 0) filterBy = self.request('filter') return self.json( mProject.getMessages(self.db, projectId, limit, offset, filterBy))
def getFlaggedItems(self, sql): limit = util.try_f(int, self.request('n_limit'), 10) offset = util.try_f(int, self.request('offset'), 0) data = [] try: data = list(self.db.query(sql, {'limit': limit, 'offset': offset})) except Exception, e: log.info("*** problem getting flagged items") log.error(e)
def getFlaggedItems(self, sql): limit = util.try_f(int, self.request('n_limit'), 10) offset = util.try_f(int, self.request('offset'), 0) data = [] try: data = list(self.db.query(sql, {'limit':limit, 'offset':offset})) except Exception, e: log.info("*** problem getting flagged items") log.error(e)
def updateResourceLocation(self): resourceId = util.try_f(int, self.request('resource_id')) if (not self.user or not self.user.isResourceOwner(resourceId)): log.error("*** resource edit attempt without ownership, resource id %s" % resourceId) return False locationId = util.try_f(int, self.request('location_id')) if (locationId): return mProjectResource.updateProjectResourceLocation(self.db, resourceId, locationId) else: log.error("*** resource edit attempt without location id, resource id %s" % resourceId) return False
def newProject(self): if (self.request('main_text')): return False supported_features = Config.get('features') if (self.user): owner_user_id = self.user.id title = self.request('title') description = self.request('text') organization = self.request('organization') locationId = util.try_f(int, self.request('location_id'), -1) imageId = self.request('image') keywords = [word.strip() for word in self.request('keywords').split(',')] if not util.strNullOrEmpty(self.request('keywords')) else [] resourceIds = self.request('resources').split(',') isOfficial = self.user.isAdmin and supported_features.get('is_official_supported') projectId = mProject.createProject(self.db, owner_user_id, title, description, ' '.join(keywords), locationId, imageId, isOfficial, organization) for resourceId in resourceIds: log.info("*** insert resource id %s" % resourceId) mProject.addResourceToProject(self.db, projectId, resourceId) if (projectId): return projectId else: log.error("*** couldn't create project") return False else: log.error("*** only logged in users can create projects") return False
def addUser(self): firstName = self.request('f_name') lastName = self.request('l_name') email = self.request('email') password = self.request('password') userGroupId = util.try_f(int, self.request('role')) affiliation = self.request('affiliation') if (util.strNullOrEmpty(email)or not util.validate_email(email)): log.error("*** cms user submitted with invalid email") return False elif (util.strNullOrEmpty(password)): log.error("*** cms user submitted with no password") return False elif (not userGroupId): log.error("*** cms user submitted with no role") return False else: userId = mUser.createUser(self.db, email, password, firstName, lastName, affiliation = affiliation, isAdmin = (userGroupId == 1 or userGroupId == 3)) # do we want to attach ideas to cms users? mIdea.attachIdeasByEmail(self.db, email) mUser.assignUserToGroup(self.db, userId, userGroupId) return userId
def addUser(self): firstName = self.request('f_name') lastName = self.request('l_name') email = self.request('email') password = self.request('password') userGroupId = util.try_f(int, self.request('role')) affiliation = self.request('affiliation') if (util.strNullOrEmpty(email) or not util.validate_email(email)): log.error("*** cms user submitted with invalid email") return False elif (util.strNullOrEmpty(password)): log.error("*** cms user submitted with no password") return False elif (not userGroupId): log.error("*** cms user submitted with no role") return False else: userId = mUser.createUser(self.db, email, password, firstName, lastName, affiliation=affiliation, isAdmin=(userGroupId == 1 or userGroupId == 3)) # do we want to attach ideas to cms users? mIdea.attachIdeasByEmail(self.db, email) mUser.assignUserToGroup(self.db, userId, userGroupId) return userId
def newIdea(self): if (self.request('main_text')): return False description = self.request('text') locationId = util.try_f(int, self.request('location_id'), -1) if (self.user): userId = self.user.id email = self.user.email else: userId = None email = self.request('email') ideaId = mIdea.createIdea(self.db, description, locationId, 'web', userId, email) if (ideaId): mMessaging.emailIdeaConfirmation( email, Config.get('email').get('from_address'), locationId) return ideaId else: return False return ideaId if ideaId else False
def GET(self, action=None): userId = util.try_f(int, action) if (userId and (not self.user or self.user.id != userId)): return self.showProfilePage(userId) else: return self.showAccountPage()
def addResource(self): if (self.request('main_text')): return False title = self.request('title') description = self.request('description') physical_address = self.request('physical_address') location_id = util.try_f(int, self.request('location_id'), -1) url = util.makeUrlAbsolute( self.request('url')) if self.request('url') else None keywords = ' '.join([ word.strip() for word in self.request('keywords').split(',') ]) if not util.strNullOrEmpty(self.request('keywords')) else None contact_name = self.request('contact_name') contact_email = self.request('contact_email') facebook_url = util.makeUrlAbsolute(self.request( 'facebook_url')) if self.request('facebook_url') else None twitter_url = util.makeUrlAbsolute(self.request( 'twitter_url')) if self.request('twitter_url') else None image_id = util.try_f(int, self.request('image')) # TODO this is a temp fix for a form issue if (contact_name == 'null'): contact_name = None try: projectResourceId = self.db.insert( 'project_resource', title=title, description=description, physical_address=physical_address, location_id=location_id, url=url, facebook_url=facebook_url, twitter_url=twitter_url, keywords=keywords, contact_name=contact_name, contact_email=contact_email, created_datetime=None, image_id=image_id, is_hidden=1, contact_user_id=self.user.id) return True except Exception, e: log.info("*** couldn't add resource to system") log.error(e) return False
def updateResourceLocation(self): resourceId = util.try_f(int, self.request('resource_id')) if (not self.user or not self.user.isResourceOwner(resourceId)): log.error( "*** resource edit attempt without ownership, resource id %s" % resourceId) return False locationId = util.try_f(int, self.request('location_id')) if (locationId): return mProjectResource.updateProjectResourceLocation( self.db, resourceId, locationId) else: log.error( "*** resource edit attempt without location id, resource id %s" % resourceId) return False
def updateResourceKeywords(self): resourceId = util.try_f(int, self.request('resource_id')) if (not self.user or not self.user.isResourceOwner(resourceId)): log.error("*** resource edit attempt without ownership, resource id %s" % resourceId) return False keywords = ' '.join([word.strip() for word in self.request('keywords').split(',')]) if not util.strNullOrEmpty(self.request('keywords')) else None return mProjectResource.updateProjectResourceTextData(self.db, resourceId, 'keywords', keywords)
def addResource(self): if (self.request('main_text')): return False title = self.request('title') description = self.request('description') physical_address = self.request('physical_address') location_id = util.try_f(int, self.request('location_id'), -1) url = util.makeUrlAbsolute(self.request('url')) if self.request('url') else None keywords = ' '.join([word.strip() for word in self.request('keywords').split(',')]) if not util.strNullOrEmpty(self.request('keywords')) else None contact_name = self.request('contact_name') contact_email = self.request('contact_email') facebook_url = util.makeUrlAbsolute(self.request('facebook_url')) if self.request('facebook_url') else None twitter_url = util.makeUrlAbsolute(self.request('twitter_url')) if self.request('twitter_url') else None image_id = util.try_f(int, self.request('image')) # TODO this is a temp fix for a form issue if (contact_name == 'null'): contact_name = None try: projectResourceId = self.db.insert('project_resource', title = title, description = description, physical_address = physical_address, location_id = location_id, url = url, facebook_url = facebook_url, twitter_url = twitter_url, keywords = keywords, contact_name = contact_name, contact_email = contact_email, created_datetime = None, image_id = image_id, is_hidden = 1, contact_user_id = self.user.id) return True except Exception,e: log.info("*** couldn't add resource to system") log.error(e) return False
def updateResourceDescription(self): resourceId = util.try_f(int, self.request('resource_id')) if (not self.user or not self.user.isResourceOwner(resourceId)): log.error("*** resource edit attempt without ownership, resource id %s" % resourceId) return False description = self.request('description') if (description): return mProjectResource.updateProjectResourceTextData(self.db, resourceId, 'description', description) else: log.error("*** resource edit attempt without description, resource id %s" % resourceId) return False
def updateResourceUrl(self): resourceId = util.try_f(int, self.request('resource_id')) if (not self.user or not self.user.isResourceOwner(resourceId)): log.error("*** resource edit attempt without ownership, resource id %s" % resourceId) return False url = self.request('url') if (url): return mProjectResource.updateProjectResourceTextData(self.db, resourceId, 'url', util.makeUrlAbsolute(url)) else: log.error("*** resource edit attempt without url, resource id %s" % resourceId) return False
def updateResourceAddress(self): resourceId = util.try_f(int, self.request('resource_id')) if (not self.user or not self.user.isResourceOwner(resourceId)): log.error("*** resource edit attempt without ownership, resource id %s" % resourceId) return False address = self.request('address') if (address): return mProjectResource.updateProjectResourceTextData(self.db, resourceId, 'physical_address', address) else: log.error("*** resource edit attempt without address, resource id %s" % resourceId) return False
def updateResourceContactEmail(self): resourceId = util.try_f(int, self.request('resource_id')) if (not self.user or not self.user.isResourceOwner(resourceId)): log.error("*** resource edit attempt without ownership, resource id %s" % resourceId) return False email = self.request('contactemail') if (email): return mProjectResource.updateProjectResourceTextData(self.db, resourceId, 'contact_email', email) else: log.error("*** resource edit attempt without email, resource id %s" % resourceId) return False
def updateResourceKeywords(self): resourceId = util.try_f(int, self.request('resource_id')) if (not self.user or not self.user.isResourceOwner(resourceId)): log.error( "*** resource edit attempt without ownership, resource id %s" % resourceId) return False keywords = ' '.join([ word.strip() for word in self.request('keywords').split(',') ]) if not util.strNullOrEmpty(self.request('keywords')) else None return mProjectResource.updateProjectResourceTextData( self.db, resourceId, 'keywords', keywords)
def directMessageUser(self): toUserId = util.try_f(int, self.request('to_user_id')) fromUserId = self.user.id message = self.request('message') if (toUserId and message): fromName = mProject.userName(self.user.firstName, self.user.lastName) toUser = mUser.User(self.db, toUserId) toName = "%s %s" % (toUser.firstName, toUser.lastName) toEmail = toUser.email return mMessaging.directMessageUser(self.db, toUserId, toName, toEmail, fromUserId, fromName, message) else: log.error("*** direct message missing to user_id or message") return False
def removeEndorsement(self): projectId = self.request('project_id') userId = util.try_f(int, self.request('user_id')) if (self.user and ((self.user.isLeader and self.user.id == userId) or self.user.isAdmin)): isRemoved = mProject.removeEndorsement(self.db, projectId, userId) # if successfully removed, remove messages as well if (isRemoved): mProject.removeEndorsementMessage(self.db, projectId, userId) return isRemoved else: log.error( "*** attempt to remove endorsement w/o proper credentials") return False
def removeEndorsement(self): projectId = self.request('project_id') userId = util.try_f(int, self.request('user_id')) if (self.user and ((self.user.isLeader and self.user.id == userId) or self.user.isAdmin)): isRemoved = mProject.removeEndorsement(self.db, projectId, userId) # if successfully removed, remove messages as well if (isRemoved): mProject.removeEndorsementMessage(self.db, projectId, userId) return isRemoved else: log.error("*** attempt to remove endorsement w/o proper credentials") return False
def updateResourceUrl(self): resourceId = util.try_f(int, self.request('resource_id')) if (not self.user or not self.user.isResourceOwner(resourceId)): log.error( "*** resource edit attempt without ownership, resource id %s" % resourceId) return False url = self.request('url') if (url): return mProjectResource.updateProjectResourceTextData( self.db, resourceId, 'url', util.makeUrlAbsolute(url)) else: log.error("*** resource edit attempt without url, resource id %s" % resourceId) return False
def updateResourceAddress(self): resourceId = util.try_f(int, self.request('resource_id')) if (not self.user or not self.user.isResourceOwner(resourceId)): log.error( "*** resource edit attempt without ownership, resource id %s" % resourceId) return False address = self.request('address') if (address): return mProjectResource.updateProjectResourceTextData( self.db, resourceId, 'physical_address', address) else: log.error( "*** resource edit attempt without address, resource id %s" % resourceId) return False
def updateResourceContactEmail(self): resourceId = util.try_f(int, self.request('resource_id')) if (not self.user or not self.user.isResourceOwner(resourceId)): log.error( "*** resource edit attempt without ownership, resource id %s" % resourceId) return False email = self.request('contactemail') if (email): return mProjectResource.updateProjectResourceTextData( self.db, resourceId, 'contact_email', email) else: log.error( "*** resource edit attempt without email, resource id %s" % resourceId) return False
def updateResourceDescription(self): resourceId = util.try_f(int, self.request('resource_id')) if (not self.user or not self.user.isResourceOwner(resourceId)): log.error( "*** resource edit attempt without ownership, resource id %s" % resourceId) return False description = self.request('description') if (description): return mProjectResource.updateProjectResourceTextData( self.db, resourceId, 'description', description) else: log.error( "*** resource edit attempt without description, resource id %s" % resourceId) return False
def newIdea(self): if (self.request('main_text')): return False description = self.request('text') locationId = util.try_f(int, self.request('location_id'), -1) if (self.user): userId = self.user.id email = self.user.email else: userId = None email = self.request('email') ideaId = mIdea.createIdea(self.db, description, locationId, 'web', userId, email) if (ideaId): mMessaging.emailIdeaConfirmation(email, Config.get('email').get('from_address'), locationId) return ideaId else: return False return ideaId if ideaId else False
def getUnreviewedResources(self): limit = util.try_f(int, self.request('n_limit'), 10) offset = util.try_f(int, self.request('offset'), 0) return self.json(mProjectResource.getUnreviewedProjectResources(self.db, limit, offset))
def getAdminUsers(self): limit = util.try_f(int, self.request('n_users'), 10) offset = util.try_f(int, self.request('offset'), 0) return self.json(mUser.getAdminUsers(self.db, limit, offset))
def test_try_f(self): self.assertEqual(util.try_f(int, "10", -1), 10, "Did not convert string to int.") self.assertEqual(util.try_f(int, "foo", -1), -1, "Did not get given default value as expected.") self.assertEqual(util.try_f(int, "foo"), None, "Did not get None as expected.") self.assertEqual(util.try_f(str, 10, "ten"), "10", "Did not convert int to string.")