示例#1
0
def nuevasolicitud():
    """ Funcion para agregar registros a la tabla Solicitud"""
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    today = datetime.date.today()
    form = SolicitudFormulario(request.form)
#    init_db(db_session)
    pro = db_session.query(Proyecto).filter_by(id=session['pry']).first()
    if pro.estado != 'P' :
        flash('No se pueden agregar Solicitudes a un Proyecto que no se encuentre En Progreso','info')
        return render_template('solicitud/administrarsolicitud.html')
    form.estado.data = 'Nueva'
    form.id_proyecto.data = pro.nombre
    form.id_usuario.data = current_user.usuario
    form.fecha.data = today
    form.cant_votos.data = 0
    #id_fase = request.args.get('id_fase')
    #if (id_fase!=None):
     #   session['faseid'] = id_fase
    items = db_session.query(Item).from_statement("Select it.*  from item it, "+ 
                        " (Select  i.codigo cod, max(i.version) vermax from item i, fase f  where i.id_fase = f.id "+
                        " and f.id_proyecto = "+str(session['pry'])+ " group by codigo order by 1 ) s "+
                        " where it.codigo = cod and it.version= vermax and it.estado = 'B' " + 
                        " and it.id not in(select id_item from solicitud_item where id_solicitud in (select id from solicitud_cambio " +
                        " where id_proyecto = "+str(session['pry'])+" and (estado='N' or estado ='E'))) order by it.codigo ").all()
    if request.method == 'POST' and form.validate():
 #       init_db(db_session)
        try:
            multiselect= request.form.getlist('selectitem')  
            list_aux=[]
            
            for it in multiselect :
                i = db_session.query(Item).filter_by(id=it).first()    
                list_aux.append(i)
                #id_fase= i.id_fase            
            
            if list_aux == None or list_aux == []:
                flash('Debe seleccionar un item','info')
                return render_template('solicitud/administrarsolicitud.html')         
            
            solicitud = SolicitudCambio(form.descripcion.data, 'N', today, 0, current_user.id, pro.id )
            db_session.add(solicitud)
            db_session.commit()
            
            #se guarda la solicitud junto con los item pertenecientes al mismo          
            for it in list_aux:
                solit= SolicitudItem(solicitud.id, it.id)
                db_session.add(solit)
                db_session.commit()

            flash('La solicitud ha sido registrada con exito','info')
            return redirect('/solicitud/administrarsolicitud')
        except DatabaseError, e:
            if e.args[0].find('duplicate key value violates unique')!=-1:
                flash('Clave unica violada por favor ingrese otro NUMERO de Solicitud' ,'error')
            else:
                flash('Error en la Base de Datos' + e.args[0],'error')
            return render_template('solicitud/nuevasolicitud.html', form= form, items= items)
示例#2
0
def agregaritemsol():
    """ Funcion para asignar Items a una solicitud""" 
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    if  request.args.get('id_sol') == None:
        id_sol= request.form.get('id')
    else:
        id_sol=request.args.get('id_sol')

    sol = db_session.query(SolicitudCambio).filter_by(id=id_sol).first()
    if sol.estado != 'N' :
        flash('No se pueden agregar Items a Solicitudes que hayan sido enviadas para su Aprobacion','info')
        return render_template('solicitud/administrarsolicitud.html')         
    form = SolicitudFormulario(request.form,sol) 
    solicitud = db_session.query(SolicitudCambio).filter_by(id=sol.id).first() 
    itemssol=  db_session.query(Item).join(SolicitudItem, Item.id== SolicitudItem.id_item).filter(SolicitudItem.id_solicitud== id_sol ).filter(Item.estado=='B').all()   
    item_aux= db_session.query(Item).join(SolicitudItem, Item.id== SolicitudItem.id_item).filter(SolicitudItem.id_solicitud== id_sol).first()    
    form.estado.data = 'Nueva'
    itemsdisp = db_session.query(Item).from_statement("Select it.*  from item it, "+ 
                        " (Select  i.codigo cod, max(i.version) vermax from item i, fase f  where i.id_fase = f.id "+
                        " and f.id_proyecto = "+str(session['pry'])+"  group by codigo order by 1 ) s "+
                        " where it.codigo = cod and it.version= vermax and (it.estado = 'B')  and it.id not in (select id_item from solicitud_item where id_solicitud in (select id from solicitud_cambio " +
                        " where id_proyecto = "+str(session['pry'])+" and (estado='N' or estado ='E')) ) order by it.codigo " )
    if request.method == 'POST' and form.validate(): 
        items=request.form.getlist('selectitem')
        try:
            list_aux=[]
            for it in items :
                i = db_session.query(Item).filter_by(id=it).first()    
                list_aux.append(i)

            if list_aux == None or list_aux == []:
                flash('Debe seleccionar un item','info')
                return render_template('solicitud/administrarsolicitud.html')         
                    
            #se guarda la sol junto con los item pertenecientes al mismo          
            for it in list_aux:
                solit= SolicitudItem(solicitud.id, it.id)
                db_session.add(solit)
                db_session.commit()
     
            flash('Se agrego el Item con Exito','info')   
            return redirect('/solicitud/administrarsolicitud')
        except DatabaseError, e:
            flash('Error en la Base de Datos' + e.args[0],'error')
            return render_template('solicitud/agregaritemsol.html', form=form,  items= itemsdisp)  
