def add_class(request): name = request.POST['name'] teacher = request.POST['teacher name'] availability = request.POST['availability'] description = request.POST['description'] max_cap = request.POST['max_cap'] c = Course() c.name = name c.teacher = teacher c.available = availability c.max_cap = max_cap c.description = description c.save() return HttpResponseRedirect(reverse('teacher'))
def add_course(): form = addCourse() banji = Banji.query.all() teacher = Teacher.query.all() form.teacher.choices = [(th.id, th.name) for th in teacher] form.banji.choices = [(bj.id, bj.name) for bj in banji] if form.validate_on_submit(): new_course = Course() new_course.id = form.id.data new_course.name = form.name.data new_course.place = form.place.data new_course.start_time = form.start_time.data new_course.end_time = form.end_time.data new_course.teacher = Teacher.query.filter_by( id=form.teacher.data).first() new_course.banji = Banji.query.filter_by(id=form.banji.data).first() db.session.add(new_course) db.session.commit() flash('添加成功', 'success') return redirect(url_for('index_admin.manage_course')) return render_template('admin/add_course.html', form=form)
def course_admin_update(request, course_id, prefix): if request.is_ajax(): form = CourseForm(request.POST) if prefix == 'None' else CourseForm(request.POST, prefix=prefix) if form.is_valid(): try: course = Course.objects.get(pk=course_id) course.teacher = form.cleaned_data['teacher'] course.name = form.cleaned_data['name'] course.save() return HttpResponse('OK') except ObjectDoesNotExist: # create new object position = None if Course.objects.count() > 0: course = Course.objects.order_by('-position').all()[0] position = course.position else: position = 1 newcourse = Course() newcourse.teacher = form.cleaned_data['teacher'] newcourse.name = form.cleaned_data['name'] newcourse.position = position newcourse.save() response = {'created_object_id': newcourse.pk} return HttpResponse(json.dumps(response), mimetype="application/json") else: errors_dict = {} if form.errors: for error in form.errors: e = form.errors[error] field = prefix+"-"+error; errors_dict[field] = unicode(e) print errors_dict return HttpResponseBadRequest(json.dumps(errors_dict)) else: return HttpResponseNotFound('You do not have permission to access this page!')
def module001_course(): form = CourseForm() if request.method == 'POST': if form.validate_on_submit(): if not form.id.data: course = Course( name=form.name.data.strip(), institution_name=form.institution_name.data.strip(), user_id=current_user.id) db.session.add(course) db.session.commit() course.code = 'C' + str(course.id) + ''.join( random.choice('AILNOQVBCDEFGHJKMPRSTUXZ') for i in range(4)) newname = form.name.data.strip().replace('-' + course.code, '') if '-' + course.code not in newname: course.name = newname + '-' + course.code try: db.session.commit() flash("Course created successfully with code: {}".format( course.code)) except: db.session.rollback() flash("Error creating course!") else: change = 0 course = Course.query.get(form.id.data) newcoursename = form.name.data.strip().replace( '-' + course.code, '') + '-' + course.code if course.name != newcoursename: course.name = newcoursename change = 1 newinstitutionname = form.institution_name.data.strip() if course.institution_name != newinstitutionname: course.institution_name = newinstitutionname change = 1 try: if change: db.session.commit() flash("Course updated successfully!") else: flash("Nothing has changed!") except: db.session.rollback() flash("Error updating course!") return redirect(url_for('module001.module001_course')) elif ('rowid' in request.args): course = Course.query.get(request.args['rowid']) if not course or course.user_id != current_user.id: flash('Error retrieving data for the course {}'.format( request.args['rowid'])) else: form = CourseForm(id=course.id, name=course.name.replace('-' + course.code, ''), institution_name=course.institution_name, code=course.code) courses = Course.query.filter_by(user_id=current_user.id) return render_template("module001_course.html", module="module001", form=form, rows=courses)
def add_course(request): ''' add new course object to the database ''' course = request.GET.get('course').upper() section = request.GET.get('section') response_data = {} course_info = {} response_data['error'] = False response_data['error_msg'] = '' # add the course to the user's list of courses user = UserProfile.objects.get(user=request.user) profile = request.user.profile # print course # print section if len(section) != 4: if len(section) == 3: section = "0" + section else: response_data['error'] = True response_data['error_msg'] = 'Section ID is invalid!' return HttpResponse(json.dumps(response_data), mimetype="application/json") # Set URL for testudo course search, term, and other query data page_url = "https://ntst.umd.edu/soc/search?courseId=" + course + "§ionId=" + section + "&termId=201308&_openSectionsOnly=on&courseLevelFilter=ALL&classStartTime=&_classDays=on&teachingCenter=ALL" page = urllib2.urlopen(page_url).read() soup = BeautifulSoup(page) if soup.find("div", {"class" : "no-courses-message"}) != None: response_data['error'] = True response_data['error_msg'] = 'That course does not exist!' return HttpResponse(json.dumps(response_data), mimetype="application/json") if len(course) <= 4: response_data['error'] = True response_data['error_msg'] = 'That course does not exist!' return HttpResponse(json.dumps(response_data), mimetype="application/json") course_container = soup.find("div", {"class" : "courses-container"}) first_block = course_container.find("div", {"class" : "course"}, {"id": course}) if first_block == None: response_data['error'] = True response_data['error_msg'] = 'That course does not exist!' return HttpResponse(json.dumps(response_data), mimetype="application/json") class_block = first_block.find('div', {'class' : 'class-days-container'}) classes = class_block.findAll('div', {'class' : 'row'}) response_data['courses'] = [] # create the new course objects and add them to database for i in range(0, len(classes)): try: # set c to the matching course if it exists in DB room = classes[i].find('span', {'class' : 'class-room'}).text c = Course.objects.get(name=course, section=section, room_number=room) except: # course does not exist in DB, create new course and add it to DB c = Course() c.name = course.upper() c.section = section room = classes[i].find('span', {'class' : 'class-room'}).text if room != None: if room == 'ONLINE': response_data['error'] = True response_data['error_msg'] = 'You cannot add online classes!' return HttpResponse(json.dumps(response_data), mimetype="application/json") else: c.room_number = room c.build_code = classes[i].find('span', {'class' : 'building-code'}).text class_start = classes[i].find('span', {'class' : 'class-start-time'}).text c.start_time = parser.parse(class_start) class_end = classes[i].find('span', {'class' : 'class-end-time'}).text c.end_time = parser.parse(class_end) c.section_days = classes[i].find('span', {'class' : 'section-days'}).text c.link = page_url if classes[i].find('span', {'class' : 'class-type'}) != None: c.tag = classes[i].find('span', {'class' : 'class-type'}).text c.save() # add course to user's list of courses if not c in profile.courses.all(): user.courses.add(c) user.save() course_info = {} course_info['name'] = c.name course_info['section'] = c.section course_info['build_code'] = c.build_code course_info['room_number'] = c.room_number course_info['start_time'] = c.start_time.strftime("%H:%M") course_info['end_time'] = c.end_time.strftime("%H:%M") course_info['section_days'] = [] s = Scraper() s.split_days(course_info['section_days'], c.section_days) course_info['link'] = c.link course_info['tag'] = '' if c.tag == None else c.tag course_info['id'] = c.id response_data['courses'].append(course_info) response_data['error'] = False response_data['error_msg'] = '' else: response_data['error'] = True response_data['error_msg'] = 'Course already added!' errorResponse = HttpResponse(json.dumps(response_data), mimetype="application/json") if response_data['error']: if course_info == {}: return errorResponse response_data['error'] = False response_data['error_msg'] = '' return HttpResponse(json.dumps(response_data), mimetype="application/json")
def add_course(request): ''' add new course object to the database ''' course = request.GET.get('course').upper() section = request.GET.get('section') response_data = {} course_info = {} response_data['error'] = False response_data['error_msg'] = '' # add the course to the user's list of courses user = UserProfile.objects.get(user=request.user) profile = request.user.profile # print course # print section if len(section) != 4: if len(section) == 3: section = "0" + section else: response_data['error'] = True response_data['error_msg'] = 'Section ID is invalid!' return HttpResponse(json.dumps(response_data), mimetype="application/json") # Set URL for testudo course search, term, and other query data page_url = "https://ntst.umd.edu/soc/search?courseId=" + course + "§ionId=" + section + "&termId=201308&_openSectionsOnly=on&courseLevelFilter=ALL&classStartTime=&_classDays=on&teachingCenter=ALL" page = urllib2.urlopen(page_url).read() soup = BeautifulSoup(page) if soup.find("div", {"class": "no-courses-message"}) != None: response_data['error'] = True response_data['error_msg'] = 'That course does not exist!' return HttpResponse(json.dumps(response_data), mimetype="application/json") if len(course) <= 4: response_data['error'] = True response_data['error_msg'] = 'That course does not exist!' return HttpResponse(json.dumps(response_data), mimetype="application/json") course_container = soup.find("div", {"class": "courses-container"}) first_block = course_container.find("div", {"class": "course"}, {"id": course}) if first_block == None: response_data['error'] = True response_data['error_msg'] = 'That course does not exist!' return HttpResponse(json.dumps(response_data), mimetype="application/json") class_block = first_block.find('div', {'class': 'class-days-container'}) classes = class_block.findAll('div', {'class': 'row'}) response_data['courses'] = [] # create the new course objects and add them to database for i in range(0, len(classes)): try: # set c to the matching course if it exists in DB room = classes[i].find('span', {'class': 'class-room'}).text c = Course.objects.get(name=course, section=section, room_number=room) except: # course does not exist in DB, create new course and add it to DB c = Course() c.name = course.upper() c.section = section room = classes[i].find('span', {'class': 'class-room'}).text if room != None: if room == 'ONLINE': response_data['error'] = True response_data[ 'error_msg'] = 'You cannot add online classes!' return HttpResponse(json.dumps(response_data), mimetype="application/json") else: c.room_number = room c.build_code = classes[i].find('span', { 'class': 'building-code' }).text class_start = classes[i].find('span', { 'class': 'class-start-time' }).text c.start_time = parser.parse(class_start) class_end = classes[i].find('span', { 'class': 'class-end-time' }).text c.end_time = parser.parse(class_end) c.section_days = classes[i].find('span', { 'class': 'section-days' }).text c.link = page_url if classes[i].find('span', {'class': 'class-type'}) != None: c.tag = classes[i].find('span', {'class': 'class-type'}).text c.save() # add course to user's list of courses if not c in profile.courses.all(): user.courses.add(c) user.save() course_info = {} course_info['name'] = c.name course_info['section'] = c.section course_info['build_code'] = c.build_code course_info['room_number'] = c.room_number course_info['start_time'] = c.start_time.strftime("%H:%M") course_info['end_time'] = c.end_time.strftime("%H:%M") course_info['section_days'] = [] s = Scraper() s.split_days(course_info['section_days'], c.section_days) course_info['link'] = c.link course_info['tag'] = '' if c.tag == None else c.tag course_info['id'] = c.id response_data['courses'].append(course_info) response_data['error'] = False response_data['error_msg'] = '' else: response_data['error'] = True response_data['error_msg'] = 'Course already added!' errorResponse = HttpResponse(json.dumps(response_data), mimetype="application/json") if response_data['error']: if course_info == {}: return errorResponse response_data['error'] = False response_data['error_msg'] = '' return HttpResponse(json.dumps(response_data), mimetype="application/json")