def assignment_insert(self, assignment): """ Add or update an assignment owned by the given user """ if assignment.from_datastore: assignment_with_parent = assignment else: assignment_with_parent = Assignment(parent = main.get_parent_key(endpoints.get_current_user()), name = assignment.name) assignment_with_parent.put() return assignment_with_parent
def post(self): user = users.get_current_user() if not user: self.redirect(users.create_login_url(self.request.uri)) return next_active_assignemnt = None if (self.request.get('type') == 'Student'): rose_username = self.request.get('rose_username') new_student = Student(parent=get_parent_key(user), id=rose_username, first_name=self.request.get('first_name'), last_name=self.request.get('last_name'), rose_username=rose_username, team=self.request.get('team')) new_student.put() elif (self.request.get('type') == 'Assignment'): active_assignment = Assignment(parent=get_parent_key(user), name=self.request.get('assignment_name')) if len(self.request.get('assignment_entity_key')) > 0: assignment_key = ndb.Key(urlsafe=self.request.get('assignment_entity_key')) if assignment_key: assignment = assignment_key.get() if assignment: active_assignment = assignment active_assignment.name = self.request.get('assignment_name') active_assignment.put() next_active_assignemnt = active_assignment.key.urlsafe() elif (self.request.get('type') == 'SingleGradeEntry'): assignment_key = ndb.Key(urlsafe=self.request.get('assignment_key')) student_key = ndb.Key(urlsafe=self.request.get('student_key')) student = student_key.get() score = int(self.request.get('score')) new_grade_entry = GradeEntry(parent=assignment_key, id=student.rose_username, assignment_key=assignment_key, student_key=student_key, score=score) new_grade_entry.put() next_active_assignemnt = assignment_key.urlsafe() elif (self.request.get('type') == 'TeamGradeEntry'): assignment_key = ndb.Key(urlsafe=self.request.get('assignment_key')) score = int(self.request.get('score')) team = self.request.get('team') student_query = Student.query(Student.team==team, ancestor=get_parent_key(user)) for student in student_query: new_grade_entry = GradeEntry(parent=assignment_key, id=student.rose_username, assignment_key=assignment_key, student_key=student.key, score=score) new_grade_entry.put() next_active_assignemnt = assignment_key.urlsafe() if next_active_assignemnt: self.redirect("/?active_assignemnt=" + next_active_assignemnt) else: self.redirect("/")
def post(self): user = users.get_current_user() if not user: self.redirect(users.create_login_url(self.request.uri)) if (self.request.get('type') == 'Assignment'): new_assignment = Assignment(assignment_name = self.request.get('assignment_name'), owner=user) new_assignment.put() else: an_assignment_key = ndb.Key(Assignment, int(self.request.get('assignment_id'))) assignment_for_entry = an_assignment_key.get() if assignment_for_entry is None: raise endpoints.NotFoundException('Assignment id not found') if user != assignment_for_entry.owner: raise endpoints.ForbiddenException("You can only edit/create grade entries in your own Assignments.") new_grade_entry = GradeEntry(student_name = self.request.get('student_name'), score = self.request.get('score'), assignment_id = int(self.request.get('assignment_id')), parent = assignment_for_entry.key, owner=user) new_grade_entry.put() time.sleep(0.5) self.redirect('/')