Esempio n. 1
0
    def test_is_returned_from_the_db_in_local_time(self):
        before = datetime.now() - timedelta(seconds=1)
        addMessage(self.db, projectId=5, message='hello', message_type='my message type')
        after = datetime.now()

        messages = self.db.query('select created_datetime from project_message where project_id=5')
        created_datetime = messages[0]['created_datetime']

        self.assertIsNone(created_datetime.tzinfo)
        self.assert_(before <= created_datetime <= after, "%s <= %s <= %s" % (before, created_datetime, after))
Esempio n. 2
0
    def addMessage(self):
        """
        Add a message to the project discussion stream.

        POST Parameters:
        ---------------
        project_id -- The id of the project
        main_text -- The message contents
        attachment_id -- (optional) The file attachment on the message. If no
            file attachment is available, it should be an empty string or left
            off of the request entirely.

        """
        if (self.request('main_text')): return False

        projectId = self.request('project_id')
        message = self.request('message')

        # If the file_id is None or empty string, record it as None.
        attachmentId = self.request('attachment_id') or None

        if (not projectId):
            log.error("*** message add attempted w/o project id")
            return False
        elif (util.strNullOrEmpty(message)):
            log.error("*** message add attempted w/ no message")
            return False
        else:
            return mProject.addMessage(self.db, projectId, message,
                                       'member_comment', self.user.id,
                                       attachmentId=attachmentId)
Esempio n. 3
0
    def endorse(self):
        projectId = self.request('project_id')

        if (not self.user or not self.user.isLeader):
            log.error("*** endorsement submitted w/o logged in user or with non-project leader user account")
            return False
        else:
            isEndorsed = mProject.endorse(self.db, projectId, self.user.id)

            if (isEndorsed):
                # TODO do we need to get the whole project here?
                project = mProject.Project(self.db, projectId)

                # email admin
                if (not mMessaging.emailProjectEndorsement(project.data.owner_email,
                                                    project.data.title,
                                                    "%s %s" % (self.user.firstName, self.user.lastName))):
                    log.error("*** couldn't email admin on user_id = %s endorsing project %s" % (self.user.id, projectId))

                # add a message to the queue about the join
                message = 'Congratulations! Your group has now been endorsed by %s %s.' % (self.user.firstName, self.user.lastName)

                if (not mProject.addMessage(self.db,
                                            projectId,
                                            message,
                                            'endorsement',
                                            self.user.id)):
                    log.error("*** new message not created for user %s on endorsing project %s" % (self.user.id, projectId))

            return isEndorsed
Esempio n. 4
0
    def join(self):
        projectId = self.request('project_id')
        description = self.request('message')

        if (not self.user):
            log.error("*** join submitted w/o logged in user")
            return False
        elif (not projectId):
            log.error("*** join submitted w/o logged project id")
            return False
        elif (util.strNullOrEmpty(description)):
            log.error("*** join submitted w/o idea")
            return False
        else:
            isJoined = mProject.join(self.db, projectId, self.user.id)

            if (isJoined):
                project = mProject.Project(self.db, projectId)

                # create the user's "hello there" idea and add to project
                newIdeaId = mIdea.createIdea(self.db,
                                            description,
                                            project.data.location_id,
                                            'web',
                                            self.user.id,
                                            self.user.email)

                if (newIdeaId):
                    if (not mIdea.addIdeaToProject(self.db, newIdeaId, projectId)):
                        log.error("*** new idea not created for user %s on joining project %s" % (self.user.id, projectId))
                else:
                    log.error("*** new idea not created for user %s on joining project %s" % (self.user.id, projectId))

                # automatically insert any ideas attached to invites for this user and this project
                if (not mIdea.addInvitedIdeaToProject(self.db, projectId, self.user.id)):
                    log.error("*** couldn't add invited idea to project for user %s on joining project %s" % (self.user.id, projectId))

                # add a message to the queue about the join
                message = 'New Member! Your project now has %s total!' % project.data.num_members

                # email admin
                if (not mMessaging.emailProjectJoin(project.data.owner_email,
                                                    projectId,
                                                    project.data.title,
                                                    self.user.id,
                                                    mProject.userNameDisplay(self.user.firstName,
                                                                             self.user.lastName,
                                                                             self.user.affiliation,
                                                                             mProject.isFullLastName(self.user.groupMembershipBitmask)))):
                    log.error("*** couldn't email admin on user_id = %s joining project %s" % (self.user.id, projectId))

                if (not mProject.addMessage(self.db,
                                            projectId,
                                            message,
                                            'join',
                                            self.user.id,
                                            newIdeaId)):
                    log.error("*** new message not created for user %s on joining project %s" % (self.user.id, projectId))

        return isJoined
Esempio n. 5
0
    def addMessage(self):
        """
        Add a message to the project discussion stream.

        POST Parameters:
        ---------------
        project_id -- The id of the project
        main_text -- The message contents
        attachment_id -- (optional) The file attachment on the message. If no
            file attachment is available, it should be an empty string or left
            off of the request entirely.

        """
        if (self.request('main_text')): return False

        projectId = self.request('project_id')
        message = self.request('message')

        # If the file_id is None or empty string, record it as None.
        attachmentId = self.request('attachment_id') or None

        if (not projectId):
            log.error("*** message add attempted w/o project id")
            return False
        elif (util.strNullOrEmpty(message)):
            log.error("*** message add attempted w/ no message")
            return False
        else:
            return mProject.addMessage(self.db,
                                       projectId,
                                       message,
                                       'member_comment',
                                       self.user.id,
                                       attachmentId=attachmentId)
