def logout_and_cleanup(uid=None, next_url=None, logout=False): online_students = StudentRecord.online_students() if uid is None: user = auth.get_logged_in_user() auth.logout_user(user) else: user = auth.User.get(auth.User.id == uid) auth.logout_user(user, self_logout=False) user_record = StudentRecord(user.id) user_record.open_board = False user_record.online = False user_record.save() listening_clients = sse.listening_clients(user.id) # Turn off menu/tabs of all listeners and tell them to go home mesg = {} for cid in online_students: mesg[cid] = dict(cid=user.id) if cid in listening_clients or cid==user.id: mesg[cid].update(home_cid = cid) sse.listen_to(cid, cid) sse.notify(mesg, event="log-out") sse.close(user_record.id, logout) return redirect( next_url or url_for('index') )
def grade_history(uid=None): logged_in_user = auth.get_logged_in_user() if uid is not None: if logged_in_user.role != "teacher" and logged_in_user.id != uid: return "not allowed" else: uid = logged_in_user.id student = StudentRecord(uid) try: scores = Score.select().where(Score.user == uid) except Score.DoesNotExist: scores = [] try: brownie = Brownie.get(Brownie.user == uid) except Brownie.DoesNotExist: brownie = None published_pids = red.smembers("published-problems") published_pids = sorted(int(p) for p in published_pids) return render_template( "problem/grade_history.html", scores=scores, brownie=brownie, student=student, published_pids=published_pids )
def grade_history(uid=None): logged_in_user = auth.get_logged_in_user() if uid is not None: if logged_in_user.role != 'teacher' and logged_in_user.id != uid: return 'not allowed' else: uid = logged_in_user.id student = StudentRecord(uid) try: scores = Score.select().where(Score.user == uid) except Score.DoesNotExist: scores = [] try: brownie = Brownie.get(Brownie.user == uid) except Brownie.DoesNotExist: brownie = None published_pids = red.smembers('published-problems') published_pids = sorted(int(p) for p in published_pids) return render_template('problem/grade_history.html', scores=scores, brownie=brownie, student=student, published_pids=published_pids)
def edit(uid=None): cur_user = auth.get_logged_in_user() uid = cur_user.id if uid is None else uid if cur_user.role!='teacher' and cur_user.id!=uid: return redirect(url_for('auth.permission_denied')) user = cur_user if cur_user.id==uid else auth.User.get(auth.User.id==uid) if request.method == 'POST': if 'delete' in request.form: user.delete_instance() flash('User %s is deleted' % user.username) return redirect(url_for('user.list')) else: if 'username' in request.form: user.username = request.form['username'] user.active = 'active' in request.form user.email = request.form['email'] user.role = request.form['role'] if request.form['new_password']: user.set_password(request.form['new_password']) user.save() flash('Information updated') if cur_user.role == 'teacher': return redirect(url_for('user.list')) return render_template('user/edit.html', cur_user=cur_user, user=user)
def edit(uid=None): cur_user = auth.get_logged_in_user() uid = cur_user.id if uid is None else uid if cur_user.role != 'teacher' and cur_user.id != uid: return redirect(url_for('auth.permission_denied')) user = cur_user if cur_user.id == uid else auth.User.get( auth.User.id == uid) if request.method == 'POST': if 'delete' in request.form: user.delete_instance() flash('User %s is deleted' % user.username) return redirect(url_for('user.list')) else: if 'username' in request.form: user.username = request.form['username'] user.active = 'active' in request.form user.email = request.form['email'] user.role = request.form['role'] if request.form['new_password']: user.set_password(request.form['new_password']) user.save() flash('Information updated') if cur_user.role == 'teacher': return redirect(url_for('user.list')) return render_template('user/edit.html', cur_user=cur_user, user=user)
def logout_and_cleanup(uid=None, next_url=None, logout=False): online_students = StudentRecord.online_students() if uid is None: user = auth.get_logged_in_user() auth.logout_user(user) else: user = auth.User.get(auth.User.id == uid) auth.logout_user(user, self_logout=False) user_record = StudentRecord(user.id) user_record.open_board = False user_record.online = False user_record.save() listening_clients = sse.listening_clients(user.id) # Turn off menu/tabs of all listeners and tell them to go home mesg = {} for cid in online_students: mesg[cid] = dict(cid=user.id) if cid in listening_clients or cid == user.id: mesg[cid].update(home_cid=cid) sse.listen_to(cid, cid) sse.notify(mesg, event="log-out") sse.close(user_record.id, logout) return redirect(next_url or url_for('index'))
def index(): logged_in_user = auth.get_logged_in_user() user_record = StudentRecord(logged_in_user.id) user_record.online = True user_record.save() # if user is running on another client, close the other. sse.close(user_record.id) current_channel = sse.current_channel(user_record.id) or user_record.id all_users = auth.User.select() online_students = StudentRecord.online_students() listeners=[ online_students[int(i)].username \ for i in sse.listening_clients(current_channel) if int(i) in online_students ] # notify those who can view boards that the client is online messages = {} for c, r in online_students.items(): if user_record.id != c and (r.is_teacher or user_record.open_board): messages[c] = dict(cid=user_record.id, board_status=user_record.open_board) sse.notify(messages, event='online') problem_ids = sorted(int(i) for i in red.smembers('published-problems')) return render_template('sandbox.html', sum=sum, enumerate=enumerate, current_channel = current_channel, problem_ids=problem_ids, user_record = user_record, online_students = online_students, all_users = all_users, listeners = listeners)
def consulta(): admin = auth.get_logged_in_user() if (request.form["pasado"] != ""): from datetime import date anio, mes, dia = request.form["pasado"].split("-") pasado = date(int(anio), int(mes), int(dia)) if (request.form["futuro"] == ""): futuro = datetime.datetime.now().date() else: anio, mes, dia = request.form["futuro"].split("-") futuro = date(int(anio), int(mes), int(dia)) if (pasado <= futuro): arreglo_consumo = {} consumo_semanal = (Consumo.select( Usuario.nombre, fn.sum(Consumo.precio*Consumo.cantidad).alias('total') ).join(Usuario ).where((Consumo.fecha >= pasado) & (Consumo.fecha <= futuro) & (Consumo.activo == True)).group_by(Usuario.id).order_by(Usuario.nombre.desc())) for consumo_item in consumo_semanal: arreglo_consumo[str(consumo_item.usuario.nombre)] = consumo_item.total args = {} args['consumos'] = arreglo_consumo args['auth'] = admin args['pasado'] = str(pasado) args['futuro'] = str(futuro) return render_template("consultas.html", args=args,) else: abort(406) else: abort(406)
def init_user(): logged_in_user = auth.get_logged_in_user() user_record = StudentRecord(logged_in_user.id) user_record.username = logged_in_user.username if logged_in_user.role == 'teacher': user_record.open_board = True user_record.is_teacher = True user_record.save()
def list(): cur_user = auth.get_logged_in_user() if request.method == 'POST': user = auth.User(username=request.form['username']) user.email = request.form['username'] + '@memphis.edu' user.set_password(request.form['username']) user.active = True user.role = 'student' user.save() flash('user %d created' % user.id) return redirect(url_for('user.list')) return render_template('user/list.html', users=auth.User.select())
def home(exito=None, error=None): productos = Producto.select() usuarios = Usuario.select() admin = auth.get_logged_in_user() semana_pasada = datetime.datetime.now() - datetime.timedelta(7) semana_pasada = semana_pasada.date() args = {} args['productos'] = productos args['usuarios'] = usuarios args['auth'] = admin args['semana_pasada'] = semana_pasada return render_template("index.html", args=args,)
def view(pid, uid=None): try: prob = Problem.get(Problem.id == pid) except Problem.DoesNotExist: flash("Problem %s does not exist" % pid) return redirect(url_for("index.html")) if uid is None: return render_template("problem/view.modal", prob=prob) teacher = auth.get_logged_in_user() if teacher.role != "teacher": return render_template("problem/view.modal", prob=prob) student = StudentRecord(uid) score = student.scores.get(pid, None) return render_template("problem/view_grade.modal", prob=prob, teacher=teacher, student=student, score=score)
def view(pid, uid=None): try: prob = Problem.get(Problem.id == pid) except Problem.DoesNotExist: flash('Problem %s does not exist' % pid) return redirect(url_for('index.html')) if uid is None: return render_template('problem/view.modal', prob=prob) teacher = auth.get_logged_in_user() if teacher.role != 'teacher': return render_template('problem/view.modal', prob=prob) student = StudentRecord(uid) score = student.scores.get(pid, None) return render_template('problem/view_grade.modal', prob=prob, teacher=teacher, student=student, score=score)
def index(): logged_in_user = auth.get_logged_in_user() user_record = StudentRecord(logged_in_user.id) user_record.online = True user_record.save() # if user is running on another client, close the other. sse.close(user_record.id) current_channel = sse.current_channel(user_record.id) or user_record.id all_users = auth.User.select() online_students = StudentRecord.online_students() listeners=[ online_students[int(i)].username \ for i in sse.listening_clients(current_channel) if int(i) in online_students ] # notify those who can view boards that the client is online messages = {} for c, r in online_students.items(): if user_record.id != c and (r.is_teacher or user_record.open_board): messages[c] = dict(cid=user_record.id, board_status=user_record.open_board) sse.notify(messages, event='online') problem_ids = sorted(int(i) for i in red.smembers('published-problems')) return render_template('sandbox.html', sum=sum, enumerate=enumerate, current_channel=current_channel, problem_ids=problem_ids, user_record=user_record, online_students=online_students, all_users=all_users, listeners=listeners)
def index(): user = auth.get_logged_in_user() if not user: return redirect( url_for('auth.login') ) return redirect( url_for('sandbox.index') )
def logout_user(uid): user = auth.get_logged_in_user() if user.id == uid: return logout_and_cleanup() else: return logout_and_cleanup(uid, url_for('user.online'))
def index(): user = auth.get_logged_in_user() if not user: return redirect(url_for('auth.login')) return redirect(url_for('sandbox.index'))
def admin(): user = auth.get_logged_in_user() num_online = len(StudentRecord.online_students()) if not user: return redirect(url_for('auth.login')) return render_template('admin.html', user=user, num_online=num_online)
def manejo_usuario(): user = auth.get_logged_in_user() usuarios = Usuario.select().order_by(Usuario.id.asc()) return render_template("usuarios.html", usuarios=usuarios)