def post(self, username=""): user = self.getCookieCacheUser() class_name = self.request.get("class-name") class_instructor = self.request.get("class-instructor") class_year = self.request.get("year") school_id = self.request.get("school_id") school = School.get_by_id(int(school_id)) if class_name and class_instructor and class_year and school: new_class = Class(name=class_name, school=school, instructor=class_instructor, year=int(class_year), user_creator=user, requests=[]) new_class.other_users.append(str(user.key().id())) new_class.put() memcache.set(str(user.key().id()) + class_name, new_class) memcache.delete(str(user.key().id())) self.redirect("/%s/%s" % (user.username, new_class.name)) else: schools = School.all() self.render("create-class.html", schools=schools, class_name=class_name, class_instructor=class_instructor, year=class_year, class_active="active")
def edit_course(id): # Get course from db or 404 course = Course.get_or_404(id) # Start with no errors errors = None # Get categories and schools to populate dropdowns categories = Category.get_all() schools = School.get_all() if request.method == 'POST': fields = { 'name': request.form['name'], 'url': request.form['url'], 'school': request.form.get('school', ''), 'category': request.form.get('category', '') } # Validations that checks that no fields are blank errors = check_no_blanks(fields=fields) if not errors: # Check that new course name does not exist already for this school school_courses = School.get_by_id(fields['school']).courses for school_course in school_courses: # If name isn't changed, will exist so allow this if school_course.name == fields['name'] and \ school_course.id != course.id: errors['name_exists'] = True if not errors: course.edit(name=fields['name'], url=fields['url'], school_id=fields['school'], category_id=fields['category']) flash('Course edited') return redirect(url_for('view_course', id=course.id)) # If it is not a POST request, populate input values from database else: fields = { 'name': course.name, 'url': course.url, 'school': course.school.id, 'category': course.category.id } return render_template('edit_course.html', fields=fields, errors=errors, categories=categories, schools=schools)
def add_course(): # Start with no errors and no fields errors = None fields = None # Grab user id. Associates course with user. user_id = session['user_id'] # Get all categories and schools to populate dropdowns categories = Category.get_all() schools = School.get_all() if request.method == 'POST': # Grab all form data fields = { 'name': request.form['name'], 'url': request.form['url'], 'school': request.form.get('school', ''), 'category': request.form.get('category', '') } # Form validation that makes sure no fields are blank errors = check_no_blanks(fields=fields) if not errors: # Check if school already has course by same name school_courses = School.get_by_id(fields['school']).courses for school_course in school_courses: if school_course.name == fields['name']: errors['name_exists'] = True # If there are no errors, then create course if not errors: course = Course.create(name=fields['name'], url=fields['url'], school_id=fields['school'], category_id=fields['category'], user_id=user_id) flash('Course created') return redirect(url_for('view_course', id=course.id)) # If this is a GET request, or there are errors, show form return render_template('add_course.html', fields=fields, categories=categories, schools=schools, errors=errors)