示例#1
0
def subjectview(request, subject_id=None):
    if subject_id == None:
        subject = Subject()
    else:
        subject = get_object_or_404(Subject, pk=subject_id)
        old_subject_code = subject.subject_code

    if request.method == 'POST':
        form = SubjectForm(request.POST, instance=subject)
        if form.is_valid():
            cleaned_data = form.cleaned_data
            subject_code = cleaned_data['subject_code']
            if subject_id:
                if subject_code == old_subject_code:
                    form = form.save()
                    messages.success(request, 'Subject edited')
                    return redirect(index)
                else:
                    messages.error(request, 'The subject code cannot edited')
            else:
                subjects = Subject.objects.filter(subject_code=subject_code)
                if subjects.count() > 0:
                    messages.error(request, 'Subject already exists')
                else:
                    form = form.save()
                    messages.success(request, 'Subject added')
                    return redirect(index)
        else:
           form = SubjectForm(request.POST, auto_id=True)
    else:
        form = SubjectForm(instance=subject)

    return render(request, 'subjectview.html', {'form' : form})
示例#2
0
def subject(id):
    if current_user.role_name != 'AdminUser':
        return render_error(403)
    if id == 'new':
        s = Subject()
    else:
        try:
            id = int(id)
        except ValueError:
            return render_error(400)
        s = db.session.query(Subject).filter(Subject.id == id).one_or_none()
        if s is None:
            return render_error(404)

    form = SubjectForm(request.form if request.method == 'POST' else None, obj=s)
    if form.button_delete.data:
        form.validate()
        if db.session.query(CurriculumUnit).filter(CurriculumUnit.subject_id == s.id).count() > 0:
            form.button_delete.errors.append('Невозможно удалить предмет, к которому привязаны единицы учебного плана')
        if len(form.button_delete.errors) == 0:
            db.session.delete(s)
            db.session.commit()
            db.session.flush()
            return redirect(url_for('subjects'))

    if form.button_save.data and form.validate():
        form.populate_obj(s)
        db.session.add(s)
        db.session.commit()
        if id == 'new':
            db.session.flush()
            return redirect(url_for('subject', id=s.id))

    return render_template('subject.html', subject=s, form=form)
示例#3
0
def create():
    user = g.user
    subjectform = SubjectForm()
    if subjectform.validate_on_submit():
        if (g.user.role == ROLE_TEACHER) | (g.user.role == ROLE_ADMIN):
            sems = re.findall('\d+', subjectform.semesters.data)
            commit_subject = Subject(
                name=subjectform.name.data.lower(),
                semesters=subjectform.semesters.data,
                allowed_users="{0} {1}".format(
                    str(g.user.nickname),
                    re.sub('\W+', ' ',
                           subjectform.allowed_users.data.lower())),
                last_change=datetime.datetime.now())
            db.session.add(commit_subject)
            for semester in sems:
                for i in range(3):
                    commit_att = Attestation(number=i + 1,
                                             semester=semester,
                                             subject_id=commit_subject.id,
                                             subject=commit_subject)
                    db.session.add(commit_att)
            db.session.commit()
            flash('Added successfully')
            return redirect(
                url_for('subjectpage',
                        name=commit_subject.name,
                        semester=sems[0]))
        else:
            flash('No permission to create subjects')
    return render_template("create.html", form=subjectform, user=user)
示例#4
0
def add_subject():
    form = SubjectForm()
    if request.method == 'GET':
        return render_template('add_subject.html', form=form)
    elif request.method == 'POST':
        subject = insert_subject(form.title.data, form.reviewer.data,
                                 form.review.data, form.rating.data)
        return redirect(url_for('review', subject=subject))
示例#5
0
    def get(self, request, *args, **kwargs):
        sub_form = SubjectForm()
        map_form = SubjectMapForm()

        return render(request, self.template_name, {
            'subject_form': sub_form,
            'map_form': map_form
        })
示例#6
0
    def get(self, request, *args, **kwargs):
        _sub_id = args[0]
        subObj = Subject.objects.filter(id=_sub_id)
        sub = subObj.values()[0]
        sub['sid'] = subObj[0].id
        sub['etype'] = 'subject'
        form = SubjectForm(sub)

        return render(request, self.template_name, {'form': form})
示例#7
0
def subject_list():
    if not g.user_id:
        flash(message="You must Login or Signup")
        return redirect(url_for('login'))
    else:
        form = SubjectForm()
        if form.validate_on_submit():
            session['subject_name'] = form.subjects.data
            return redirect(url_for('questions'))
        return render_template('subject_list.html', form=form)
示例#8
0
 def post(self, request, *args, **kwargs):
     print request.POST
     if request.POST['etype'] == 'subject':
         form = SubjectForm(request.POST)
         sub = form.save(commit=False)
         sub.save()
         return HttpResponseRedirect('/admin/subject')
     if request.POST['etype'] == 'map':
         form = SubjectMapForm(request.POST)
         _map = form.save(commit=False)
         _map.save()
         return HttpResponseRedirect('/admin/subject/')
