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")
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')
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)
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)
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)
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())
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