Esempio n. 1
0
    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))
Esempio n. 2
0
    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))
Esempio n. 3
0
    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))
Esempio n. 4
0
    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)
Esempio n. 5
0
    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)
Esempio n. 6
0
    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
Esempio n. 7
0
    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
Esempio n. 8
0
    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
Esempio n. 9
0
    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
Esempio n. 10
0
    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
Esempio n. 11
0
    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()
Esempio n. 12
0
    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
Esempio n. 13
0
 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()
Esempio n. 14
0
    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
Esempio n. 15
0
    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)
Esempio n. 16
0
    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
Esempio n. 17
0
    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
Esempio n. 18
0
    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
Esempio n. 19
0
    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
Esempio n. 20
0
    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
Esempio n. 21
0
    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)
Esempio n. 22
0
    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
Esempio n. 23
0
    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
Esempio n. 24
0
    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
Esempio n. 25
0
    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
Esempio n. 26
0
    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
Esempio n. 27
0
    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
Esempio n. 28
0
    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
Esempio n. 29
0
    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
Esempio n. 30
0
    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 
Esempio n. 31
0
    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))
Esempio n. 32
0
    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))
Esempio n. 33
0
    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))
Esempio n. 34
0
 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.")