Example #1
0
    def post(self):
        pass #adds a new post element to a top level todo, returns its key
             #it would be nice to detect @s here to send emails to people
        #adds a new todo element to a group, returns its key
        contents = self.request.get('c', default_value=None)
    
        if (contents is None):
            self.error(500)
            return
        
        #check login status
        pjc = login.getProjectMember(deny_access=True)
        if pjc is None:
            self.error(500)
            return
        
        todo_id = self.request.get("t", default_value=None)
        if todo_id is None:
            logging.error("td_id_invalid %s" % todo_id)
            self.error(500)
            return
            
        todo = Todo.get_by_id(int(todo_id))
        if todo is None:
            logging.error("td_notfound %s" % todo_id)
            self.error(500)
            return    
            
        project = todo.project_owner
        if project is None:
            logging.error("pj_notfound %s" % project_id)
            self.error(500)
            return
            
        #check permissions
        if pjc.key() not in todo.assigned_to.users:
            self.error(500)
            return
            
        p = Post(contents = utilities.ContentSanitizer.sanitize(contents),
                 author = pjc,
                 todo_owner = todo)
        p.put()
        
        todo.posts.append(p.key())
        todo.put()
        
        project_handler.projectJustUpdated(project)

        self.response.out.write("1")
Example #2
0
 def post(self):
     #if person logged in is a project head, removes a user from a project 
     #check login status
     pjc = login.getProjectMember()
     if pjc is None:
         self.error(500)
         return
     
     project_id = self.request.get("p", default_value=None)
     if project is None:
         logging.error("pj_id_invalid %s" % project_id)
         self.error(500)
         return
         
     project = Project.get_by_id(int(project_id))
     if project is None:
         logging.error("pj_notfound %s" % project_id)
         self.error(500)
         return    
         
     if project.creator is not pjc:
         self.error(500)
         return    
         
     rem_user_id = self.request.get("u", default_value=None)
     if rem_user_id is None:
         logging.error("remu_id_invalid %s" % rem_user_id)
         self.error(500)
         return
         
     rem_user = ProjectMember.get_by_id(int(rem_user_id))
     if rem_user is None:
         logging.error("remu_notfound %s" % rem_user_id)
         self.error(500)
         return    
         
     project_handler.setProjectListNeedsUpdateForUser(rem_user_id)
     project_handler.projectJustUpdated(project)
     
     for i in xrange(len(project.users)):
         if project.users[i] == rem_user_id:
             del project.users[i]
             project.put()
             self.request.out.write('1')
             return
             
     self.request.out.write('0')
Example #3
0
 def post(self):
     #relocates a todo to a new place in the subtodo list
     new_place = self.request.get('i', default_value='n')
         
     #make an int
     try:
         new_place = int(new_place)
     except ValueError:
         self.error(500)
         return
     
     #check login status
     pjc = login.getProjectMember(deny_access=True)
     if pjc is None:
         self.error(500)
         return
     
     todo_id = self.request.get("t", default_value=None)
     if todo_id is None:
         logging.error("td_id_invalid %s" % todo_id)
         self.error(500)
         return
         
     todo = Todo.get_by_id(int(todo_id))
     if todo is None:
         logging.error("td_notfound %s" % todo_id)
         self.error(500)
         return    
         
     project = todo.project_owner
     if project is None:
         logging.error("pj_notfound %s" % project_id)
         self.error(500)
         return
         
     #check permissions
     if pjc.key() not in todo.assigned_to.users:
         self.error(500)
         return
     
     
     del todo.assigned_to.tasks[todo.assigned_to.tasks.index(todo.key())]
     todo.assigned_to.tasks.insert(new_place, todo.key())
     todo.assigned_to.put()
     
     
     project_handler.projectJustUpdated(project)
