Example #1
0
def editarproyecto():
    """ Se obtiene la fecha actual para almacenar la fecha de ultima actualizacion """
    if not current_user.is_authenticated():
        flash('Debe loguearse primeramente!!!!', 'loggin')
        return render_template('index.html')
    
    permission = UserRol('ADMINISTRADOR')
    if permission.can():
        today = datetime.date.today()
        #init_db(db_session)
        r2 = db_session.query(Rol).filter_by(codigo='LIDER PROYECTO').first()
        p = db_session.query(Proyecto).filter_by(nombre=request.args.get('nom')).first()  
        form = ProyFormulario(request.form,p)
        proyecto = db_session.query(Proyecto).filter_by(nombre=form.nombre.data).first()
        form.id_usuario_lider.choices= [(u.id, u.nombre + " " + u.apellido) for u in db_session.query(Usuario).order_by(Usuario.nombre).all()]  
        mc = proyecto.id_usuario_lider
        if proyecto.estado == 'N' :
            form.estado.data = 'Nuevo'
        elif proyecto.estado == 'P' :
            form.estado.data = 'En Progreso'
        elif proyecto.estado == 'A' :
            form.estado.data = 'Anulado'
        elif proyecto.estado == 'F' :
            form.estado.data = 'Finalizado'
        if request.method == 'POST' and form.validate():
            if form.fecha_inicio.data > form.fecha_fin.data :
                flash('La fecha de inicio no puede ser mayor que la fecha de finalizacion','error')
                return render_template('proyecto/editarproyecto.html', form=form)
            if form.cant_miembros.data %2 == 0 :
                flash('La cantidad maxima de miembros debe ser impar','error')
                return render_template('proyecto/editarproyecto.html', form=form) 
            try:
                form.populate_obj(proyecto)
                proyecto.fecha_ultima_mod = today
                if form.estado.data == 'Nuevo' :
                    proyecto.estado = 'N'
                elif form.estado.data == 'En Progreso' :
                    proyecto.estado = 'P'
                elif form.estado.data == 'Anulado' :
                    proyecto.estado = 'A'
                elif form.estado.data == 'Finalizado' :
                    proyecto.estado = 'F'
                db_session.merge(proyecto)
                db_session.commit()
            
                if mc != proyecto.id_usuario_lider:
                    miembrosComite = db_session.query(MiembrosComite).filter_by(id_usuario=mc).filter_by(id_proyecto=proyecto.id).first()  
                    #init_db(db_session)
                    db_session.delete(miembrosComite)
                    db_session.commit()

                    lr = db_session.query(UsuarioRol).filter_by(id_rol=r2.id).filter_by(id_usuario=mc).filter_by(id_proyecto=proyecto.id).first()  
                    #init_db(db_session)
                    db_session.delete(lr)
                    db_session.commit()
                    
                    miembro = MiembrosComite(proyecto.id, proyecto.id_usuario_lider)
                    db_session.add(miembro)
                    db_session.commit()
            
                    li = UsuarioRol(r2.id, proyecto.id_usuario_lider, proyecto.id)
                    db_session.add(li)
                    db_session.commit()
                flash('El Proyecto ha sido modificado con exito','info')
                return redirect('/proyecto/administrarproyecto')
            except DatabaseError, e:
                flash('Error en la Base de Datos' + e.args[0],'error')
                return render_template('proyecto/editarproyecto.html', form=form)
        else:
            flash_errors(form)
        return render_template('proyecto/editarproyecto.html', form=form)