示例#3
0
def quitaritemsol():
    """ Funcion para quitar Items de una sol""" 
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
   
    if  request.args.get('id_sol') == None:
        id_sol= request.form.get('id')
    else:
        id_sol=request.args.get('id_sol')    
    sol = db_session.query(SolicitudCambio).filter_by(id=id_sol).first()  
    if sol.estado != 'N' :
        flash('No se pueden eliminar Items a Solicitudes que hayan sido enviadas para su Aprobacion','info')
        return render_template('solicitud/administrarsolicitud.html')     
    form = SolicitudFormulario(request.form,sol) 
    #solicitud = db_session.query(SolicitudCambio).filter_by(id= sol.id).first() 
    #itemssol=  db_session.query(SolicitudItem).join(Item, SolicitudItem.id_item== Item.id).filter(SolicitudItem.id_solicitud== sol.id ).all()   
    #itemssol=  db_session.query(SolicitudItem).from_statement("select * from item where id in(select id_item from solicitud_item where id_solicitud='"+str(sol.id)+"')")
    itemssol=  db_session.query(Item).join(SolicitudItem, Item.id== SolicitudItem.id_item).filter(SolicitudItem.id_solicitud== sol.id ).all()   
    if request.method == 'POST' and form.validate(): 
        items=request.form.getlist('selectitem')
        try:
            list_aux=[]
            if len(itemssol) == len(items):
                flash('La Solicitud no puede quedarse sin Items','info')   
                return redirect('/solicitud/administrarsolicitud')
            for it in items :
                i = db_session.query(Item).filter_by(id=it).first()    
#                item = Item(i.codigo, i.nombre, i.descripcion, 'A', i.complejidad, today, i.costo, 
#                  session['user_id']  , i.version +1 , i.id_fase , i.id_tipo_item , i.archivo)            
#                db_session.add(item)
#                db_session.commit()
                list_aux.append(i)
                
            #se elimina el id de los item de la sol          
            for it in list_aux:
                s = db_session.query(SolicitudItem).filter_by(id_item=it.id).first()  
                db_session.delete(s)
                db_session.commit()
                 
            flash('Se quito el Item con Exito','info')   
            return redirect('/solicitud/administrarsolicitud')
        except DatabaseError, e:
            flash('Error en la Base de Datos' + e.args[0],'error')
            return render_template('solicitud/quitaritemsol.html', form=form,  items=itemssol)
示例#4
0
def editarsolicitud():
    """ Funcion para editar registros de la tabla Solicitud""" 
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')

    today = datetime.date.today()
    pro = db_session.query(Proyecto).filter_by(id=session['pry']).first()
    if  request.args.get('id') == None:
        id_sol= request.form.get('id')
    else:
        id_sol=request.args.get('id')
    s = db_session.query(SolicitudCambio).filter_by(id=id_sol).filter_by(id_proyecto=session['pry']).first()
    itemssol=  db_session.query(Item).from_statement("select * from item where id in(select id_item from solicitud_item where id_solicitud="+str(id_sol)+")")  
    form = SolicitudFormulario(request.form,s)
    solicitud = db_session.query(SolicitudCambio).filter_by(id=id_sol).filter_by(id_proyecto=session['pry']).first()  
    form.fecha.data = today
    form.id_proyecto.data = pro.nombre
    form.id_usuario.data = current_user.usuario
    form.cant_votos.data = 0
    if pro.estado != 'P' :
        flash('No se pueden editar Solicitudes a un Proyecto que no se encuentre En Progreso','info')
        return render_template('solicitud/administrarsolicitud.html')
    if solicitud.estado != 'N' :
        flash('No se pueden modificar Solicitudes que hayan sido enviadas para su Aprobacion','info')
        return render_template('solicitud/administrarsolicitud.html')
    if solicitud.estado=='N':
        form.estado.data='Nueva'
    if request.method == 'POST' and form.validate():
        try:
            form.populate_obj(solicitud)
            if form.estado.data=='Nueva':
                solicitud.estado='N'
            solicitud.id_proyecto=pro.id
            solicitud.id_usuario=current_user.id
            db_session.merge(solicitud)
            db_session.commit()
            return redirect('/solicitud/administrarsolicitud')
        except DatabaseError, e:
            flash('Error en la Base de Datos' + e.args[0],'error')
            return render_template('solicitud/editarsolicitud.html', form=form, items=itemssol)