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