コード例 #1
0
ファイル: subject.py プロジェクト: Hualin/prams
def view_subject(subject_id):
	if not g.user:
		abort(401)
	# basic information
	subject_info = {}
	subject_info['subject_id'] = subject_id
	from model import f1b1, Subject
	qObj = f1b1.query.filter_by(subject_id = subject_id).first()
	sObj = Subject.query.filter_by(subject_id = subject_id).first()
	subject_info['department'] = qObj.field01
	subject_info['title'] = qObj.field02
	subject_info['holder'] = qObj.field03
	subject_info['new'] = qObj.field04
	subject_info['subject_status'] = sObj.status

	extra_action = None
	done_before = False
	from rule import StateMachine
	sm = StateMachine(subject_id)
	if sObj.status in ('wait_to_allocate', 'wait_to_review', 'final_review'):
		extra_action = sObj.status
		from model import PendingJob
		done_before = (PendingJob.query.filter_by(subject_id = subject_id, stage = extra_action, to_user_occupation = g.user.occupation).first() == None)
	# form A table
	# order by: section, block responisbility action, status
	from rule import FormStructure
	import model
	fm = FormStructure()
	tb_fA = []
	for block_name in fm.get_blocks('Form A'):
		bClass = getattr(model, block_name)
		tb_fA.append([
			(block_name == sObj.status), # activated
			fm.get_sectionName(block_name), # section name
			block_name, # block name
			fm.get_responsibility(block_name), # responsibility
			sm.get_view_OR_edit(block_name, g.user.occupation), # action
			bClass.query.filter_by(subject_id = subject_id).first().status # block status
			])

	# form B table
	tb_fB = []
	# form C table
	tb_fC = []
	return render_template('subject.html', 
		subject_info = subject_info, 
		table_formA = tb_fA, 
		table_formB = tb_fB,
		table_formC = tb_fC,
		extra_action = extra_action,
		sm = sm,
		done_before = done_before
		)
コード例 #2
0
ファイル: subject.py プロジェクト: Hualin/prams
def delete_subject(subject_id):
	if not g.user:
		abort(401)
	from rule import StateMachine
	sm = StateMachine(subject_id)
	if not sm.check('*', g.user.occupation, 'delete'):
		abort(403)
	from rule import FormStructure
	fm = FormStructure()
	from prams import db
	import model
	for bl in fm.get_blocks():
		bClass = getattr(model, bl)
		qObj = bClass.query.filter_by(subject_id = subject_id).first()
		db.session.delete(qObj)
		db.session.commit()
	sObj = model.Subject.query.filter_by(subject_id = subject_id).first()
	db.session.delete(sObj)
	db.session.commit()
	sm.update()
	flash('The Subject ' + subject_id + ' has been deleted.')
	return redirect(url_for('all_subjects'))