Example #4
0
 def post(self):
     #edits an existing todo 
     name = self.request.get('n', default_value=None)
     assignments = self.request.get('a', default_value=None)
     description = self.request.get('d', default_value=None)
     
     #check login status
     pjc = login.getProjectMember(deny_access=True)
     if pjc is None:
         self.error(500)
         return
     
     todo_id = self.request.get("t", default_value=None)
     if todo_id is None:
         logging.error("td_id_invalid %s" % todo_id)
         self.error(500)
         return
         
     todo = Todo.get_by_id(int(todo_id))
     if todo is None:
         logging.error("td_notfound %s" % todo_id)
         self.error(500)
         return    
         
     project = todo.project_owner
     if project is None:
         logging.error("pj_notfound %s" % project_id)
         self.error(500)
         return
         
     #check permissions
     if pjc.key().id() not in todo.assigned_to.users:
         self.error(500)
         return
     
     if name is not None:
         todo.name = utilities.ContentSanitizer.sanitize(name)
     if assignments is not None:
         todo.tags = utilities.ContentSanitizer.sanitize(assignments)
         todo.assigned_to = matchProjectMembers(assignments, project)
     if description is not None:
         todo.description = utilities.ContentSanitizer.sanitize(description)
     
     todo.put()
     
     project_handler.projectJustUpdated(project)
Example #5
0
 def post(self):
     #adds a new todo element to a group, returns its key
     name = self.request.get('n', default_value=None)
     assignments = self.request.get('a', default_value='')
     description = self.request.get('d', default_value='')
 
     if (name is None):
         self.error(500)
         return
     
     #check login status
     pjc = login.getProjectMember(deny_access=True)
     if pjc is None:
         self.error(500)
         return
     
     project_id = self.request.get("p", default_value=None)
     if project_id is None:
         logging.error("pj_id_invalid %s" % project_id)
         self.error(500)
         return
         
     project = Project.get_by_id(int(project_id))
     if project is None:
         logging.error("pj_notfound %s" % project_id)
         self.error(500)
         return    
     
     #check permissions
     if pjc.key() not in todo.assigned_to.users:
         self.error(500)
         return
     
         
     t = Todo(name = utilities.ContentSanitizer.sanitize(name),
              description = utilities.ContentSanitizer.sanitize(description),
              tags = utilities.ContentSanitizer.sanitize(assignments),
              project_owner = project,
              author = pjc,
              assigned_to = matchProjectMembers(assignments, project))
     t.put()
     
     project.tasks.append(t.key())
     project.put()
     
     project_handler.projectJustUpdated(project)
Example #6
0
 def get(self):
     #checks an invite hash, asks them to login if not, then creates projectmember
     #finally redirects to the project page
     
     #check login status
     project_member = login.getProjectMember(deny_access=False)
     if project_member is None:
         self.redirect(login.getLoginScreen(self.request.uri))
         return
         
         
     project_handler.setProjectListNeedsUpdateForUser(project_member.key().id())
     project_handler.projectJustUpdated(project)
 
     success = login.checkInvite(project_member)
     if not success:
         self.response.headers['Content-Type'] = 'text/plain-text'
         self.response.out.write("""Invite was invalid or expired after 7 days.\n 
                                    Please get a new invite.""")
     else:
         self.redirect("/project?p=%s" % success.invited_to.key().id())
Example #7
0
def checkInvite(invited):
    #assumes the person is logged in!
    #checks an invite hash, then creates projectmember
    #returns the project_member if good invite, None if it failed somehow
    
    inv_hash = self.request.get("hash", default_value=None)
    if (inv_hash is None):
        return None
        
    invites = ProjectInvite.all()
    invites.filter("invite_hash =", inv_hash)
    invite = invites.get()
    
    if invite is None:
        return None
    
    invite.invited_to.users.append(invited.key().id())
    invite.invited_to.put()
        
    project_handler.setProjectlistNeedsUpdateForUser(invite.invited_to.key().id())
    project_handler.projectJustUpdated(invited.invited_to)
    
    return invite