Esempio n. 1
0
def api_add_course(request):
    if request.method == 'POST':
        form = CourseForm(request.POST)

        if form.is_valid():
            c = form.save(commit=False)

            if int(request.POST["lecturer_id"]) == -1:

                lec = Lecturer.objects.get_or_create(
                    title=request.POST["lecturer_title"],
                    name=request.POST["lecturer_name"],
                    department=request.POST["lecturer_dept"],
                    email=request.POST["lecturer_email"],
                    uni=University.objects.get(id=int(request.POST["uni"])))[0]
                lec.save()
                c.lecturer = lec

            else:
                c.lecturer = Lecturer(id=int(form.data["lecturer_id"]))
            c.save()

            return course(request, c.id)
        else:
            print form.errors
            return add_course(request)
    return add_course(request)
Esempio n. 2
0
def assign_course(id):
    """
    Assign a student to a course for a given year
    """
    check_admin()

    course = Course.query.get_or_404(id)

    # prevent admin from being assigned a course
    if course.is_admin:
        abort(403)

    form = CourseForm(obj=course)
    if form.validate_on_submit():
        course.department = form.department.data
        course.role = form.role.data
        course.student = form.student.data
        course.enrolment = form.enrolment.data
        db.session.add(course)
        db.session.commit()
        flash('You have successfully assigned a student, department and role.')

        # redirect to the roles page
        return redirect(url_for('admin.list_courses'))

    return render_template('admin/courses/course.html',
                           course=course,
                           form=form,
                           title='Assign Course')
Esempio n. 3
0
def home():
    buildings = {}
    buildings_file = app.config['BUILDINGS_JSON']
    with open(buildings_file,'r') as f:
        buildings = json.load(f)
    form = CourseForm()
    delform = PhoneNumberForm()
    return render_template('home.html', exams=current_user.exams, form=form, delform=delform, buildings=buildings)
Esempio n. 4
0
def add_course(request):
    context = RequestContext(request)
    print request.user.groups.filter(name='CourseAdders')
    if request.user.is_authenticated() == True and request.user.groups.filter(
            name='CourseAdders').exists():
        form = CourseForm(request.GET)
        return render_to_response('add_course.html', locals(), context)
    else:
        return HttpResponseRedirect('/')
Esempio n. 5
0
def create(request):
    form = CourseForm(data=request.POST or None)
    try:
        user = Teacher.objects.get(pk=request.user.id)
        if form.is_valid():
            course = form.create(user)
            return model_to_dict(course, fields=course_fields)
    except Exception as e:
        return e
    raise Http404
Esempio n. 6
0
def addClasses(request):
    if request.method == 'POST':
        courses = request.POST.getlist('course')
        courseList = []
        for course in courses:
            courseList.append(Course.objects.get(id=course))
        print 'courses inputted', courseList
    form = CourseForm()
    return render_to_response('schedulizer/addClasses.html', {
        'form': form,
    }, RequestContext(request))
Esempio n. 7
0
def course_details(id):
    course = Course.query.get(id)
    form = CourseForm()
    #:如果当前登录的教师没有教授这门课程,则禁止访问
    if current_user.id != course.teacher.id:
        abort(403)
    if form.validate_on_submit():
        course.time = form.time.data
        course.location = form.location.data
        flash(u'修改信息成功')
        db.session.commit()
        return redirect(url_for('course_details', id=id))
    return render_template('courseDetails.html', form=form, course=course)
Esempio n. 8
0
def addCourse():
    from forms import CourseForm
    form = CourseForm(request.form)
    if request.method == 'POST':
        if not form.validate():
            print(form.errors)
        c = Course(name=form.name.data,
                   course_type=form.course_type.data,
                   has_practical=form.has_practical.data,
                   desc=form.desc.data,
                   credit=form.credit.data)
        db.session.add(c)
        db.session.commit()
    return render_template('addcourse.html', form=form)
Esempio n. 9
0
	def course(self, course_id):
		if self.loggedIn != True:
			return redirect(url_for('instructor_login'))

		data = self.course_data(course_id)
		data['new_course_form'] = CourseForm()
		data['new_course_form'].instructor_id.data = data['instructor']['_id']
		data['new_lesson_form'] = LessonForm()
		data['new_lesson_form'].course_id.data = course_id

			#return jsonify(len(similar_courses))
		if data['course']:
			return render_template("instructor/course.html", data=data)
		else:
			return redirect(url_for('index'))
