def buscartipoItem2(): """ Funcion para buscar registros de la tabla de Tipo de Item""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'info') return render_template('index.html') valor = request.args['patron'] parametro = request.args['parametro'] #init_db(db_session) if valor == "" : administrartipoItem() if parametro == 'id_fase': ti = db_session.query(TipoItem).from_statement("SELECT * FROM tipo_item where "+parametro+" in (SELECT id FROM fase where nombre ilike '%"+valor+"%' )").all() else: ti = db_session.query(TipoItem).from_statement("SELECT * FROM tipo_item where "+parametro+" ilike '%"+valor+"%'").all() return render_template('tipoItem/listartipoItem.html', tipoItems2 = ti) valor = request.args['patron'] #init_db(db_session) r = db_session.query(TipoItem).filter_by(nombre=valor) if r == None: return 'no existe concordancia' return render_template('tipoItem/listartipoItem.html', tipoItems2 = r)
def eliminartipoAtributo(): """ Funcion que permite eliminar un tipo atributo """ if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO',int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') ta = db_session.query(TipoAtributo).filter_by(nombre=request.args.get('nombre')).first() a = db_session.query(Atributo).filter_by(id_tipo_atributo=ta.id).first() if a != None : flash('No se puede eliminar el Tipo Atributo, esta asociado al Atributo ' + a.nombre,'info') return render_template('tipoAtributo/administrartipoAtributo.html') try: cod = request.args.get('nombre') tipoAtributo = db_session.query(TipoAtributo).filter_by(nombre=cod).first() db_session.delete(tipoAtributo) db_session.commit() return redirect('/tipoAtributo/administrartipoAtributo') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0],'info') return render_template('/tipoAtributo/administrartipoAtributo.html')
def iniciarproyecto(): """Funcion para iniciar el Proyecto""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') nom = request.args.get('nom') pro = db_session.query(Proyecto).filter_by(nombre=nom).first() fase = db_session.query(Fase).from_statement("SELECT * FROM fase WHERE id_proyecto='"+str(pro.id)+"' and nro_orden=(SELECT min(nro_orden) FROM fase WHERE id_proyecto='"+str(pro.id)+"')").first() cant = db_session.query(MiembrosComite).filter_by(id_proyecto=pro.id).count() if fase == None: flash('El Proyecto no puede ser iniciado porque no tiene Fases asociadas','info') return redirect('/proyecto/administrarproyecto') if cant != pro.cant_miembros: flash('El Proyecto no puede ser iniciado porque no tiene la cantidad preestablecida de miembros en el Comite de Cambios','info') return redirect('/proyecto/administrarproyecto') if pro.estado == 'N': try: pro.estado = 'P' db_session.merge(pro) db_session.commit() flash('El Proyecto se ha iniciado con exito','info') return redirect('/proyecto/administrarproyecto') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0],'info') return redirect('/proyecto/administrarproyecto')
def nuevotipoAtributo(): """ Funcion para agregar registros a la tabla TipoAtributo""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO',int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') form = TipoAtributoFormulario(request.form) if request.method == 'POST' and form.validate(): try: tipoAtributo = TipoAtributo( form.nombre.data, form.descripcion.data) db_session.add(tipoAtributo) db_session.commit() flash('El Tipo Atributo ha sido registrado con exito','info') return redirect('/tipoAtributo/administrartipoAtributo') except DatabaseError, e: if e.args[0].find('duplicate key value violates unique')!=-1: flash('Clave unica violada por favor ingrese otro CODIGO para el Tipo de Atributo' ,'error') else: flash('Error en la Base de Datos' + e.args[0],'error') return render_template('tipoAtributo/nuevotipoAtributo.html', form=form)
def eliminarmiembrosComite(): """ Funcion para eliminar registros de la tabla MiembrosComite""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') r = db_session.query(Rol).filter_by(codigo='COMITE CAMBIOS').first() pro = db_session.query(Proyecto).filter_by(id=session['pry']).first() if pro.estado != 'N' : flash('No se pueden desasignar Miembros al Comites de Cambios','info') return render_template('miembrosComite/administrarmiembrosComite.html') if pro.id_usuario_lider.__repr__() == request.args.get('usu'): flash('No se pueden desasignar al Lider de Proyecto del Comite de Cambios','info') return render_template('miembrosComite/administrarmiembrosComite.html') try: print request.args.get('id_mc') mc = db_session.query(MiembrosComite).filter_by(id=request.args.get('id_mc')).first() ur = db_session.query(UsuarioRol).filter_by(id_rol=r.id).filter_by(id_usuario=mc.id_usuario).filter_by(id_proyecto=pro.id).first() db_session.delete(ur) db_session.commit() miembrosComite = db_session.query(MiembrosComite).filter_by(id=request.args.get('id_mc')).first() db_session.delete(miembrosComite) db_session.commit() flash('El Miembro ha sido eliminado con exito','info') return redirect('/miembrosComite/administrarmiembrosComite') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0],'info') return render_template('/miembrosComite/administrarmiembrosComite.html')
def editaratributo(): """funcion que sirve para modificar atributos""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') a = db_session.query(Atributo).filter_by(nombre=request.args.get('nom')).first() form = AtributoEdFormulario(request.form,a) tipo_selected= db_session.query(TipoAtributo).filter_by(nombre=request.args.get('tipo_atributo')).first() atributo = db_session.query(Atributo).filter_by(nombre=form.nombre.data).first() if request.method != 'POST': form.id_tipo_atributo.data= tipo_selected.nombre if request.method == 'POST' and form.validate(): try: tipo=db_session.query(TipoAtributo).filter_by(nombre=form.id_tipo_atributo.data).first() form.populate_obj(atributo) atributo.id_tipo_atributo = tipo.id db_session.merge(atributo) db_session.commit() flash('El atributo ha sido editado con exito','info') return redirect('/atributo/administraratributo') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0],'error') return render_template('atributo/editaratributo.html', form=form)
def buscarfase2(): """ Funcion para buscar registros de la tabla Fase""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') valor = request.args['patron'] parametro = request.args['parametro'] #init_db(db_session) if valor == "" : p = db_session.query(Fase).order_by(Fase.nro_orden) elif parametro == 'nro_orden' : p = db_session.query(Fase).from_statement("SELECT * FROM fase where to_char("+parametro+", '99999') ilike '%"+valor+"%' ").all() elif parametro == 'id_proyecto': p = db_session.query(Fase).from_statement("SELECT * FROM fase where "+parametro+" in (SELECT id FROM proyecto where nombre ilike '%"+valor+"%')").all() elif parametro == 'fecha_inicio' or parametro == 'fecha_fin': p = db_session.query(Fase).from_statement("SELECT * FROM fase where to_char("+parametro+", 'YYYY-mm-dd') ilike '%"+valor+"%' ").all() else: p = db_session.query(Fase).from_statement("SELECT * FROM fase where "+parametro+" ilike '%"+valor+"%' ").all() return render_template('fase/listarfase.html', fases2 = p)
def eliminartipoItem(): """ Funcion para eliminar registros de la tabla de Tipo de Item""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'info') return render_template('index.html') try: cod = request.args.get('cod') tipoItem = db_session.query(TipoItem).filter_by(codigo=cod).first() items= db_session.query(Item).filter_by(id_tipo_item=tipoItem.id).first() cant = db_session.query(TItemAtributo).filter_by(id_tipo_item=tipoItem.id).count() cnt = 0 #se verifica si el tipo de item esta siendo utilizado, en tal caso no podra ser eliminado if items != None : flash('El Tipo de Item no puede ser eliminado, ya que esta siendo utilizado por algun Item!','info') return render_template('tipoItem/administrartipoItem.html') while cnt < cant : cnt = cnt + 1 tt = db_session.query(TItemAtributo).filter_by(id_tipo_item=tipoItem.id).first() db_session.delete(tt) db_session.commit() db_session.delete(tipoItem) db_session.commit() flash('El tipo item ha sido eliminado con exito','info') return redirect('/tipoItem/administrartipoItem') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0],'info') return render_template('tipoItem/administrartipoItem.html')
def eliminarfase(): """ Funcion para eliminar registros de la tabla Fase""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') pro = db_session.query(Proyecto).filter_by(id=session['pry']).first() if pro.estado != 'N' : flash('No se pueden eliminar Fases del Proyecto','info') return render_template('fase/administrarfase.html') f = db_session.query(Fase).filter_by(nro_orden=request.args.get('nro')).filter_by(id_proyecto=session['pry']).first() ti = db_session.query(TipoItem).filter_by(id_fase=f.id).first() if ti != None : flash('No se pueden eliminar la Fase esta asociada al Tipo Item ' + ti.nombre,'info') return render_template('fase/administrarfase.html') if f.estado != 'I' : flash('No se pueden eliminar Fases que no se encuentren en estado Inicial','info') return render_template('fase/administrarfase.html') try: nro = request.args.get('nro') #init_db(db_session) fase = db_session.query(Fase).filter_by(nro_orden=nro).filter_by(id_proyecto=session['pry']).first() #init_db(db_session) db_session.delete(fase) db_session.commit() flash('La fase ha sido eliminado con exito','info') return redirect('/fase/administrarfase') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0],'info') return render_template('/fase/administrarfase.html')
def administrartipoAtributo(): if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO',int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') tipoAtributos = db_session.query(TipoAtributo).order_by(TipoAtributo.nombre) return render_template('tipoAtributo/administrartipoAtributo.html', tipoAtributos = tipoAtributos)
def editarfase(): """ Funcion para editar registros de la tabla Fase""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') pro = db_session.query(Proyecto).filter_by(id=session['pry']).first() f = db_session.query(Fase).filter_by(nro_orden=request.args.get('nro')).filter_by(id_proyecto=pro.id).first() form = FaseFormulario(request.form,f) fase = db_session.query(Fase).filter_by(nro_orden=form.nro_orden.data).filter_by(id_proyecto=pro.id).first() form.id_proyecto.data = pro.nombre if fase.estado=='I': form.estado.data='Inicial' elif fase.estado=='P': form.estado.data='En Progreso' elif fase.estado=='L': form.estado.data='En Linea Base' elif fase.estado=='A': form.estado.data='Aprobado' if pro.estado != 'N' : flash('No se pueden modificar Fases del Proyecto','info') return render_template('fase/administrarfase.html') if fase.estado != 'I' : flash('No se pueden modificar Fases que no se encuentren en estado Inicial','info') return render_template('fase/administrarfase.html') 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('fase/editarfase.html', form=form) try: form.populate_obj(fase) fase.id_proyecto = pro.id if form.estado.data=='Inicial': fase.estado='I' elif form.estado.data=='En Progreso': fase.estado='P' elif form.estado.data=='En Linea Base': fase.estado='L' elif form.estado.data=='Aprobado': fase.estado='A' db_session.merge(fase) db_session.commit() flash('La fase ha sido editada con exito','info') return redirect('/fase/administrarfase') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0],'error') return render_template('fase/editarfase.html', form=form)
def listaatt(): """ Funcion que lista los atributos posibles a formar parte de un Tipo Item""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'info') return render_template('index.html') atts = db_session.query(Atributo).from_statement(" select * from atributo " ) return render_template('tipoItem/listaatt.html', atts = atts)
def listarfase(): """ Funcion para listar registros de la tabla Fase para importar una fase existente""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') fases2 = db_session.query(Fase).order_by(Fase.id_proyecto, Fase.nro_orden) return render_template('fase/listarfase.html', fases2 = fases2)
def listarusuarios(): """ Funcion para listar registros de la tabla Usuarios""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can(): usuarios = db_session.query(Usuario).from_statement("select * from usuario where id not in (select id_usuario from miembros_comite where id_proyecto='"+session['pry']+"')").all() return render_template('miembrosComite/listarusuarios.html', usuarios = usuarios) else: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html')
def listartipoItem(): """ Funcion para listar registros de la tabla de Tipo de Item""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'info') return render_template('index.html') tipoItems2 = db_session.query(TipoItem).order_by(TipoItem.nombre) return render_template('tipoItem/listartipoItem.html', tipoItems2 = tipoItems2)
def administrarfase(): """ Funcion para listar registros de la tabla Fase""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) permi =UserPermission('COMITE CAMBIOS', int(session['pry'])) if permission.can()==False or permi.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') fases = db_session.query(Fase).filter_by(id_proyecto=session['pry']).order_by(Fase.nro_orden) return render_template('fase/administrarfase.html', fases = fases)
def agregaritems(): """ Funcion que agrega Atributos a un Tipo Item""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'info') return render_template('tipoItem/administrartipoItem.html') selectedatt= request.args.get('ti') atts = db_session.query(Atributo).from_statement(" select * from atributo " ) return render_template('tipoItem/listaatt.html', atts = atts)
def administrarmiembrosComite(): """ Funcion para listar registros de la tabla MiembrosComite @precondition: El usuario debe haber seleccionado el proyecto que administrara @author: Lila Pamela Perez Miranda""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) opcionPerm = UserPermission('COMITE CAMBIOS', int(session['pry'])) if permission.can() or opcionPerm.can(): miembrosComites = db_session.query(MiembrosComite).filter_by(id_proyecto=session['pry']).order_by(MiembrosComite.id_usuario) return render_template('miembrosComite/administrarmiembrosComite.html', miembrosComites = miembrosComites) else: flash('Sin permisos para administrar miembros Comite', 'permiso') return render_template('index.html')
def importartipoItem(): """ Funcion para importar registros a la tabla de Tipo de Item""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'info') return render_template('tipoItem/administrartipoItem.html') #init_db(db_session) ti = db_session.query(TipoItem).filter_by(codigo=request.args.get('codigo')).first() form = TipoItemFormulario(request.form,ti) tipoItem = db_session.query(TipoItem).filter_by(codigo=form.codigo.data).first() fase_selected= db_session.query(Fase).filter_by(id=form.id_fase.data).first() #form.id_fase.data= fase_selected.nombre #atributos= db_session.query(Atributo).from_statement("Select a.* from atributo a , tipo_item ti, titem_atributo ta where ta.id_atributo= a.id and ta.id_tipo_item = ti.id and ti.id = '"+session['tip']+"'").all() atributos= db_session.query(Atributo).from_statement("Select a.* from atributo a").all() form.lista_atributo.choices = [(f.id, f.nombre) for f in atributos ] if request.method == 'POST' and form.validate(): try: """verifica si la fase esta en un estado inicial la cambia en progreso""" fase_selected = db_session.query(Fase).filter_by(id=form.id_fase.data).first() if fase_selected.estado == "I" : fase_selected.estado = "P" db_session.merge(fase_selected) db_session.commit() tipo = TipoItem( form.codigo.data, form.nombre.data, form.descripcion.data, form.id_fase.data) db_session.add(tipo) db_session.commit() """almacena los atributos del tipo Item""" lista= form.lista_atributo.data for atr in lista: att = TItemAtributo(tipo.id,atr) db_session.add(att) db_session.commit() flash('El Tipo de Item ha sido importado con exito','info') return redirect('/tipoItem/administrartipoItem') except DatabaseError, e: if e.args[0].find('duplicate key value violates unique')!=-1: flash('Clave unica violada por favor ingrese otro CODIGO de Tipo de Item' ,'error') else: flash('Error en la Base de Datos' + e.args[0],'error') return render_template('tipoItem/importartipoItem.html', form=form)
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 buscartipoAtributo(): """funcion que permite buscar tipo de atributos""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO',int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') valor = request.args['patron'] parametro = request.args['parametro'] if valor == "" : p = db_session.query(TipoAtributo).order_by(TipoAtributo.nombre) else: p = db_session.query(TipoAtributo).from_statement("SELECT * FROM tipo_atributo where "+parametro+" ilike '%"+valor+"%' ").all() return render_template('tipoAtributo/administrartipoAtributo.html', tipoAtributos = p)
def buscarmiembrosComite2(): """ Funcion para buscar registros en la tabla MiembrosComite""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') valor = request.args['patron'] parametro = request.args['parametro'] if valor == "" : p = db_session.query(Usuario).from_statement("select * from usuario where id not in (select id_usuario from miembros_comite where id_proyecto='"+session['pry']+"')").all() else : p = db_session.query(Usuario).from_statement("select * from usuario where "+parametro+" ilike '%"+valor+"%' and id not in (select id_usuario from miembros_comite where id_proyecto='"+session['pry']+"')").all() return render_template('miembrosComite/listarusuarios.html', usuarios = p)
def nuevotipoItem(): """ Funcion para agregar registros a la tabla de Tipo de Item""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'info') return render_template('index.html') form = TipoItemFormulario(request.form) #form.id_fase.choices= [(f.id, f.nombre) for f in db_session.query(Fase).filter_by(id_proyecto=session['pry']).filter_by(estado='I').order_by(Fase.nombre).all()] form.id_fase.choices= [(f.id, f.nombre) for f in db_session.query(Fase).from_statement("select * from fase where id_proyecto="+str(session['pry'])+" and (estado='I' or estado='P') order by nombre ").all()] form.lista_atributo.choices = [(f.id, f.nombre) for f in db_session.query(Atributo).order_by(Atributo.nombre).all()] if request.method == 'POST' and form.validate(): try: #verifica si la fase esta en un estado inicial la cambia en progreso fase_selected = db_session.query(Fase).filter_by(id=form.id_fase.data).first() if fase_selected.estado == "I" : fase_selected.estado = "P" db_session.merge(fase_selected) db_session.commit() tipo = TipoItem( form.codigo.data, form.nombre.data, form.descripcion.data, form.id_fase.data) db_session.add(tipo) db_session.commit() #almacena los atributos del tipo Item lista= form.lista_atributo.data for atr in lista: att = TItemAtributo(tipo.id,atr) db_session.add(att) db_session.commit() flash('El Tipo de Item ha sido registrado con exito','info') return redirect('/tipoItem/administrartipoItem') except DatabaseError, e: if e.args[0].find('duplicate key value violates unique')!=-1: flash('Clave unica violada por favor ingrese otro CODIGO de Tipo de Item' ,'error') else: flash('Error en la Base de Datos' + e.args[0],'error') return render_template('tipoItem/nuevotipoItem.html', form=form)
def importarfase(): """ Funcion para importar registros a la tabla Fase""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') pro = db_session.query(Proyecto).filter_by(id=session['pry']).first() f = db_session.query(Fase).filter_by(nro_orden=request.args.get('nro')).filter_by(id_proyecto=request.args.get('py')).first() form = FaseFormulario(request.form,f) fase = db_session.query(Fase).filter_by(nro_orden=form.nro_orden.data).filter_by(id_proyecto=request.args.get('py')).first() form.id_proyecto.data = pro.nombre n = db_session.query(func.max(Fase.nro_orden, type_=Integer)).filter_by(id_proyecto=session['pry']).scalar() if n != None : form.nro_orden.default = n + 1 else : form.nro_orden.default = 1 form.estado.data = 'Inicial' if pro.estado != 'N' : flash('No se pueden importar Fases al Proyecto','info') return render_template('fase/administrarfase.html') 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('fase/importarfase.html', form=form) try: fase = Fase(form.nro_orden.data, form.nombre.data, form.descripcion.data, 'I', form.fecha_inicio.data, form.fecha_fin.data, pro.id) db_session.add(fase) db_session.commit() flash('La fase ha sido importada con exito','info') return redirect('/fase/administrarfase') except DatabaseError, e: if e.args[0].find('duplicate key value violates unique')!=-1: flash('Clave unica violada por favor ingrese otro NUMERO de Fase' ,'error') else: flash('Error en la Base de Datos' + e.args[0],'error') return render_template('fase/importarfase.html', form=form)
def buscarmiembrosComite(): """ Funcion para buscar registros en la tabla MiembrosComite""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) opcionPerm = UserPermission('COMITE CAMBIOS', int(session['pry'])) if permission.can()==False or opcionPerm.can() ==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') valor = request.args['patron'] parametro = request.args['parametro'] if valor == "" : p = db_session.query(MiembrosComite).filter_by(id_proyecto=session['pry']) else : p = db_session.query(MiembrosComite).from_statement("SELECT * FROM miembros_comite where id_usuario in (SELECT id FROM usuario where "+parametro+" ilike '%"+valor+"%') and id_proyecto='"+session['pry']+"'").all() return render_template('miembrosComite/administrarmiembrosComite.html', miembrosComites = p)
def eliminaratributo(): """funcion que elimina un atributo""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') try: cod = request.args.get('nom') atributo = db_session.query(Atributo).filter_by(nombre=cod).first() db_session.delete(atributo) db_session.commit() flash('El atributo ha sido eliminado con exito','info') return redirect('/atributo/administraratributo') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0],'error') return render_template('atributo/eliminaratributo.html')
def editartipoItem(): """ Funcion para editar registros de la tabla de Tipo de Item""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'info') return render_template('index.html') ti = db_session.query(TipoItem).filter_by(codigo=request.args.get('codigo')).first() form = TipoItemFormulario(request.form,ti) tipoItem = db_session.query(TipoItem).filter_by(codigo=form.codigo.data).first() form.id_fase.choices= [(f.id, f.nombre) for f in db_session.query(Fase).from_statement("select * from fase where id_proyecto="+str(session['pry'])+" and (estado='I' or estado='P') order by nombre ").all()] fa = tipoItem.id_fase atributos= db_session.query(Atributo).from_statement("Select a.* from atributo a , tipo_item ti, titem_atributo ta where ta.id_atributo= a.id and ta.id_tipo_item = ti.id and ti.id = '"+tipoItem.id.__repr__()+"'").all() form.lista_atributo.choices = [(f.id, f.nombre) for f in atributos ] items= db_session.query(Item).filter_by(id_tipo_item=tipoItem.id).first() #se verifica si el tipo de item esta siendo utilizado, en tal caso no podra ser editado if items != None : flash('El Tipo de Item no puede ser editado, ya que esta siendo utilizado por algun Item!','info') return render_template('tipoItem/administrartipoItem.html') if request.method == 'POST' and form.validate(): items= db_session.query(Item).filter_by(id_tipo_item= tipoItem.id).first() #se verifica si el tipo de item esta siendo utilizado, en tal caso no podra ser editado if items != None : flash('El Tipo de Item no puede ser modificado, ya que esta siendo utilizado por algun item!','error') return render_template('tipoItem/editartipoItem.html', form=form) try: form.populate_obj(tipoItem) db_session.merge(tipoItem) db_session.commit() flash('El tipo item ha sido editado con exito','info') return redirect('/tipoItem/administrartipoItem') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0],'error') return render_template('tipoItem/editartipoItem.html', form=form)
def nuevomiembrosComite(): """ Funcion para agregar registros a la tabla MiembrosComite""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') pro = db_session.query(Proyecto).filter_by(id=session['pry']).first() u = db_session.query(Usuario).filter_by(usuario=request.args.get('usu')).first() form = MiembrosComiteFormulario(request.form,u) usuario = db_session.query(Usuario).filter_by(usuario=form.usuario.data).first() cant = db_session.query(MiembrosComite).filter_by(id_proyecto=pro.id).count() r = db_session.query(Rol).filter_by(codigo='COMITE CAMBIOS').first() if pro.estado != 'N' : flash('No se pueden asignar Miembros al Comite de Cambios','info') return render_template('miembrosComite/administrarmiembrosComite.html') if cant == pro.cant_miembros : flash('No se pueden asignar Miembros al Comite de Cambios, numero maximo de miembros alcanzado','info') return render_template('miembrosComite/administrarmiembrosComite.html') if request.method == 'POST' and form.validate(): try: miembrosComite = MiembrosComite(pro.id, usuario.id) db_session.add(miembrosComite) db_session.commit() ur = UsuarioRol(r.id, usuario.id, pro.id) db_session.add(ur) db_session.commit() flash('Se ha asignado el usuario al Comite de Cambios','info') return redirect('/miembrosComite/administrarmiembrosComite') except DatabaseError, e: if e.args[0].find('duplicate key value violates unique')!=-1: flash('Clave unica violada por favor ingrese otro usuario' ,'error') else: flash('Error en la Base de Datos' + e.args[0],'error') return render_template('miembrosComite/nuevomiembrosComite.html', form=form)
def editartipoAtributo(): """funcion que permite editar un Tipo de Atributo""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO',int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') f = db_session.query(TipoAtributo).filter_by(nombre=request.args.get('nombre')).first() form = TipoAtributoFormulario(request.form,f) tipoAtributo = db_session.query(TipoAtributo).filter_by(nombre=form.nombre.data).first() if request.method == 'POST' and form.validate(): try: form.populate_obj(tipoAtributo) db_session.merge(tipoAtributo) db_session.commit() return redirect('/tipoAtributo/administrartipoAtributo') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0],'error') return render_template('tipoAtributo/editartipoAtributo.html', form=form)
def finalizarproyecto(): """ Funcion para finalizar registros de la tabla Proyecto""" if not current_user.is_authenticated(): flash('Debe loguearse primeramente!!!!', 'loggin') return render_template('index.html') permission =UserPermission('LIDER PROYECTO', int(session['pry'])) if permission.can()==False: flash('No posee los permisos suficientes para realizar la operacion', 'permiso') return render_template('index.html') nom = request.args.get('nom') pry = db_session.query(Proyecto).filter_by(nombre=nom).first() fases = db_session.query(Fase).filter_by(id_proyecto=pry.id).all() f='S' if pry.estado!='P': flash('El Proyecto no puede ser finalizado, debe estar en estado En Progreso','info') return redirect('/proyecto/administrarproyecto') else : for fa in fases: if fa.estado != 'A' : f='N' if f=='N': flash('El Proyecto no puede ser finalizado alguna fase no ha sido Finalizada','info') return redirect('/proyecto/administrarproyecto') else : try: pry.estado = 'F' db_session.merge(pry) db_session.commit() flash('El Proyecto ha sido finalizado con exito','info') return redirect('/proyecto/administrarproyecto') except DatabaseError, e: flash('Error en la Base de Datos' + e.args[0],'info') return redirect('/proyecto/administrarproyecto')