def getPanelAdminSitio(): if auth.authenticated(): User.db = get_db() if (User.tiene_permiso(session['id'], 'administrativo_index')): permisos = User.get_permisos( session['id']) #Session user es el email unico del usuario g.user = session[ 'user'] #En la documentación no detallaban el por qué de esta lína, pero sí que era necesaria para las paginas restringidas #Obtiene permisos del usuario User.db = get_db() permisos = User.get_permisos( session['id']) #Session user es el email unico del usuario #Obtiene informacion del sitio (Estado y paginacion) ConfigSitio.db = get_db() infositio = ConfigSitio.all() return render_template( 'auth/panel_components/administracion_sitio.html', permisos=permisos, nombre=session['nombre'], apellido=session['apellido'], infositio=infositio) else: abort(401) else: return redirect(url_for('auth_login'))
def getPanelHorario(): if auth.authenticated(): #Obtiene permisos del usuario User.db = get_db() if (User.tiene_permiso(session['id'], 'horario_index')): permisos = User.get_permisos( session['id']) #Session user es el email unico del usuario #Obtiene informacion del sitio (Estado y paginacion) Horario.db = get_db() horarios = Horario.all() Clase.db = get_db() clases = Clase.all() Nucleo.db = get_db() nucleos = Nucleo.all() Docente.db = get_db() docente_responsable_taller = Docente.allDocenteTaller() return render_template( 'auth/panel_components/clases.html', permisos=permisos, horarios=horarios, clases=clases, nucleos=nucleos, docente_responsable_taller=docente_responsable_taller) else: abort(401) else: return redirect(url_for('auth_login'))
def editando(): Permiso = habilitedAccesComedor() if Permiso == 'true': Comedor.db = get_db() User.db = get_db() Comedor_usuario.db = get_db() data = request.form exist = User.find_user(data['user']) com = Comedor.find_comedor_by_id(int(data['idComedor'])) ok = False if not exist: ok = True elif str(exist['id']) == str(data['idRef']): ok = True if ok: file = request.files['file'] if not upload_file('comedor', str(data['idComedor']), file): Comedor.edite(data, com['foto']) else: Comedor.edite(data, file.filename) User.editeRef(data) flash(["La informacion se actualizo correctamente", 'green']) return redirect( url_for('comedor_profile', idComedor=data['idComedor'])) flash(["Ya existe un usuario con ese nombre, elija otro!", 'red']) return redirect(url_for('comedor_profile', idComedor=data['idComedor'])) return render_template(Permiso)
def modificar(): if not authenticated(session): abort(401) permisos = User.misPermisos(session['id']) pag = request.args.get('pagina') data = request.form Configuracion.db = get_db() config = Configuracion.all() Rol.db = get_db() roles = Rol.all() pag = request.args.get('pagina') Nivel.db = get_db() niveles = Nivel.all() User.db = get_db() User.modificar( request.form, pag, config['paginacion'], ) #agarro los datos del formulario users = User.all(pag, config['paginacion']) rango = User.rangoAll(config['paginacion']) return redirect(url_for('user_index', pagina=0))
def delete(): if not authenticated(session): abort(401) permisos = User.misPermisos(session['id']) pag = request.args.get('pagina') User.db = get_db() id_user = request.args.get('id') Configuracion.db = get_db() config = Configuracion.all() user = User.all(pag, config['paginacion']) rango = User.rangoAll(config['paginacion']) User.delete(id_user, pag, config['paginacion']) return render_template('user/index.html', users=user, pages=config['paginacion'], rango=rango, vista='user_find', permisos=permisos)
def get(id_data): #Auth check auth.authenticated_or_401() #Chequea permiso User.db = get_db() if (not User.has_permission(session['id'],'usuario_show')): abort(401) else: #Retorno de data User.db = get_db() user = User.get(id_data) roles = user_roles(user['user_id']) return_user = { 'active': user['active'], 'email': user['email'], 'google_user': user['google_user'], 'lastname': user['lastname'], 'name': user['name'], 'user_id': user['user_id'], 'username': user['username'], 'is_admin': roles['is_admin'], 'is_teacher': roles['is_teacher'], 'is_preceptor': roles['is_preceptor'] } return jsonify(return_user)
def createIsValid(formCU, oldEmail=None, oldUsuario=None, usuarioSesion=False): ok = True msj = "" if not formCU.validate(): ok = False if (not re.match( r"^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$", request.form['email'])): ok = False formCU.email.errors.append("Ingrese un email válido") else: #valido si existe el email if oldEmail == None or oldEmail != request.form['email']: if User.find_by_email(request.form['email']): ok = False formCU.email.errors.append("El email ya existe") if (not re.match(r"^[a-zA-Z0-9]*$", request.form['usuario'])): ok = False formCU.usuario.errors.append( "Solo puede contener caracteres alfanuméricos") else: #valido si existe el nombre de usuario if oldUsuario == None or oldUsuario != request.form['usuario']: if User.find_by_username(request.form['usuario']): ok = False formCU.usuario.errors.append("El usuario ya existe") if not usuarioSesion and not request.form.getlist("roles"): ok = False msj = "Seleccione al menos un rol" if not ok: raise Exception(msj) return ok
def create(): Permiso = habilitedAcces() if Permiso == 'true': Comedor.db = get_db() User.db = get_db() Comedor_usuario.db = get_db() data = request.form exist = User.find_user(data['user']) if not exist: file = request.files['file'] Comedor.create(data, file.filename) User.createRef(data) Comedor_usuario.create(Comedor.last_comedor()['id'], User.last_user()['id']) filename = Comedor.last_comedor() upload_file('comedor', str(filename['id']), file) flash([ "El comedor fue creado, pero debe ser confirmado por el Admin", 'green' ]) # enviar('Nuevo comedor','Un nuevo comedor se ha registrado y requiere de validacion del administrador.') return redirect( url_for('altaComedor', comedor=Comedor.last_comedor()['id'], user=User.last_user()['id'])) flash(["Ya existe un usuario con ese nombre, elija otro!", 'red']) return redirect(url_for('altaComedor')) return render_template(Permiso)
def delete(): Permiso = habilitedAccesAdmin() if Permiso == 'true': Comedor.db = get_db() Comedor_usuario.db = get_db() Evento.db = get_db() Necesidad.db = get_db() User.db = get_db() usuario = Comedor_usuario.find_user_by_comedorid( request.args.get('idComedor')) evento = Evento.find_evento_by_user(usuario['referente_id'], datetime.now()) necesidad = Necesidad.find_tipo_necesidad_by_comedorid( request.args.get('idComedor')) if len(evento) == 0 and len(necesidad) == 0: Comedor_usuario.delete(request.args.get('idComedor'), usuario['referente_id']) Comedor.delete(request.args.get('idComedor')) User.delete(usuario['referente_id']) flash(["El comedor se elimino exitosamente", 'green']) return redirect(url_for('comedor_list')) else: flash([ "El comedor no puede eliminarse, tiene eventos o necesidades pendientes", 'red' ]) return redirect(url_for('comedor_list')) return render_template(Permiso)
def google_callback(client): User.db = get_db() code = request.args.get("code") google_provider_cfg = requests.get(Config.GOOGLE_DISCOVERY_URL).json() token_endpoint = google_provider_cfg["token_endpoint"] token_url, headers, body = client.prepare_token_request( token_endpoint, authorization_response=request.url, redirect_url=request.base_url, code=code) token_response = requests.post( token_url, headers=headers, data=body, auth=(Config.GOOGLE_CLIENT_ID, Config.GOOGLE_CLIENT_SECRET), ) # Parse the tokens! client.parse_request_body_response(json.dumps(token_response.json())) userinfo_endpoint = google_provider_cfg["userinfo_endpoint"] uri, headers, body = client.add_token(userinfo_endpoint) userinfo_response = requests.get(uri, headers=headers, data=body) # raise Exception(userinfo_response.json()) response = userinfo_response.json() user = User.find_by_email(response["email"]) is_new = False status = True if not user: # google => oeberisso # ------------------------ # given_name => first_name # family_name => last_name # email => email username, dom = response["email"].split('@') User.create_from_google(response["email"], username, response["given_name"], response["family_name"]) msg = "Se creo el usuario" is_new = True if not is_new and status and user["active"] == 0: msg = "El usuario no se encuentra activo." status = False if status: session["user"] = username if is_new else user["username"] if not is_new: msg = "La sesión se inició correctamente." return jsonify({ "status": status, "msg": msg, "username": session["user"], "email": response["email"], })
def delete(): if not authenticated(session): return render_template('auth/login.html') ok = True if not pageState(): ok = False for permiso in session['permisos']: if "VER_EN_MANTENIMIENTO" == permiso['nombre']: ok = True if not ok: return render_template('error/mantenimiento.html') try: User.db = get_db() User.db.autocommit = False auxUser = User.get_user_by_email(request.form['hiddenEmailD']) User.delete(auxUser['id']) User.remove_roles_de_usuario(auxUser['id']) User.db.commit() flash("Se eliminó con éxito", "success") return redirect(url_for('listado_usuarios')) except Exception as e: flash(str(e), "danger") User.db.rollback() return redirect(url_for('listado_usuarios'))
def delete(): if not authenticated(session): abort(401) permisos = User.misPermisos(session['id']) pag= request.args.get('pagina') User.db = get_db() id_user= request.args.get('id') Estudiante.db = get_db() id_student= request.args.get('id') Configuracion.db = get_db() config = Configuracion.all() pag= request.args.get('pagina') user = User.all(pag,config['paginacion']) rango= User.rangoAll(config['paginacion']) Estudiante.delete(id_student,pag,config['paginacion']) estudiantes=Estudiante.all(pag,config['paginacion']) return render_template('student/index.html', estudiantes=estudiantes, pages=config['paginacion'],rango=rango,vista='student_delete',permisos=permisos)
def authenticate_by_google(user_info): User.db = get_db() user = User.find_by_email(user_info['email']) if not user: User.create_by_google(user_info) user = User.find_by_username(user_info['email']) login(user) return True
def create(): errors = form_validator.validate(register.rules, request.json, True) if not errors: User.db = get_db() User.create(request.json) return jsonify({}), 201 else: return jsonify({"errors": errors}), 422
def all(): #Auth check auth.authenticated_or_401() #Chequea permiso User.db = get_db() if (not User.has_permission(session['id'],'usuario_index')): abort(401) else: User.db = get_db() return jsonify(User.all())
def delete(id_data): if not authenticated(session): abort(401) #Chequea permiso User.db = get_db() if (User.tiene_permiso(session['id'], 'usuario_destroy')): User.delete_roles(id_data) User.delete(id_data) flash("Se eliminó el usuario correctamente", 'success') return redirect(url_for('panel_usuarios')) else: abort(401)
def permissions(): #Auth check auth.authenticated_or_401() #Listado de rutas user_permissions = [] User.db = get_db() if (not User.has_roles(session['id'])): return jsonify(user_permissions) else: user_permissions = User.permissions(session['id']) #Returning data return jsonify(user_permissions)
def create(): form = UserCreateForm(request.form) if form.is_valid(): User.create(form.values) flash(form.success_message(), 'success') return redirect(url_for('user_index')) else: for error in form.error_messages(): flash(error, 'danger') return new(user=form.values)
def update_user_status(): #Auth check auth.authenticated_or_401() if request.method == "POST": User.db = get_db() #Chequea permiso if (User.has_permission(session['id'],'usuario_update')): #Valida campos if (request.form['active'] == '0' or request.form['active'] == '1'): User.update_user_status(request.form) return {'status': 'success', 'message': 'Se actualizó el estado del usuario'} else: abort(401)
def docentes_horario(): if not authenticated(session): abort(401) User.db = get_db() permisos = User.misPermisos(session['id']) User.db = get_db() Horario.db = get_db() docentes = User.docentes() horarios = Horario.all() return render_template('horario/asignarDocentesHorario.html', docentes=docentes, horarios=horarios, permisos=permisos)
def actualizarEstado(): Permiso = habilitedAccesAdmin() if Permiso == 'true': User.db=get_db() Sitio.db=get_db() User.updateRol(request.args.get('rol'),request.args.get('idUser')) user = User.find_user_by_id(request.args.get('idUser')) if request.args.get('rol') == '1': flash(['El usuario fue aceptado en el sistema', 'green']) # enviar('Usuario Aceptado','El usuario ha sido aceptado y ahora posee acceso al sistema.',user['mail_u']) else: flash(['El usuario fue rechazado', 'red']) # enviar('Usuario Rechazado','El usuario ha sido rechazado.',user['mail_u']) return redirect(url_for('usuario_list_p')) return render_template(Permiso)
def listadoUsuarios(params={"init": 0}, function=1, activo=None, nombre=''): if not authenticated(session): return render_template('auth/login.html') ok = True if not pageState(): ok = False for permiso in session['permisos']: if "VER_EN_MANTENIMIENTO" == permiso['nombre']: ok = True if not ok: return render_template('error/mantenimiento.html') if not usuarioTienePermiso("LISTADO_USUARIOS"): return redirect(url_for('pages_home')) Pages.db = get_db() paginado = Pages.get_paginado() params['pag'] = int(paginado['cuerpo']) if request.method == 'POST' and 'init' in request.form.keys() and int( request.form['init']) >= 0: params['init'] = int(request.form['init']) filtro = '' if ('estadoFiltro' in request.form.keys()): if (request.form['estadoFiltro'] == '1' or request.form['estadoFiltro'] == '0'): activo = request.form['estadoFiltro'] function = 0 filtro = request.form['estadoFiltro'] if ('nombreFiltro' in request.form.keys()): if (request.form['nombreFiltro'] and request.form['nombreFiltro'].strip()): nombre = request.form['nombreFiltro'] function = 0 filtro = request.form['nombreFiltro'] User.db = get_db() user = User.get_user_by_email(session['email']) users = User.get_listado(user['id'], activo, nombre) return render_template('user/listado.html', users=users, params=params, nombreFiltro=nombre, activoFiltro=activo, function=function, filtro=filtro)
def decorated_function(*args, **kwargs): if not authenticated(session): return redirect(url_for('auth_login')) elif not User.tiene_permiso(authenticated(session), permiso): abort(401) return f(*args, **kwargs)
def userUpdateTemp(): if not authenticated(session): return render_template('auth/login.html') ok = True if not pageState(): ok = False for permiso in session['permisos']: if "VER_EN_MANTENIMIENTO" == permiso['nombre']: ok = True if not ok: return render_template('error/mantenimiento.html') if not usuarioTienePermiso("MODIFICAR_USUARIO"): return redirect(url_for('pages_home')) User.db = get_db() user = User.get_user_by_email(request.form['email']) Roles.db = get_db() roles = Roles.all() usuarioSesion = user['id'] == session['id'] rolesUsuario = Roles.get_roles(user['id']) return render_template('user/modificarUsr.html', user=user, roles=roles, usuarioSesion=usuarioSesion, rolesUsuario=rolesUsuario)
def update(): User.db = get_db() permisos = User.misPermisos(session['id']) id_horario = request.args.get('id') Ciclo_lectivo_taller.db = get_db() ciclos_talleres = Ciclo_lectivo_taller.all() Nucleo.db = get_db() nucleos = Nucleo.all() Dia.db = get_db() dias = Dia.all() Horario.db = get_db() horario = Horario.searchHorario(id_horario) return render_template('horario/update.html', permisos=permisos, nucleos=nucleos, dias=dias, ciclos_talleres=ciclos_talleres, horario=horario)
def storeTallerCiclo(): if not authenticated(session): abort(401) #Chequea permiso User.db = get_db() if (User.tiene_permiso(session['id'], 'administrativo_new')): if request.method == "POST" and forms.ValidateCicloTaller( request.form).validate(): Ciclo.db = get_db() Taller.db = get_db() if Ciclo.cicloNoTieneTaller(request.form): Taller.storeConTaller(request.form) flash("Se agrego el taller al ciclo lectivo correctamente", 'success') else: flash( "El taller ya esta asignado al ciclo lectivo seleccionado", 'error') else: flash( 'Verifica los campos obligatorios. No ingreses valores no permitidos', 'error') return redirect(url_for('panel_talleres')) else: abort(401)
def authenticated_permission(permission): authenticated_object = {'authenticated': False} User.db = get_db() if (auth.authenticated()) and (User.has_permission(session['id'], permission)): authenticated_object = {'authenticated': True} return jsonify(authenticated_object)
def get(self): start = int(request.args['start']) page = 1 if start != 0: page = start / Configuracion.get_config().registros_por_pagina + 1 order = { 'column': request.args['columns[' + request.args['order[0][column]'] + '][data]'], 'dir': request.args['order[0][dir]'] } users = User.all(page, order) usuarios = [] for user in users.items: u = { "id": user.id, "first_name": user.first_name, "last_name": user.last_name, "email": user.email } usuarios.append(u) return { "draw": request.args['draw'], "recordsTotal": users.total, "recordsFiltered": users.total, "data": usuarios }
def update(): #Auth check auth.authenticated_or_401() if request.method == 'POST': #Chequea permiso User.db = get_db() if (not User.has_permission(session['id'], 'configuration_all')): abort(401) else: #Chequea el metodo y valida el formulario post_data = request.get_json() form = forms.ValidateConfiguration.from_json( post_data, skip_unknown_keys=False) if not form.validate(): response_object = { 'status': 'warning', 'message': 'Informacion inválida, solo puede ingresarse un titulo(máximo 255 char), email(máximo 255 char) y descripción(máximo 1000 char)' } else: Configuration.db = get_db() Configuration.update(post_data) response_object = { 'status': 'success', 'message': 'Se actualizó la información del sitio correctamente' } return jsonify(response_object)
def store(): if not authenticated(session): abort(401) #Chequea permiso User.db = get_db() if (User.tiene_permiso(session['id'], 'administrativo_new')): if request.method == "POST" and forms.ValidateCiclo( request.form).validate(): if int(request.form['año']) < int(1990) or int( request.form['año']) > int(2025): flash( 'Verifica los campos obligatorios. No ingreses valores no permitidos', 'error') else: Ciclo.db = get_db() if not Ciclo.semestreExiste(request.form): Ciclo.store(request.form) flash("Ciclo lectivo agregado correctamente", 'success') else: flash("El semestre ya tiene un ciclo lectivo asignado", 'error') else: flash( 'Verifica los campos obligatorios. No ingreses valores no permitidos', 'error') return redirect(url_for('panel_ciclos')) else: abort(401)