Esempio n. 10
0
def create_course():
    course_form = CourseForm()
    course_form.semester_id.choices = [(row['id'], row['name'])
                                       for row in db.read_all_semesters()]

    if course_form.validate_on_submit():
        rowcount = db.create_course({
            'designation': course_form.designation.data,
            'name': course_form.name.data,
            'semester_id': course_form.semester_id.data
        })
        if rowcount == 1:
            flash('Course {} created'.format(course_form.name.data))
            return redirect(url_for('all_courses'))
    return render_template('courses/add.html', form=course_form)
Esempio n. 11
0
def update(request, id):
    try:
        form = CourseForm(request.PUT or None)
        course = Course.objects.get(author=request.user.id, pk=id)
        if form.is_valid():
            course = form.update(course)
            content_type = ContentType.objects.get_for_model(course)
            UserLogEntry.objects.log_action(request.user.id,
                                            content_type.pk, course.id,
                                            unicode(course.title), 3)
            return model_to_dict(course, fields=course_fields)
        else:
            return form.error_messages
    except Exception as e:
        return e
    raise Http404
Esempio n. 12
0
    def dashboard_data(self):
        data = {}
        data['logged_in'] = True
        data['courses'] = []
        data['instructor'] = self.newInstructor.get_instructor_by_name(
            session['instructor']['name'])
        fields = {"instructor_id": data['instructor']['_id']}
        courses = self.newCourse.get_courses(fields)
        data['new_course_form'] = CourseForm()
        data['new_course_form'].instructor_id.data = data['instructor']['_id']
        if courses:
            for course in courses:
                course_subscription = self.newStudent_subscription.get_course_subscriptions(
                    course['_id'])
                course['subscribed'] = course_subscription.count()
                questions = self.newStudent_question.get_course_questions(
                    str(course['_id']))
                course['questions'] = questions.count()
                data['courses'].append(course)

        return data
Esempio n. 13
0
def edit_course(name):
    """
    Edit a course
    """
    if not current_user.isTeacher:
        abort(403)
    add_course = False
    course = Course.query.filter_by(courseNums=name).first()
    form = CourseForm(obj=course)
    if form.validate_on_submit():
        course.name = form.name.data
        course.description = form.description.data
        db.session.commit()
        flash(u'课程信息修改成功')
        return redirect(url_for('admin.list_courses'))

    form.description.data = course.description
    form.name.data = course.name
    course.courseNums = form.courseNums.data
    return render_template('admin/courses/course.html', action="Edit",
                           add_course=add_course, form=form,
                           course=course, title="Edit Course", code=course.courseNums)
Esempio n. 14
0
	def create(self):
		form = CourseForm()

		if request.method == 'POST':
			instructor_id = form.instructor_id.data
			instructor_id = ObjectId(instructor_id)
			if form.validate() == False:
				return redirect(url_for('new_course'))
			else:
				if 'cover_photo' not in request.files:
					flash('No Cover Photo')
					return redirect(url_for('new_course'))
				photo = request.files['cover_photo']
				if photo.filename == '':
					flash('No Photo Selected')
					return redirect(url_for('new_course'))
				if photo and self.allowed_file(photo.filename):
					filename = secure_filename(photo.filename)
					photo.save(os.path.join(self.uploadFolder, filename))
				id = self.newCourse.add(form.title.data, filename, form.description.data, instructor_id)
				return redirect(url_for('instructor_courses'))

		return redirect(url_for('instructor_dashboard'))
Esempio n. 15
0
def enroll():
    if not current_user.verified:
        return redirect(url_for('register',_external=True))

    form = CourseForm()
    if not form.validate_on_submit():
        flash("Invalid Course name provided", "warning")
        return redirect(url_for('home',_external=True))

    print(form.data['course'])
    course = Course.query.filter_by(name=form.data['course']).first()
    print(course)
    notif = Exam.query.filter_by(course = course, user= current_user).first()
    if course and not notif:
        exam = Exam.make_unique(course,DEFAULT_NOTIF,current_user)
        db.session.add(exam)
        db.session.commit()
        flash("You have successfully registered for this course.", "success")
    elif not course:
        flash("Course not found. Please enter the full course code as it appears on ACORN.", "warning")
    elif notif and course:
        flash("You are already registered in %s" % course.name, "warning")

    return redirect(url_for('home',_external=True))