Esempio n. 6
0
    def endorse(self):
        projectId = self.request('project_id')

        if (not self.user or not self.user.isLeader):
            log.error(
                "*** endorsement submitted w/o logged in user or with non-project leader user account"
            )
            return False
        else:
            isEndorsed = mProject.endorse(self.db, projectId, self.user.id)

            if (isEndorsed):
                # TODO do we need to get the whole project here?
                project = mProject.Project(self.db, projectId)

                # email admin
                if (not mMessaging.emailProjectEndorsement(
                        project.data.owner_email, project.data.title, "%s %s" %
                    (self.user.firstName, self.user.lastName))):
                    log.error(
                        "*** couldn't email admin on user_id = %s endorsing project %s"
                        % (self.user.id, projectId))

                # add a message to the queue about the join
                message = 'Congratulations! Your group has now been endorsed by %s %s.' % (
                    self.user.firstName, self.user.lastName)

                if (not mProject.addMessage(self.db, projectId, message,
                                            'endorsement', self.user.id)):
                    log.error(
                        "*** new message not created for user %s on endorsing project %s"
                        % (self.user.id, projectId))

            return isEndorsed
Esempio n. 7
0
    def join(self):
        projectId = self.request('project_id')

        if (not self.user):
            log.error("*** join submitted w/o logged in user")
            return False
        elif (not projectId):
            log.error("*** join submitted w/o logged project id")
            return False

        else:
            isJoined = mProject.join(self.db, projectId, self.user.id)

            if (isJoined):
                project = mProject.Project(self.db, projectId)

                # add a message to the queue about the join
                message = 'New Member! Your project now has %s total!' % project.data.num_members

                # email admin
                if (not mMessaging.emailProjectJoin(
                        project.data.owner_email, projectId,
                        project.data.title, self.user.id,
                        mProject.userNameDisplay(
                            self.user.firstName, self.user.lastName,
                            self.user.affiliation,
                            mProject.isFullLastName(
                                self.user.groupMembershipBitmask)))):
                    log.error(
                        "*** couldn't email admin on user_id = %s joining project %s"
                        % (self.user.id, projectId))

                if (not mProject.addMessage(self.db, projectId, message,
                                            'join', self.user.id)):
                    log.error(
                        "*** new message not created for user %s on joining project %s"
                        % (self.user.id, projectId))

        return isJoined
Esempio n. 8
0
    def join(self):
        projectId = self.request('project_id')

        if (not self.user):
            log.error("*** join submitted w/o logged in user")
            return False
        elif (not projectId):
            log.error("*** join submitted w/o logged project id")
            return False
        
        else:
            isJoined = mProject.join(self.db, projectId, self.user.id)

            if (isJoined):
                project = mProject.Project(self.db, projectId)
                
                # add a message to the queue about the join
                message = 'New Member! Your project now has %s total!' % project.data.num_members

                # email admin
                if (not mMessaging.emailProjectJoin(project.data.owner_email,
                                                    projectId,
                                                    project.data.title,
                                                    self.user.id,
                                                    mProject.userNameDisplay(self.user.firstName,
                                                                             self.user.lastName,
                                                                             self.user.affiliation,
                                                                             mProject.isFullLastName(self.user.groupMembershipBitmask)))):
                    log.error("*** couldn't email admin on user_id = %s joining project %s" % (self.user.id, projectId))

                if (not mProject.addMessage(self.db,
                                            projectId,
                                            message,
                                            'join',
                                            self.user.id)):
                    log.error("*** new message not created for user %s on joining project %s" % (self.user.id, projectId))

        return isJoined
Esempio n. 9
0
    def join(self):
        projectId = self.request('project_id')
        description = self.request('message')

        if (not self.user):
            log.error("*** join submitted w/o logged in user")
            return False
        elif (not projectId):
            log.error("*** join submitted w/o logged project id")
            return False
        elif (util.strNullOrEmpty(description)):
            log.error("*** join submitted w/o idea")
            return False
        else:
            isJoined = mProject.join(self.db, projectId, self.user.id)

            if (isJoined):
                project = mProject.Project(self.db, projectId)

                # create the user's "hello there" idea and add to project
                newIdeaId = mIdea.createIdea(self.db, description,
                                             project.data.location_id, 'web',
                                             self.user.id, self.user.email)

                if (newIdeaId):
                    if (not mIdea.addIdeaToProject(self.db, newIdeaId,
                                                   projectId)):
                        log.error(
                            "*** new idea not created for user %s on joining project %s"
                            % (self.user.id, projectId))
                else:
                    log.error(
                        "*** new idea not created for user %s on joining project %s"
                        % (self.user.id, projectId))

                # automatically insert any ideas attached to invites for this user and this project
                if (not mIdea.addInvitedIdeaToProject(self.db, projectId,
                                                      self.user.id)):
                    log.error(
                        "*** couldn't add invited idea to project for user %s on joining project %s"
                        % (self.user.id, projectId))

                # add a message to the queue about the join
                message = 'New Member! Your project now has %s total!' % project.data.num_members

                # email admin
                if (not mMessaging.emailProjectJoin(
                        project.data.owner_email, projectId,
                        project.data.title, self.user.id,
                        mProject.userNameDisplay(
                            self.user.firstName, self.user.lastName,
                            self.user.affiliation,
                            mProject.isFullLastName(
                                self.user.groupMembershipBitmask)))):
                    log.error(
                        "*** couldn't email admin on user_id = %s joining project %s"
                        % (self.user.id, projectId))

                if (not mProject.addMessage(self.db, projectId, message,
                                            'join', self.user.id, newIdeaId)):
                    log.error(
                        "*** new message not created for user %s on joining project %s"
                        % (self.user.id, projectId))

        return isJoined