def session_edit(session_id): sess = Session.query.get(session_id) read_only = datetime.now() - sess.sched_start >= timedelta(days=1) or sess.sched_start <= datetime.now() if not sess: abort(404) if g.user.is_superuser(): form = AdminSessionForm(obj=sess) else: form = SessionForm(obj=sess) form.project.query = Project.query.join(User).filter( or_(Project.pi==g.user, Project.users.contains(g.user))) if form.validate_on_submit(): form.populate_obj(sess) try: db.session.commit() flash("Sucess: Session Modified") return redirect(request.url) except: flash("Failed to update database") db.session.rollback() return render_template('session_edit.html', form=form, session=sess, too_late=read_only)
def session_list(): if request.method == 'POST': if g.user.is_superuser(): form = AdminSessionForm() else: form = SessionForm() sess = Session() if form.validate_on_submit(): form.populate_obj(sess) if not sess.user: sess.user = g.user try: db.session.add(sess) db.session.commit() if g.user.is_superuser(): flash("Sucess: Session Created") else: flash("Sucess: Session Requested") return redirect(request.environ['HTTP_REFERER'] or request.url) except: flash("Failed to update database") db.session.rollback() return render_template('session_edit.html', form=form, session=sess) return render_template('session_edit.html', form=form, session=sess) sessions = Session.query.order_by(Session.sched_start.desc()) form = AdminSessionForm() if not g.user.is_superuser(): form = SessionForm() sessions = sessions.join(Project).filter(and_( or_(Project.pi==g.user, Project.users.contains(g.user)), Session.cancelled==False)) past = sessions.filter(Session.sched_end<=datetime.now()).order_by(Session.start.desc()).limit(100) future = sessions.filter(Session.sched_end>=datetime.now()) return render_template('session_list.html', sessions=sessions, form=form, past=past, future=future)