def add(): """ Funcion para agregar registros a la tabla Rol""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): form = RolFormulario(request.form) if request.method == 'POST' and form.validate(): # init_db(db_session) try: rol = Rol(form.codigo.data, form.descripcion.data) db_session.add(rol) db_session.commit() flash('El rol ha sido registrado con exito', 'info') return redirect('/administrarrol') # /listarol except DatabaseError, e: if e.args[0].find('duplicate key value violates unique') != -1: flash('Clave unica violada por favor ingrese otro CODIGO de Rol' , 'error') else: flash('Error en la Base de Datos' + e.args[0], 'error') return render_template('rol/nuevorol.html', form=form) else: flash_errors(form) return render_template('rol/nuevorol.html', form=form)
def desasignarpermiso(): """ Funcion para desasignar los permisos de un rol """ if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): idrol = request.args.get('idrol') permisos = getPermisosByRol(idrol) if request.method == 'POST': rol = request.form.get('idrol') permisosMarcados = request.form.getlist('permisos') permisosAsignados = getPermisosByRol(rol) #======================================================================= # Inserta los permisos seleccionados #======================================================================= for pa in permisosAsignados : bandera = False for pm in permisosMarcados : if int(pm) == pa.id : bandera = True if not bandera : rolper = db_session.query(RolPermiso).filter_by(id_rol=rol, id_permiso=pa.id).first() db_session.delete(rolper) db_session.commit() flash('Permiso desasignado correctamente', 'info') return redirect('/administrarrol') return render_template('rol/desasignarpermisos.html', permisos = permisos, idrol = idrol) else: flash('Sin permisos para la operacion', 'info') return redirect('/administrarrol')
def buscarpermiso(): """ Funcion para buscar registros en la tabla Permiso""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): valor = request.args['patron'] parametro = request.args['parametro'] idrol =request.form.get('rol') #init_db(db_session) if valor=='' or valor == None: return administrarpermiso() else: if parametro == 'id_recurso': p = db_session.query(Permiso).from_statement("SELECT * FROM permiso where to_char("+parametro+", '99999') ilike '%"+valor+"%'").all() #p = db_session.query(Permiso).from_statement("SELECT * FROM permiso where "+parametro+" = CAST("+valor+" AS Int)").all() else: p = db_session.query(Permiso).from_statement("SELECT * FROM permiso where "+parametro+" ilike '%"+valor+"%'").all() #p = db_session.query(Permiso).filter(Permiso.codigo.like('%'+valor+'%')) if idrol != '' and idrol != None: yourPermiso=getPermisosByRol(idrol) lista = [] for per in yourPermiso: lista.append(per) return render_template('permiso/administrarpermiso.html', permisos = p, isAdministrar = False, idrol = idrol, asignados = lista) return render_template('permiso/administrarpermiso.html', permisos = p, isAdministrar = True) else: flash('Sin permisos para buscar permisos', 'permiso') return render_template('index.html')
def editarpermiso(): """ Funcion para editar registros a la tabla Permiso""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): p = db_session.query(Permiso).filter_by(codigo=request.args.get('codigo')).first() form = PermisoFormulario(request.form,p) permiso = db_session.query(Permiso).filter_by(codigo=form.codigo.data).first() if request.method == 'POST': if form.validate(): form.populate_obj(permiso) db_session.merge(permiso) db_session.commit() flash('El permiso ha sido modificado con exito','info') return redirect('/permiso/administrarpermiso') else: flash_errors(form) else: flash_errors(form) return render_template('permiso/editarpermiso.html', form=form) else: flash('Sin permisos para modificar permisos', 'permiso') return render_template('index.html')
def nuevorecurso(): """ Funcion para agregar registros a la tabla recursos""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): form = RecursoFormulario(request.form) if request.args.get('id_recurso') == None: id_recurso= request.form.get('id') else: id_recurso= request.args.get('id_recurso') if request.args.get('recursoTipo') == None: parametro= request.form.get('param') else: parametro= request.args.get('recursoTipo') if request.method != 'POST' : id_recurso= request.args.get('id_recurso') parametro= request.args.get('recursoTipo') lista=None if parametro == 'fase' : lista = db_session.query(Fase).filter_by(id= id_recurso).first() form.id_fase.data= lista.id form.recurso.data = lista.nombre elif parametro == 'proyecto' : lista = db_session.query(Proyecto).filter_by(id= id_recurso).first() form.id_proyecto.data= lista.id form.recurso.data= lista.nombre if request.method == 'POST' and form.validate(): try: if form.id_proyecto.data == 'None': form.id_proyecto.data = None else : form.id_proyecto.data = int(form.id_proyecto.data) if form.id_fase.data == 'None': form.id_fase.data = None else : form.id_fase.data = int(form.id_fase.data) rec = Recurso(form.nombre.data, form.id_proyecto.data, form.id_fase.data ) db_session.add(rec) db_session.commit() flash('El Recurso ha sido registrado con exito','info') return redirect('/recurso/administrarrecurso') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0],'error') return render_template('recurso/nuevorecurso.html', form=form) else: flash_errors(form) return render_template('recurso/nuevorecurso.html', form=form)
def asignarpermiso(): """ Funcion para asignar Permisos a cada Rol""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): #======================================================================= # desde aqui : Ejecuta esta seccion la primera vez que entra, cuando selecciona solo el usuario #======================================================================= idproyecto = request.args.get('idproyecto') idrol = request.args.get('idrol') rolobtenido = db_session.query(Rol).filter_by(id=idrol).first() if not rolobtenido == None: if str(rolobtenido.codigo) == 'ADMINISTRADOR': flash('El rol no tiene permisos', 'info') return redirect('/administrarrol') if request.method == 'POST': rol = request.form.get('idrol') permisos = request.form.getlist('permisos') #======================================================================= # Inserta los permisos seleccionados #======================================================================= for p in permisos : rolper = RolPermiso(rol, p) exits = db_session.query(RolPermiso).filter_by(id_rol=rol, id_permiso=p).first() if not exits: db_session.merge(rolper) db_session.commit() flash('Permisos asignados correctamente', 'info') return redirect('/administrarrol') if idproyecto == None: #significa que no se selecciono proyecto #obtiene permisos de un rol permisos = getPermisosByRol(idrol) if len(permisos) > 0: #si tiene permisos muestra directamente permisos del proyecto #obtiene idproyecto del permiso que tenga especificado una fase idproyecto = getProyectoByPermiso(permisos) #obtiene permisos no asignados al rol permisos = listadoPermisosNoAsignados(idproyecto, idrol) return render_template('rol/asignarpermisos.html', permisos = permisos, idrol = idrol, idproyecto = idproyecto) else : #si no tiene permisos asignados proyectos = db_session.query(Proyecto).order_by(Proyecto.nombre); return render_template('proyecto/seleccionproyecto.html', proyectos=proyectos, idrol=idrol) else: permisos = getPermisosByProyecto(idproyecto) return render_template('rol/asignarpermisos.html', permisos = permisos, idrol = idrol, idproyecto = idproyecto) else: flash('Sin permisos para asignar permisos al rol', 'permiso') return render_template('index.html')
def eliminarproyecto(): """ Funcion para eliminar registros de la tabla Proyecto""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): try: r = db_session.query(Rol).filter_by(codigo='COMITE CAMBIOS').first() r2 = db_session.query(Rol).filter_by(codigo='LIDER PROYECTO').first() nom = request.args.get('nom') #init_db(db_session) proyecto = db_session.query(Proyecto).filter_by(nombre=nom).first() com = db_session.query(MiembrosComite).filter(MiembrosComite.id_usuario!=proyecto.id_usuario_lider).filter_by(id_proyecto=proyecto.id).first() if proyecto.estado != 'N' : flash('No se puede eliminar un Proyecto que no se encuentre en estado Nuevo','info') return render_template('proyecto/administrarproyecto.html') if com != None : flash('Por favor desasigne los Miembros del Comite de Cambios del Proyecto para poder eliminar','info') return render_template('proyecto/administrarproyecto.html') mie = db_session.query(MiembrosComite).filter_by(id_usuario=proyecto.id_usuario_lider).filter_by(id_proyecto=proyecto.id).first() #init_db(db_session) db_session.delete(mie) db_session.commit() li = db_session.query(UsuarioRol).filter_by(id_rol=r2.id).filter_by(id_usuario=proyecto.id_usuario_lider).filter_by(id_proyecto=proyecto.id).first() #init_db(db_session) db_session.delete(li) db_session.commit() re = db_session.query(Recurso).filter_by(id_proyecto=proyecto.id).filter_by(nombre=proyecto.nombre).first() per = db_session.query(Permiso).filter_by(id_recurso=re.id).filter_by(codigo='CONSULTAR PROYECTO').first() rp = db_session.query(RolPermiso).filter_by(id_rol=r.id).filter_by(id_permiso=per.id).first() db_session.delete(rp) db_session.commit() db_session.delete(per) db_session.commit() db_session.delete(re) db_session.commit() db_session.delete(proyecto) db_session.commit() flash('El proyecto ha sido eliminado con exito', 'info') return redirect('/proyecto/administrarproyecto') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0],'info') return render_template('proyecto/administrarproyecto.html')
def administrarrol(): """ Funcion para listar registros de la tabla Rol""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): roles = db_session.query(Rol).order_by(Rol.codigo) return render_template('rol/administrarrol.html', roles=roles) else: flash('Sin permisos para administrar roles', 'permiso') return render_template('index.html')
def administrarrecurso(): """funcion que lista todos los recursos""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): recursos = db_session.query(Recurso).order_by(Recurso.nombre) return render_template('recurso/administrarrecurso.html', recursos = recursos) else: flash('Sin permisos para administrar recursos', 'permiso') return render_template('index.html')
def administrarusuario(): """ Funcion para listar registros de la tabla Usuario """ if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): usuarios = db_session.query(Usuario).order_by(Usuario.nombre) return render_template('usuario/administrarusuario.html', usuarios = usuarios) else: flash('Sin permisos para administrar usuarios', 'permiso') return render_template('index.html')
def quitarrolusu(): """ Funcion para quitar Roles al Usuario""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserRol('ADMINISTRADOR') if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') if request.args.get('usu') == None: id_usu= request.form.get('id') else: id_usu=request.args.get('usu') usu = db_session.query(Usuario).filter_by(id=id_usu).first() form = UsuarioFormulario(request.form,usu) rolesv= db_session.query(Rol).from_statement("select * from rol where id in (select id_rol from usuario_rol where id_usuario="+str(usu.id)+")").all() aux=[] for rl in rolesv : pro= db_session.query(Proyecto).from_statement("select * from proyecto where id in (select id_proyecto from recurso where id in "+ " ( select id_recurso from permiso where id in (select id_permiso from rol_permiso where id_rol="+str(rl.id)+" limit 1)))").first() aux.append(pro) if request.method == 'POST' : roles=request.form.getlist('selectrol') try: list_aux=[] #=================================================================== # if len(rolesv) == len(roles): # flash('El Usuario no puede quedarse sin Roles','info') # return redirect('/usuario/administrarusuario') #=================================================================== for rl in roles : r = db_session.query(Rol).filter_by(id=rl).first() list_aux.append(r) for rl in list_aux: ur = db_session.query(UsuarioRol).filter_by(id_rol=rl.id,id_usuario=request.form.get('id')).first() db_session.delete(ur) db_session.commit() flash('Se quito el Rol con Exito','info') return redirect('/usuario/administrarusuario') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0],'error') return render_template('usuario/quitarrolusu.html', form=form, roles=rolesv, pro=aux)
def buscarproyecto(): """ Funcion para buscar registros en la tabla Proyecto""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): valor = request.args['patron'] parametro = request.args['parametro'] if valor == "" : administrarproyecto() if parametro == 'cant_miembros' : p = db_session.query(Proyecto).from_statement("SELECT * FROM proyecto where to_char("+parametro+", '99999') ilike '%"+valor+"%'").all() elif parametro == 'id_usuario_lider': p = db_session.query(Proyecto).from_statement("SELECT * FROM proyecto where "+parametro+" in (SELECT id FROM usuario where nombre ilike '%"+valor+"%' or apellido ilike '%"+valor+"%')").all() elif parametro == 'fecha_inicio' or parametro == 'fecha_fin': p = db_session.query(Proyecto).from_statement("SELECT * FROM proyecto where to_char("+parametro+", 'YYYY-mm-dd') ilike '%"+valor+"%'").all() else: p = db_session.query(Proyecto).from_statement("SELECT * FROM proyecto where "+parametro+" ilike '%"+valor+"%'").all() return render_template('proyecto/administrarproyecto.html', proyectos = p) else: idproy = None if 'pry' in session: idproy = session['pry'] permiss = UserPermission('LIDER PROYECTO', int(idproy)) opcionPerm = UserPermission('COMITE CAMBIOS', int(session['pry'])) if permiss.can() or opcionPerm.can(): valor = request.args['patron'] parametro = request.args['parametro'] if valor == "" : administrarproyecto() if parametro == 'cant_miembros' : p = db_session.query(Proyecto).from_statement("SELECT * FROM proyecto where to_char("+parametro+", '99999') ilike '%"+valor+"%' and id = "+str(idproy)).all() elif parametro == 'id_usuario_lider': p = db_session.query(Proyecto).from_statement("SELECT * FROM proyecto where "+parametro+" in (SELECT id FROM usuario where nombre ilike '%"+valor+"%' or apellido ilike '%"+valor+"%') and id = "+str(idproy)).all() elif parametro == 'fecha_inicio' or parametro == 'fecha_fin': p = db_session.query(Proyecto).from_statement("SELECT * FROM proyecto where to_char("+parametro+", 'YYYY-mm-dd') ilike '%"+valor+"%' and id = "+str(idproy)).all() else: p = db_session.query(Proyecto).from_statement("SELECT * FROM proyecto where "+parametro+" ilike '%"+valor+"%' and id = "+str(idproy)).all() return render_template('proyecto/administrarproyecto.html', proyectos = p) else: flash('Sin permisos para buscar proyectos', 'permiso') return render_template('index.html')
def eliminarpermiso(): """ Funcion para eliminar registros a la tabla Permiso""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): try: cod = request.args.get('codigo') rol = db_session.query(Permiso).filter_by(codigo=cod).first() db_session.delete(rol) db_session.commit() flash('El permiso ha sido eliminado con exito','info') return redirect('/permiso/administrarpermiso') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0], 'info') return render_template('permiso/administrarpermiso.html')
def buscarrecurso(): """funcion que permite buscar un recurso""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): valor = request.args['patron'] parametro = request.args['parametro'] if valor == "" : administrarrecurso() p = db_session.query(Recurso).from_statement("SELECT * FROM recurso where "+parametro+" ilike '%"+valor+"%'").all() return render_template('recurso/administrarrecurso.html', recursos = p) else: flash('Sin permisos para buscar recursos', 'permiso') return render_template('index.html')
def eliminarusuario(): """ Funcion para eliminar registros de la tabla Usuario""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): try: usu = request.args.get('usu') usuario = db_session.query(Usuario).filter_by(usuario=usu).first() db_session.delete(usuario) db_session.commit() flash('El usuario ha sido eliminado con exito','info') return redirect('/usuario/administrarusuario') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0],'info') return render_template('usuario/administrarusuario.html')
def editarusuario(): """ Funcion para editar registros de la tabla Usuario""" """ Se obtiene la fecha actual para almacenar la fecha de ultima actualizacion """ if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): today = datetime.date.today() """ Se un objeto md5 para encriptar la contrasenha del usuario """ con = md5.new() conf = md5.new() p = db_session.query(Usuario).filter_by(usuario=request.args.get('usu')).first() form = UsuarioFormulario(request.form,p) usuario = db_session.query(Usuario).filter_by(usuario=form.usuario.data).first() if request.method == 'POST' and form.validate(): if form.fecha_nac.data > today : flash('Ingrese una fecha de nacimiento valida','error') return render_template('usuario/editarusuario.html', form=form) if form.password.data != form.confirmar.data : conf.update(form.confirmar.data) confir = conf.hexdigest() if form.password.data != confir : flash('Las contrasenhas deben coincidir','error') return render_template('usuario/editarusuario.html', form=form) try: con.update(form.password.data) aux = usuario.id form.populate_obj(usuario) usuario.password = con.hexdigest() usuario.id = aux db_session.merge(usuario) db_session.commit() flash('El usuario ha sido modificado con exito','info') return redirect('/usuario/administrarusuario') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0],'error') return render_template('usuario/editarusuario.html', form=form) else: flash_errors(form) return render_template('usuario/editarusuario.html', form=form)
def eliminarrecurso(): """funcion que elimina un recurso @param id_recurso: indica el id del recurso a eliminar. @return: retorna a la pagina de administrar recurso. @bug: Error de base de datos al tratar de eliminar el recurso. @precondition: No debe existir permisos con el recurso para que se elimine con exito. @attention: Requiere que se tenga el rol de administrador para realizar la opcion.""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): try: print request.args.get('id_recurso') if request.args.get('id_recurso') != None: r = db_session.query(Recurso).filter_by(id=request.args.get('id_recurso')).first() form = RecursoFormulario(request.form, r) if r.id_fase != None : form.id_fase.data = r.recursofase.nombre form.id_proyecto.data = None else: form.id_fase.data = None form.id_proyecto.data = r.recursoproyecto.nombre else : form = RecursoFormulario(request.form) if request.method == 'POST': permiso = db_session.query(Permiso).filter_by(id_recurso= form.id.data).first() if permiso != None : flash('No se ha podido Eliminar, existe permisos que utiliza el recurso','info') return redirect('/recurso/administrarrecurso') recurso = db_session.query(Recurso).filter_by(id= form.id.data).first() db_session.delete(recurso) db_session.commit() flash('El recurso ha sido eliminado con exito','info') return redirect('/recurso/administrarrecurso') return render_template('recurso/eliminarrecurso.html', form=form) except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0],'error') return render_template('recurso/eliminarrecurso.html', form= form)
def verrolusu(): """ Funcion para listar Roles de un Usuario""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserRol('ADMINISTRADOR') if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') id_usu = request.args.get('usu') usu = db_session.query(Usuario).filter_by(id=id_usu).first() rolesv= db_session.query(Rol).from_statement("select * from rol where id in (select id_rol from usuario_rol where id_usuario="+str(usu.id)+")").all() aux=[] for rl in rolesv : pro= db_session.query(Proyecto).from_statement("select * from proyecto where id in (select id_proyecto from recurso where id in "+ " ( select id_recurso from permiso where id in (select id_permiso from rol_permiso where id_rol="+str(rl.id)+" limit 1)))").first() aux.append(pro) form = UsuarioFormulario(request.form,usu) return render_template('usuario/verrolusu.html', form=form, roles= rolesv, pro=aux)
def buscar(): """ Funcion para buscar registros de la tabla Rol""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): valor = request.args['patron'] parametro = request.args['parametro'] if valor == "" : administrarrol() p = db_session.query(Rol).from_statement("SELECT * FROM rol where " + parametro + " ilike '%" + valor + "%'").all() return render_template('rol/administrarrol.html', roles=p) valor = request.args['patron'] r = db_session.query(Rol).filter_by(codigo=valor) if r == None: return 'no existe concordancia' return render_template('rol/administrarrol.html', roles=r) else: flash('Sin permisos para buscar roles', 'permiso') return render_template('index.html')
def nuevousuario(): """ Funcion para agregar registros a la tabla Usuario""" """ Se obtiene la fecha actual para verificar la fecha de nacimiento """ if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): today = datetime.date.today() form = UsuarioFormulario(request.form) """ Se un objeto md5 para encriptar la contrasenha del usuario """ con = md5.new() if request.method == 'POST' and form.validate(): if form.fecha_nac.data > today : flash('Ingrese una fecha de nacimiento valida','error') return render_template('usuario/nuevousuario.html', form=form) if form.password.data != form.confirmar.data : flash('Las contrasenhas deben coincidir','error') return render_template('usuario/nuevousuario.html', form=form) try: con.update(form.password.data) usu = Usuario(form.usuario.data, form.nombre.data, form.apellido.data, con.hexdigest(), form.correo.data, form.domicilio.data, form.telefono.data, form.fecha_nac.data) db_session.add(usu) db_session.commit() flash('El Usuario ha sido registrado con exito ','info') return redirect('/usuario/administrarusuario') except DatabaseError, e: if e.args[0].find('duplicate key value violates unique')!=-1: flash('Clave unica violada por favor ingrese otro USUARIO para el registro' ,'error') else: flash('Error en la Base de Datos' + e.args[0],'error') return render_template('usuario/nuevousuario.html', form=form) else: flash_errors(form) return render_template('usuario/nuevousuario.html', form=form)
def administrarpermiso(): """ Funcion para ver registros a la tabla Permiso""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): isAdmin = request.args.get('value') rol = request.args.get('idrol') permisos = db_session.query(Permiso).order_by(Permiso.id) lista = [] if not isAdmin : #======================================================================= # en esta lista se inserta los permisos que estan asignados a un rol #======================================================================= yourPermiso=getPermisosByRol(rol) for p in yourPermiso: lista.append(p) return render_template('permiso/administrarpermiso.html', permisos = permisos, isAdministrar = isAdmin, idrol = rol, asignados = lista) else: flash('Sin permisos para administrar proyectos', 'permiso') return render_template('index.html')
def buscarusuario(): """ Funcion para buscar registros de la tabla Usuario""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): valor = request.args['patron'] parametro = request.args['parametro'] if valor == "" : administrarusuario() if parametro == 'fecha_nac': p = db_session.query(Usuario).from_statement("SELECT * FROM usuario where to_char("+parametro+", 'YYYY-mm-dd') ilike '%"+valor+"%'").all() else: p = db_session.query(Usuario).from_statement("SELECT * FROM usuario where "+parametro+" ilike '%"+valor+"%'").all() return render_template('usuario/administrarusuario.html', usuarios = p) valor = request.args['patron'] r = db_session.query(Usuario).filter_by(usuario=valor) return render_template('usuario/administrarusuario.html', usuarios = r) else: flash('Sin permisos para buscar usuarios', 'permiso') return render_template('index.html')
def buscarpermisoSinasignar(): """ Funcion para buscar permisos que no pertenecen al rol """ if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): idrol = request.args.get('idrol') valor = request.args['patron'] parametro = request.args['parametro'] if valor == "" : permisos = getPermisosByRol(idrol) if len(permisos) > 0: #si tiene permisos muestra directamente permisos del proyecto #obtiene idproyecto del permiso que tenga especificado una fase idproyecto = getProyectoByPermiso(permisos) #obtiene permisos no asignados al rol permisos = listadoPermisosNoAsignados(idproyecto, idrol) return render_template('rol/asignarpermisos.html', permisos = permisos, idrol = idrol) else: if parametro == 'id_recurso': p = db_session.query(Permiso).from_statement("SELECT * FROM permiso where to_char("+parametro+", '99999') ilike '%"+valor+"%'").all() #p = db_session.query(Permiso).from_statement("SELECT * FROM permiso where "+parametro+" = CAST("+valor+" AS Int)").all() else: p = db_session.query(Permiso).from_statement("SELECT * FROM permiso where "+parametro+" ilike '%"+valor+"%'").all() return render_template('rol/asignarpermisos.html', permisos = p, idrol = idrol) valor = request.args['patron'] # init_db(db_session) r = db_session.query(Rol).filter_by(codigo=valor) if r == None: return 'no existe concordancia' return render_template('rol/administrarrol.html', roles=r) else: flash('Sin permisos para buscar permisos no asignados', 'permiso') return render_template('index.html')
def seleccionrecurso(): """ Funcion para seleccionar tipo de recurso a crear""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): parametro = request.args['parametro'] lista = [] if parametro == 'fase' : lista = db_session.query(Fase).filter(~Fase.id.in_(db_session.query(Recurso.id_fase).from_statement('SELECT recurso.id_fase '+ 'from recurso '+ 'where recurso.id_fase is not null'))).all() elif parametro == 'proyecto' : lista = db_session.query(Proyecto).filter(~Proyecto.id.in_(db_session.query(Recurso.id_proyecto).from_statement('SELECT recurso.id_proyecto '+ 'from recurso '+ 'where recurso.id_proyecto is not null'))).all() else: parametro= None return render_template('recurso/seleccionrecurso.html',lista = lista, param= parametro) else: flash('Sin permisos para seleccionar recursos', 'permiso') return render_template('index.html')
def administrarproyecto(): """ Funcion para listar registros de la tabla Proyecto""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') idproy = None if 'pry' in session: idproy = session['pry'] permission = UserRol('ADMINISTRADOR') if permission.can(): if idproy != None : proyectos = db_session.query(Proyecto).filter(Proyecto.id == idproy).all() else : proyectos = db_session.query(Proyecto).order_by(Proyecto.nombre) else: permiss = UserPermission('LIDER PROYECTO', int(idproy)) opcionPerm = UserPermission('COMITE CAMBIOS', int(session['pry'])) if permiss.can() or opcionPerm.can(): proyectos = db_session.query(Proyecto).filter(Proyecto.id == idproy).all() else: flash('Sin permisos para administrar proyectos', 'permiso') return render_template('index.html') return render_template('proyecto/administrarproyecto.html', proyectos = proyectos)
def nuevopermiso(): """ Funcion para agregar registros a la tabla Permiso""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): form = PermisoFormulario(request.form) form.id_recurso.choices= [(r.id, r.nombre) for r in db_session.query(Recurso).order_by(Recurso.nombre)] if request.method == 'POST' and form.validate(): try: permiso = Permiso(form.codigo.data, form.descripcion.data, form.id_recurso.data) db_session.add(permiso) db_session.commit() flash('El permiso ha sido registrado con exito','info') return redirect('/permiso/administrarpermiso') except DatabaseError, e: if e.args[0].find('duplicate key value violates unique') != -1: flash('Clave unica violada por favor ingrese otra combinacion de permiso con recurso unica' , 'error') else: flash('Error en la Base de Datos' + e.args[0], 'error') return render_template('permiso/nuevopermiso.html', form=form) return render_template('permiso/nuevopermiso.html', form=form)
def editar(): """ Funcion para editar registros de la tabla Rol""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): r = db_session.query(Rol).filter_by(codigo=request.args.get('cod')).first() form = RolFormulario(request.form, r) rol = db_session.query(Rol).filter_by(codigo=form.codigo.data).first() if request.method == 'POST' and form.validate(): try: form.populate_obj(rol) db_session.merge(rol) db_session.commit() flash('El rol ha sido modificado con exito', 'info') return redirect('/administrarrol') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0], 'error') return render_template('rol/editarrol.html', form=form) else: flash_errors(form) return render_template('rol/editarrol.html', form=form)
def editarproyecto(): """ Se obtiene la fecha actual para almacenar la fecha de ultima actualizacion """ if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): today = datetime.date.today() #init_db(db_session) r2 = db_session.query(Rol).filter_by(codigo='LIDER PROYECTO').first() p = db_session.query(Proyecto).filter_by(nombre=request.args.get('nom')).first() form = ProyFormulario(request.form,p) proyecto = db_session.query(Proyecto).filter_by(nombre=form.nombre.data).first() form.id_usuario_lider.choices= [(u.id, u.nombre + " " + u.apellido) for u in db_session.query(Usuario).order_by(Usuario.nombre).all()] mc = proyecto.id_usuario_lider if proyecto.estado == 'N' : form.estado.data = 'Nuevo' elif proyecto.estado == 'P' : form.estado.data = 'En Progreso' elif proyecto.estado == 'A' : form.estado.data = 'Anulado' elif proyecto.estado == 'F' : form.estado.data = 'Finalizado' if request.method == 'POST' and form.validate(): if form.fecha_inicio.data > form.fecha_fin.data : flash('La fecha de inicio no puede ser mayor que la fecha de finalizacion','error') return render_template('proyecto/editarproyecto.html', form=form) if form.cant_miembros.data %2 == 0 : flash('La cantidad maxima de miembros debe ser impar','error') return render_template('proyecto/editarproyecto.html', form=form) try: form.populate_obj(proyecto) proyecto.fecha_ultima_mod = today if form.estado.data == 'Nuevo' : proyecto.estado = 'N' elif form.estado.data == 'En Progreso' : proyecto.estado = 'P' elif form.estado.data == 'Anulado' : proyecto.estado = 'A' elif form.estado.data == 'Finalizado' : proyecto.estado = 'F' db_session.merge(proyecto) db_session.commit() if mc != proyecto.id_usuario_lider: miembrosComite = db_session.query(MiembrosComite).filter_by(id_usuario=mc).filter_by(id_proyecto=proyecto.id).first() #init_db(db_session) db_session.delete(miembrosComite) db_session.commit() lr = db_session.query(UsuarioRol).filter_by(id_rol=r2.id).filter_by(id_usuario=mc).filter_by(id_proyecto=proyecto.id).first() #init_db(db_session) db_session.delete(lr) db_session.commit() miembro = MiembrosComite(proyecto.id, proyecto.id_usuario_lider) db_session.add(miembro) db_session.commit() li = UsuarioRol(r2.id, proyecto.id_usuario_lider, proyecto.id) db_session.add(li) db_session.commit() flash('El Proyecto ha sido modificado con exito','info') return redirect('/proyecto/administrarproyecto') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0],'error') return render_template('proyecto/editarproyecto.html', form=form) else: flash_errors(form) return render_template('proyecto/editarproyecto.html', form=form)
def nuevoproyecto(): """ Funcion para agregar registros a la tabla Proyecto""" """ Se obtiene la fecha actual para almacenar la fecha de ultima actualizacion """ if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission = UserRol('ADMINISTRADOR') if permission.can(): today = datetime.date.today() form = ProyFormulario(request.form) r = db_session.query(Rol).filter_by(codigo='COMITE CAMBIOS').first() r2 = db_session.query(Rol).filter_by(codigo='LIDER PROYECTO').first() form.id_usuario_lider.choices= [(u.id, u.nombre + " " + u.apellido) for u in db_session.query(Usuario).order_by(Usuario.nombre).all()] if request.method == 'POST' and form.validate(): if form.fecha_inicio.data > form.fecha_fin.data : flash('La fecha de inicio no puede ser mayor que la fecha de finalizacion','error') return render_template('proyecto/nuevoproyecto.html', form=form) if form.cant_miembros.data %2 == 0 : flash('La cantidad maxima de miembros debe ser impar','error') return render_template('proyecto/nuevoproyecto.html', form=form) try: pry = Proyecto(form.nombre.data, form.descripcion.data, 'N', form.cant_miembros.data, form.fecha_inicio.data, form.fecha_fin.data, today, form.id_usuario_lider.data) db_session.add(pry) db_session.commit() mc = MiembrosComite(pry.id, form.id_usuario_lider.data) db_session.add(mc) db_session.commit() """ Asignar los roles comite cambios y lider proyecto en caso de que no existan""" if r == None : r = Rol('COMITE CAMBIOS', 'COMITE CAMBIOS') db_session.add(r) db_session.commit() if r2 == None : r2 = Rol('LIDER PROYECTO', 'LIDER PROYECTO') db_session.add(r2) db_session.commit() """ Asignar el rol lider proyecto """ li = UsuarioRol(r2.id, pry.id_usuario_lider, pry.id) db_session.add(li) db_session.commit() """ Asignar los permisos de consulta al comite """ re = db_session.query(Recurso).filter_by(id_proyecto=pry.id).filter_by(nombre=pry.nombre).first() if re == None : re = Recurso(pry.nombre, pry.id) db_session.add(re) db_session.commit() per = db_session.query(Permiso).filter_by(id_recurso=re.id).filter_by(codigo='CONSULTAR PROYECTO').first() if per == None : per = Permiso('CONSULTAR PROYECTO', 'CONSULTAR PROYECTO', re.id) db_session.add(per) db_session.commit() rp = db_session.query(RolPermiso).filter_by(id_rol=r.id).filter_by(id_permiso=per.id).first() if rp == None : rp = RolPermiso(r.id, per.id) db_session.add(rp) db_session.commit() flash('El Proyecto ha sido registrado con exito','info') return redirect('/proyecto/administrarproyecto') except DatabaseError, e: if e.args[0].find('duplicate key value violates unique')!=-1: flash('Clave unica violada por favor ingrese otro NOMBRE de Proyecto' ,'error') else: flash('Error en la Base de Datos' + e.args[0],'error') return render_template('proyecto/nuevoproyecto.html', form=form) else: flash_errors(form) return render_template('proyecto/nuevoproyecto.html', form=form)
def agregarrolusu(): """ Funcion para asignar Roles a un Usuario""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserRol('ADMINISTRADOR') if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') if request.args.get('usu') == None: id_usu= request.form.get('id') else: id_usu=request.args.get('usu') usu = db_session.query(Usuario).filter_by(id=id_usu).first() rolesv= db_session.query(Rol).from_statement("select * from rol where id not in (select id_rol from usuario_rol where id_usuario="+str(usu.id)+ ") and rol.codigo <> 'LIDER PROYECTO' and rol.codigo <> 'COMITE CAMBIOS'").all() aux=[] for rl in rolesv : pro= db_session.query(Proyecto).from_statement("select * from proyecto where id in "+ "(select id_proyecto from fase where id in"+ "(select id_fase from recurso where id in"+ "(select id_recurso from permiso where id in"+ "(select id_permiso from rol_permiso where id_rol="+str(rl.id)+" limit 1)"+ ")))").first() aux.append(pro) form = UsuarioFormulario(request.form,usu) usuario = db_session.query(Usuario).filter_by(id=usu.id).first() if request.method == 'POST' : roles=request.form.getlist('selectrol') try: list_aux=[] for rl in roles : r = db_session.query(Rol).filter_by(id=rl).first() list_aux.append(r) if list_aux == None or list_aux == []: flash('Debe seleccionar un Rol','info') return render_template('usuario/administrarusuario.html') for rl in list_aux: recu = db_session.query(Recurso).join(Permiso, Permiso.id_recurso == Recurso.id).join(RolPermiso, Permiso.id ==RolPermiso.id_permiso).filter(RolPermiso.id_rol == rl.id).first() if recu != None: proyecto = db_session.query(Proyecto).join(Recurso, Recurso.id_proyecto == Proyecto.id ).filter(Proyecto.id == recu.id_proyecto).first() if proyecto == None: proyecto = db_session.query(Proyecto).join(Fase, Fase.id_proyecto == Proyecto.id).join(Recurso, Recurso.id_fase == Fase.id).filter(Recurso.id_fase == recu.id_fase).first() if proyecto != None: rousu = UsuarioRol(rl.id, usuario.id, proyecto.id) db_session.add(rousu) db_session.commit() else: flash('El Rol aun no tiene asignado Permisos','info') return redirect('/usuario/administrarusuario') else: if rl.codigo =='ADMINISTRADOR': rousu = UsuarioRol(rl.id, usuario.id, None) db_session.add(rousu) db_session.commit() #=============================================================== # re = db_session.query(Recurso).from_statement("select * from recurso where id in ( select id_recurso from permiso where id in " + # " (select id_permiso from rol_permiso where id_rol="+str(rl.id)+" limit 1))").first() #=============================================================== flash('Se agrego el Rol con Exito','info') return redirect('/usuario/administrarusuario') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0],'error') return render_template('usuario/agregarrolusu.html', form=form, roles= rolesv, pro=aux)