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})
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)
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)
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))
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 })
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})
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)
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/')
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")
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'))
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)
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)
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)