예제 #1
0
파일: views.py 프로젝트: jkaashoek/Iceblock
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'))
예제 #2
0
파일: admin.py 프로젝트: woyanh/bysj-master
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)
예제 #3
0
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!')
예제 #4
0
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)
예제 #5
0
파일: views.py 프로젝트: unscsprt/umagellan
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 + "&sectionId=" + 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")
예제 #6
0
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 + "&sectionId=" + 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")