Beispiel #1
0
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)
Beispiel #2
0
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')
Beispiel #3
0
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')
Beispiel #4
0
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)
Beispiel #5
0
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')
Beispiel #6
0
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)
Beispiel #7
0
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)
Beispiel #8
0
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')
Beispiel #9
0
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')
Beispiel #10
0
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)
Beispiel #11
0
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)
Beispiel #12
0
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)  
Beispiel #13
0
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)
Beispiel #14
0
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')
Beispiel #15
0
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)
Beispiel #16
0
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)
Beispiel #17
0
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)  
Beispiel #18
0
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')
Beispiel #19
0
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)
Beispiel #20
0
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')
Beispiel #21
0
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)
Beispiel #22
0
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)
Beispiel #23
0
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)
Beispiel #24
0
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)
Beispiel #25
0
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)
Beispiel #26
0
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')
Beispiel #27
0
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)
Beispiel #28
0
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)
Beispiel #29
0
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)
Beispiel #30
0
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')