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 )
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'))