Example #1
0
File: views.py Project: nocko/cfmi
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)
Example #2
0
File: views.py Project: nocko/cfmi
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)