Esempio n. 16
0
def add_course():
    add_course = True
    courseNums = ''.join(random.sample(string.ascii_letters+string.digits, 8))
    form = CourseForm()
    if form.validate_on_submit():
        course = Course(name=form.name.data,
                                description=form.description.data,teacherName=current_user.name,
                                courseNums=form.courseNums.data)
        try:
            # add course to the database
            db.session.add(course)
            db.session.commit()
            flash(u'成功创建一门课程')
        except:
            # in case course name already exists
            flash(u'创建课程失败,可能是选课口令与已存在的课程相同')

        # redirect to courses page
        return redirect(url_for('admin.list_courses'))

    # load course template
    return render_template('admin/courses/course.html',
                           add_course=add_course, form=form,
                           title="Add Course", code=courseNums)
Esempio n. 17
0
def calendar():
    conf = ""

    #cookies
    cookies = request.cookies
    if "courses" in cookies:
        cs = json.loads(cookies.get("courses"))
    else:
        cs = []

    if "credits" in cookies:
        credits = json.loads(cookies.get("credits"))
    else:
        credits = 0
        for i in cs:
            credits += data.getCredits(i["crn"])

    if "modal" in cookies:
        m = json.loads(cookies.get("modal"))
    else:
        m = "first"

    modalform = StartForm()

    form = CourseForm()
    if form.department.data == None:
        form.course.choices = data.getDeptCourses('ALL DEPTS')
    else:
        form.course.choices = data.getDeptCourses(form.department.data)
    form_clear = ClearForm()
    form_remove = RemoveForm()

    ch = []
    #for c in courses:
    for c in cs:
        ch.append((c["crn"], (c["title"] + " " + c["sect"])))
        form_remove.selcourses.choices = ch

    error = None

    #if the form is submitted validly
    if request.method == 'POST':
        if form.validate_on_submit():
            #reformat the form data into a dictionary of course info
            course = fmat(form.course.data)

            #if the course does not conflict with any pre-selected classes, add it to the class schedule
            conflicts = conflict(course, cs)
            if len(conflicts) == 0:
                #courses.append(course)
                cs.append(course)
                form_remove.selcourses.choices.append(
                    (course["crn"], (course["title"] + " " + course["sect"])))
                credits += data.getCredits(course["crn"])

            #if there are one or more conflicts with the current class schedule, do not add it and report conflict
            else:
                conlist = ", ".join(conflicts)
                conf = course["dept"] + " " + course["number"]
                error = 'The selected class, ' + course["title"] + ' (' + ''.join(
                    course["days"]
                ) + ', ' + ''.join(
                    course["times"]
                ) + '),' + ' conflicts with the following courses on your schedule: ' + conlist

        if form_remove.submit.data:
            print(form_remove.selcourses.data)
            for s in form_remove.selcourses.data:
                print(cs)
                for i in cs:
                    if i["crn"] == int(s):
                        print("yes")
                        cs.remove(i)
                        form_remove.selcourses.choices.remove(
                            (int(s), (i["title"] + " " + i["sect"])))
                        credits -= data.getCredits(i["crn"])

        if modalform.start.data:
            if m == "first":
                m = "yes"
            else:
                m = "no"

    attr = []
    for i in cs:
        attr.extend(data.getAttr(i["crn"]))
    attr = ", ".join(list(set(attr)))

    res = make_response(
        render_template('calendar.html',
                        title='Calendar',
                        modalform=modalform,
                        form=form,
                        cform=form_clear,
                        rform=form_remove,
                        error=error,
                        courses=cs,
                        creds=credits,
                        attributes=attr,
                        conf=conf,
                        m=m))
    res.set_cookie("courses", json.dumps(cs))
    res.set_cookie("credits", json.dumps(credits))
    res.set_cookie("modal", json.dumps(m))

    return res