def create_teacher(): new = Teacher() try: new.name = request.form["key"] new.age = request.form["age"] new.school = request.form["school"] new.subject = request.form["phone_address"] new.ave_stars = request.form["ave_stars"] new.character = request.form["character"] new.comment = request.form["comment"] except KeyError: return jsonify({"result": "fail", "description": "create_teacher"}), 400 new.ave_stars = None new.photo_url = request.args.get("photo_url", None) db.session.add(new) db.session.commit() return jsonify({"result": "success", "description": "create_teacher"})
def post(self): teacher_name = self.request.get("teacher_name") department = int(self.request.get("department")) teaching_time = self.request.get("teaching_time") # sun = self.request.get('sun').replace(' ', '').split(',') # mon = self.request.get('mon') # tue = self.request.get('tue') # wed = self.request.get('wed') # thu = self.request.get('thu') # fri = self.request.get('fri') # class_courses = self.request.get('class_courses') teacher = Teacher( teacher_name=teacher_name, department=department, teaching_time=teaching_time, # class_courses = class_courses ) teacher.put() self.response.write("Sucessfully")
def getTeacher(self, TeacherID): return [ Teacher(tuple) for tuple in self._db.execute( """select * from Teacher where TeacherID={id};""".format( id=TeacherID)).fetchall() ][0]
def getTeachers(self): return [ Teacher(tuple) for tuple in self._db.execute("select * from Teacher;").fetchall() ]
def get(self): teachers = db.GqlQuery("Select * from Teacher") teachers_timing = {} for teacher in teachers: teachers_timing[teacher.key().id()] = eval(teacher.teaching_time) print teachers_timing classCourses = db.GqlQuery("Select * from ClassCourse") classes = {} for classCourse in classCourses: classes[classCourse.key().id()] = { "routine": {"sunday": [], "monday": [], "tuesday": [], "wednesday": [], "thursday": [], "friday": []}, "class_distribution": {}, "details": {"faculty": classCourse.faculty, "year": classCourse.year, "semester": classCourse.semester}, } eCourse = eval(classCourse.course) for course in eCourse: # l = Teacher.get_by_id(eCourse[course]) l = { "distribution": eval(Course.get_by_key_name(course).class_distribution), "teacher": eCourse[course], "teaching_time": eval(Teacher.get_by_id(eCourse[course]).teaching_time), "possibilities": { "sunday": {}, "monday": {}, "tuesday": {}, "wednesday": {}, "thursday": {}, "friday": {}, }, } # print l classes[classCourse.key().id()]["class_distribution"][course] = l for class_ in classes: class_distribution = classes[class_]["class_distribution"] routine = classes[class_]["routine"] for subject in class_distribution: distribution = class_distribution[subject]["distribution"] for i in range(4, 0, -1): if distribution[str(i)] != 0: # print "found " + str(i) + " " + str(distribution[str(i)]) + subject findTeachingTime( subject=subject, available_teaching_time=class_distribution[subject]["teaching_time"], routine=routine, class_duration=i, total_classes=distribution[str(i)], possibilities=class_distribution[subject]["possibilities"], ) total_tries = 0 original_classes = copy.deepcopy(classes) inner_fail = True while total_tries < 50 and inner_fail == True: inner_fail = False total_tries += 1 classes = copy.deepcopy(original_classes) # classes = for class_ in classes: class_distribution = classes[class_]["class_distribution"] routine = classes[class_]["routine"] for subject in class_distribution: distribution = class_distribution[subject]["distribution"] for i in range(4, 0, -1): tries = 0 while distribution[str(i)] != 0: if tries > 10: print "giving up" inner_fail = True break try: randomday, randomtime = get_random_day_for_duration( class_distribution[subject]["possibilities"], i, routine ) except: tries += 1 continue t = Teacher.get_by_id(class_distribution[subject]["teacher"]) routine[randomday].append( { "subject": subject, "teacher": {"id": t.key().id(), "name": t.teacher_name}, "timing": copy.deepcopy(randomtime), } ) class_distribution[subject]["possibilities"][randomday] = {} # print "--" print routine distribution[str(i)] -= 1 # reduce total classes self.response.headers["Content-Type"] = "application/json" # self.write(json.dumps(original_classes,sort_keys=True, indent=4)) self.write(json.dumps(classes, sort_keys=True, indent=4))