def user_info(userid=None): if not userid: return render_template('error.html',message="Usuario no definido",recent=recent.get()) user=User.query.filter(User.userid==userid).one() if not user: return render_template('error.html',message="Usuario existente",recent=recent.get()) return render_template('user_info.html',user=user,recent=recent.get())
def user_delete(userid=None): if not userid: return render_template('error.html',message="Usuario no seleccionado",recent=recent.get()) user=db_session.query(User).get(userid) if not user: return render_template('error.html',message="Usuario no encontrado",recent=recent.get()) user.accepted=False db_session.add(user) db_session.commit() return redirect(url_for('.dashboard'))
def experiment_info(expid=None): if not expid: expid = request.cookies.get('project') if not expid: return render_template('error.html',message="Proyecto no seleccionado",recent=recent.get()) expid=int(expid) exp=db_session.query(Experiment).get(expid) if not exp: return render_template('error.html',message="Experimento no definido",recent=recent.get()) return render_template('experiment_info.html',exp=exp,recent=recent.get())
def experiment_live(expid=None): if not expid: expid = request.cookies.get('project') if not expid: return render_template('error.html',message="Proyecto no seleccionado",recent=recent.get()) expid=int(expid) exp=db_session.query(Experiment).get(expid) filename=exp.name+".csv" keepcharacters = (' ','.','_') filename= "".join(c for c in filename if c.isalnum() or c in keepcharacters).rstrip() if not exp: return render_template('error.html',message="Experimento no definido",recent=recent.get()) return render_template('experiment_live.html',exp=exp,recent=recent.get(),fs=filename)
def dashboard(): expid = request.cookies.get('project') if expid: exp=db_session.query(Experiment).get(expid) else: exp=None return render_template('adminindex.html',exp=exp,recent=recent.get())
def experiment_off(expid): exp=db_session.query(Experiment).get(expid) if not exp: return render_template('error.html',message="Experimento no definido",recent=recent.get()) exp.status=False db_session.add(exp) db_session.commit() return redirect(url_for('.experiment_info',expid=expid))
def user_invite_userid(userid=None): """Invite a user via email""" proj = request.cookies.get('project') if not proj: return render_template('error.html',message="Proyecto no seleccionado",recent=recent.get()) try: user=User.query.get(userid) except: return render_template('error.html',message="Usuario in existente",recent=recent.get()) proj = int(proj) if not user.accepted: return render_template('error.html',message="Usuario no activo",recent=recent.get()) exps=[0 for exp in user.experiments if exp.id==proj] if len(exps)==0: add_users(proj,[user.id]) return redirect(url_for('.user_info',userid=user.userid)) return render_template('error.html',message="Usuario ya activo en ese experimento",recent=recent.get())
def user_reinvite(userid=None,expid=None): """Invite a user via email""" try: user=User.query.filter(User.userid==userid).one() except: return render_template('error.html',message="Usuario in existente",recent=recent.get()) if not user.accepted: return render_template('error.html',message="Usuario no activo",recent=recent.get()) exps=[0 for exp in user.experiments if exp.id==expid] if len(exps)>0: ans=db_session.query(ExperimentUser).get((user.id,expid)) if ans.accepted: #msg= Message(proj.invitation.format( # URL="/confirm/"+user.userid, # URL_DEL="/delete/user/"+user.userid)) return redirect(url_for('.user_info',userid=user.userid)) else: return render_template('error.html',message=u"Usuario declino",recent=recent.get()) else: return render_template('error.html',message=u"Usuario no está activo en experimento",recent=recent.get())
def experiment_new(): form=ExperimentF(request.form) if form.cancel.data: return redirect(url_for('dashboard')) if form.validate_on_submit(): exp=Experiment() form.populate_obj(exp) db_session.add(exp) db_session.commit() return redirect(url_for('.experiment_info',expid=exp.id)) else: return render_template('experiment_edit.html',form=form,type='create',recent=recent.get())
def experiment_delete(expid=None): if not expid: expid = request.cookies.get('project') if not expid: return render_template('error.html',message="Proyecto no seleccionado",recent=recent.get()) return render_template('error.html',message="Proyecto no seleccionado",recent=recent.get()) exp=db_session.query(Experiment).get(expid) if not exp: return render_template('error.html',message="Experimento no definido",recent=recent.get()) db_session.delete(exp) db_session.commit() return redirect(url_for('.dashboard'))
def experiment_edit(expid): exp=db_session.query(Experiment).get(expid) if not exp: return render_template('error.html',message="Experimento no definido",recent=recent.get()) form=ExperimentF() if form.cancel.data: return redirect(url_for('.dashboard')) if form.validate_on_submit(): form.populate_obj(exp) exp.date_modification=datetime.now() db_session.add(exp) db_session.commit() return redirect(url_for('.experiment_info',expid=expid)) form.name.data=exp.name form.definition.data=exp.definition form.invitation.data=exp.invitation form.reinvitation.data=exp.reinvitation form.instructions.data=exp.instructions form.description.data=exp.description return render_template('experiment_edit.html', form=form,type='edit',expid=expid,recent=recent.get())
def user_new(): """Create a user email""" form=UserInviteF(request.form) if form.cancel.data: return redirect(url_for(dashboard)) if form.validate_on_submit(): user_mail=User.query.filter(User.email==form.email.data).all() if not user_mail: u=uuid.uuid4() userid=str(u) user=User(userid) user.email=form.email.data user.accepted=True db_session.add(user) db_session.commit() return render_template('user_created.html', userid=userid, servername=current_app.config['BASE_NAME'], recent=recent.get()) else: return render_template('error.html',message="Usuario ["+form.email.data+"] ya definido con id:"+user_mail[0].userid,recent=recent.get()) else: return render_template('email_edit.html',form=form,recent=recent.get(),opt="crear")
def experiment_test(expid=None): if not expid: expid = request.cookies.get('project') if not expid: return render_template('error.html',message="Proyecto no seleccionado",recent=recent.get()) expid=int(expid) exp=db_session.query(Experiment).get(expid) if not exp: return render_template('error.html',message="Experimento no definido",recent=recent.get()) resp = make_response(render_template('poll_prev.html', instructions=exp.instructions )) resp.set_cookie('running_exp',str(expid)) resp.set_cookie('running_user',"",expires=0) return resp
def experiment_select(expid): if not expid: expid = request.cookies.get('project') if not expid: return render_template('error.html',message="Proyecto no seleccionado",recent=recent.get()) return render_template('error.html',message="Proyecto no seleccionado",recent=recent.get()) exp=db_session.query(Experiment).get(expid) if not exp: return render_template('error.html',message="Experimento no definido",recent=recent.get()) resp = make_response(redirect(url_for('.dashboard'))) resp.set_cookie('project', str(expid)) resp.set_cookie('project_name', exp.name) recent.pull(expid) return resp
def experiment_clone(expid=None): if not expid: expid = request.cookies.get('project') if not expid: return render_template('error.html',message="Proyecto no seleccionado",recent=recent.get()) expid=int(expid) exp_=db_session.query(Experiment).get(expid) if not exp_: return render_template('error.html',message="Experimento no definido",recent=recent.get()) exp=Experiment() exp.name="CLONE:"+exp_.name exp.definition=exp_.definition exp.description=exp_.description exp.instructions=exp_.instructions exp.invitation=exp_.invitation exp.reinvitation=exp_.reinvitation db_session.add(exp) db_session.commit() return redirect(url_for('.experiment_info',expid=exp.id))
def user_invite(): """Invite a user via email""" project = request.cookies.get('project') if not project: return render_template('error.html',message="Proyecto no seleccionado",recent=recent.get()) form=UserInviteF(request.form) if form.cancel.data: return redirect(url_for('.dashboard')) if form.validate_on_submit(): user_mail=User.query.filter(User.email==form.email.data).all() if not user_mail: u=uuid.uuid4() userid=str(u) user=User(userid) user.accepted=True form.populate_obj(user) db_session.add(user) db_session.commit() return redirect(url_for('.user_info',userid=userid)) else: return render_template('error.html',message="Usuario ["+form.email.data+"] ya definido con id:"+user_mail[0].userid,recent=recent.get()) else: return render_template('email_edit.html',form=form,recent=recent.get())
def users_invite(): """Invite a user via email""" project_name = request.cookies.get('project_name') if not project_name: return render_template('error.html',message="Proyecto no seleccionado",recent=recent.get()) ids= request.form.keys() users=User.query.filter(User.id.in_(ids)).all() ids=dumps(ids) return render_template('confirm_invitation.html',users=users, ids=ids,projname=project_name)
def experiment_list(): return render_template('experiments.html',recent=recent.get())
def experiment_nousers(expid): """Invite a user via email""" exp=db_session.query(Experiment).get(expid) if not exp: return render_template('error.html',message="Experimento no definido",recent=recent.get()) return render_template('nousers.html',projname=exp.name)
def users_add(): """Invite a user via email""" project = request.cookies.get('project') if not project: return render_template('error.html',message="Proyecto no seleccionado",recent=recent.get()) ids=loads(request.args.get('ids')) add_users(project,ids) return redirect(url_for(".experiment_info",expid=project))