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)