示例#9
0
 def post(self, request, *args, **kwargs):
     try:
         instance = Subject.objects.get(id=request.POST['sid'])
         form = SubjectForm(request.POST, instance=instance)
         sub = form.save(commit=False)
         #user = User.objects.create_user(student.admission_no,student.email, 'johnpassword')
         #user.first_name=student.name
         #user.save()
         sub.save()
         msg = "Record saved"
     except:
         msg = "Unable to process, Please check all values are present"
     return HttpResponse(json.dumps(dict(result=msg)),
                         content_type="application/json")
示例#10
0
def refactor(name, semester):
    subject = Subject.query.filter_by(name=name).first()
    if subject is not None and semester in subject.semesters:
        if (g.user.role == ROLE_ADMIN) | (g.user.nickname
                                          in subject.allowed_users):
            ref_form = RefactorForm()
            subj_form = SubjectForm()
            att_number = {1: ref_form.att1, 2: ref_form.att2, 3: ref_form.att3}
            if ref_form.validate_on_submit():
                for att in subject.attestations:
                    if att.semester == semester:
                        att.themes = att_number[att.number].data
                subject.last_change = datetime.datetime.now()
                subject.allowed_users += ' ' + ref_form.users_to_add.data.lower(
                )
                for nick in ref_form.users_to_delete.data.lower().split(' '):
                    subject.allowed_users = subject.allowed_users.replace(
                        nick, "").rstrip()
                subject.name = subj_form.name.data.lower()
                subject.semesters = subj_form.semesters.data.lower()
                db.session.add(subject)
                db.session.commit()
                return redirect(
                    url_for('subjectpage',
                            name=subject.name,
                            semester=semester))
            else:
                subj_form.name.data = str(subject.name)
                subj_form.semesters.data = str(subject.semesters)
                for att in subject.attestations:
                    if att.semester == semester:
                        att_number[att.number].data = att.themes
                return render_template('refactor.html',
                                       subject=subject,
                                       user=g.user,
                                       semester=semester,
                                       ref_form=ref_form,
                                       subj_form=subj_form)
        else:
            flash('No permission to change themes')
            return redirect(
                url_for('subjects.html',
                        subject=subject,
                        user=g.user,
                        semester=semester))
    else:
        flash('No subjects with such parameters')
        return redirect(url_for('find'))
示例#11
0
def add_subject():
    subject_form = SubjectForm()
    nav_class = {
        'home': '',
        'about': '',
        'contact': '',
        'admin': 'current-section-color'
    }
    if subject_form.validate_on_submit():
        name = subject_form.name.data
        subject = Subject()
        subject.name = name
        db_session.add(subject)
        db_session.commit()
        return redirect(url_for('home'))
    return render_template("add_subject.html",
                           subject_form=subject_form,
                           nav_class=nav_class)
示例#12
0
def find():
    user = g.user
    subjectform = SubjectForm()
    if subjectform.validate_on_submit():
        semtmp = re.search('^\d+', subjectform.semesters.data).group(0)
        subjects = list(
            filter(
                lambda x: semtmp in x.semesters,
                Subject.query.filter_by(name=subjectform.name.data.lower())))
        if len(subjects) != 0:
            if subjects[0] is not None:
                return redirect(
                    url_for('subjectpage',
                            name=subjects[0].name,
                            semester=semtmp))
        flash("No subject with this parameters")
        subjectform.name.data = ""
        subjectform.semesters.data = ""
    return render_template("find.html", form=subjectform, user=user)
示例#13
0
文件: app.py 项目: aidenchia/esc-proj
def subjects():
    available_rooms = Rooms.query.all()
    room_list = [(-1,'No Preference')]
    for room in available_rooms:
        room_list.append((room.room_id, room.location))
    form = SubjectForm()
    
    if form.add_more_component.data:
        print("came here instead")
        form.component.append_entry(u'default value')
    for entry in form.component.entries:
        entry.classroom.choices = room_list

    if form.validate_on_submit():
        print("came here")
        if form.term_no.data == '-1' or form.pillar.data == '-1' or form.subject_type.data == '-1':
            print("Please choose an option for term, pillar and subject type")
        else:
            subjectname = form.subject_name.data
            subjectid = form.subject_id.data
            termno = dict(form.terms).get(form.term_no.data)
            subjecttype = dict(form.subject_types).get(form.subject_type.data)
            pillar = form.pillar.data
            cohort_num = form.cohort_num.data
            total_enrollment = form.total_enrollment.data
            session_nums = len(form.component.entries)
            components = []
            for each_entry in form.component.entries:
                temp  = {"duration":each_entry.data['duration'],"sessionType": int(each_entry.data['session']),"classroom":each_entry.data['classroom'], 'cohorts':[]}
                if int(each_entry.data['session']) == -1:
                    print("Please choose an option for session type")
                    return render_template('subjects.html',form=form)
                if int(each_entry.data['session']) == 1:
                    for i in range(cohort_num):
                        temp['cohorts'].append(i)
                components.append(temp)
                print(temp)
            Subjects.insertSubject(subjectid,termno,subjecttype,subjectname, str(components), pillar, cohort_num, total_enrollment, session_nums)
            return redirect(url_for('subjectsTable'))
            
        
    return render_template('subjects.html',form=form)