def update(self, entidad): """B{Metodo que actualiza una entidad en la base de datos, y almacena su modificacion en el historial} - B{Parametros:} - B{entidad:} entidad a ser persistida """ DBSession.merge(entidad) if (self._request != None): #no va a tener user en caso de que venga del pyunit if ('user' in self._request.session): historia = Historial(entidad.__tablename__, entidad._id, "MODIFICACION", self._request.session['user']._id) DBSession.add(historia) self.notificar(entidad, historia)
def borrar(self, entidad): """B{Metodo que retorna elimina permanentemente una entidad y almacena su eliminacion en el historial} - B{Parametros:} - B{entidad:} entidad a ser eliminada """ DBSession.delete(entidad) if (self._request != None): #no va a tener user en caso de que venga del pyunit if ('user' in self._request.session): historia = Historial(entidad.__tablename__, entidad._id, "ELIMINACION", self._request.session['user']._id) DBSession.add(historia) self.notificar(entidad, historia)
def get_query(self): """B{Metodo que retorna una query para que se le pueda aplicar filtros} - B{Retorna:} query que puese ser usado para aplicar metodos como - filter - first() - all() """ # queryReal = DBSession.query(self.get_clase()) query = DBSession.query(self.get_clase()) if self._request != None: query.sesion_yapp = self._request.session query.clase = self.get_clase() return query
def main(argv=sys.argv): if len(argv) != 2: usage(argv) config_uri = argv[1] setup_logging(config_uri) settings = get_appsettings(config_uri) engine = engine_from_config(settings, 'sqlalchemy.') DBSession.configure(bind=engine) Base.metadata.create_all(engine) entidad_dao = PrivilegioDAO(None) items = entidad_dao.get_all() if (len(items) == 0): with transaction.manager: entidad = Privilegio("Proyecto") DBSession.add(entidad) entidad = Privilegio("Fase") DBSession.add(entidad) entidad = Privilegio("Item") DBSession.add(entidad) entidad = Privilegio("Esquema") DBSession.add(entidad) entidad = Privilegio("Aprobar Item") DBSession.add(entidad) entidad = Privilegio("Iniciar proyecto") DBSession.add(entidad) items = RolEstadoDAO(None).get_all() if (len(items) == 0): with transaction.manager: estado = RolEstado("Activo") DBSession.add(estado) estado = RolEstado("Suspendido") DBSession.add(estado) items = TipoRecursoDAO(None).get_all() if (len(items) == 0): with transaction.manager: tipo = TipoRecurso("Persona") DBSession.add(tipo) tipo = TipoRecurso("Bien") DBSession.add(tipo) tipo = TipoRecurso("Material") DBSession.add(tipo) # items = TipoItemDAO(None).get_all() # if (len(items) == 0): # with transaction.manager: # tipoItem = TipoItem("Tipo item por defecto", "Tipo po defecto", 0, "TD", False) # DBSession.add(tipoItem); items = RolFinalDAO(None).get_query().filter( RolFinal._email == "admin").first() if (items == None): with transaction.manager: estadoActivo = RolEstadoDAO(None).get_query().filter( RolEstado._estado == "Activo").first() admin = RolFinal("admin", estadoActivo, "admin", "21232f297a57a5a743894a0e4a801fc3") DBSession.add(admin) manager = RolFinal("Manager", estadoActivo, "manager", "1d0258c2440a8d19e716292b231e3190") DBSession.add(manager) lider = RolFinal("Lider de proyecto", estadoActivo, "lider", "64ff9e4a58fe52fb1a55987f34bc979d") DBSession.add(lider) desarrollador = RolFinal("Desarrollador", estadoActivo, "desarrollador", "21878e2b7bebe62feae406d88a68fab5") DBSession.add(desarrollador) print "Creando permisos" with transaction.manager: admin = Permisos("Roles") DBSession.add(admin) admin = Permisos("Proyectos") DBSession.add(admin) admin = Permisos("Fases") DBSession.add(admin) admin = Permisos("Esquemas") DBSession.add(admin) admin = Permisos("Tipo de items") DBSession.add(admin) admin = Permisos("Items") DBSession.add(admin) admin = Permisos("Suscripciones") DBSession.add(admin) admin = Permisos("Linea base") DBSession.add(admin) admin = Permisos("Recursos") DBSession.add(admin) admin = Permisos("Calculo de impacto") DBSession.add(admin) admin = Permisos("Ver costado derecho") DBSession.add(admin) admin = Permisos("Diagrama de gantt") DBSession.add(admin) admin = Permisos("Unidad de trabajo") DBSession.add(admin) print 'Creando permisos y roles' with transaction.manager: rol = RolDAO(None).get_query().filter(Rol._nombre == "admin").first() permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Roles").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Proyectos").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Fases").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Esquemas").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Tipo de items").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Items").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Suscripciones").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Linea base").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Recursos").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Calculo de impacto").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Ver costado derecho").first() permiso_rol = PermisosRoles(permiso, rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Diagrama de gantt").first() permiso_rol = PermisosRoles(permiso, rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Unidad de trabajo").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) rol = RolDAO(None).get_query().filter( Rol._nombre == "Manager").first() permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Fases").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Esquemas").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Tipo de items").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Suscripciones").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Linea base").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Recursos").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Calculo de impacto").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Ver costado derecho").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) rol = RolDAO(None).get_query().filter( Rol._nombre == "Lider de proyecto").first() permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Fases").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Esquemas").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Tipo de items").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Suscripciones").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Linea base").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Recursos").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Calculo de impacto").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Ver costado derecho").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) rol = RolDAO(None).get_query().filter( Rol._nombre == "Desarrollador").first() permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Esquemas").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Suscripciones").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Recursos").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Calculo de impacto").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol) permiso = PermisosDAO(None).get_query().filter( Permisos._nombre == "Ver costado derecho").first() permiso_rol = PermisosRoles(permiso, rol) DBSession.add(permiso_rol)
def ag_atributos_tipos_item(request): if (request.method == 'GET'): item_dao = ItemDAO(request) fase_id = request.GET.get('id') #Parte cocho if request.GET.get('id_linea_base') != None: return get_items_con_linea_base(request) if request.GET.get('linea_base') == "false" and request.GET.get('id') != None: return get_items_sin_linea_base_con_fase(request); #END parte cocho if request.GET.get('esquema') != None: if request.GET.get('disponibles') == "true": todas = item_dao.get_items_fase(fase_id) entidades_item_id = item_dao.get_items_esquema(request.GET.get('esquema')) for item in todas : for entidad in entidades_item_id: if item._id == entidad._id: todas.remove(item) entidades_item_id = todas else: entidades_item_id = item_dao.get_items_esquema(request.GET.get('esquema')) elif request.GET.get('tipo') == "ELIMINADO": entidades_item_id = item_dao.get_items_eliminados(fase_id) elif request.GET.get('tipo') == "VERSIONES": entidades_item_id = item_dao.get_items_por_version(request.GET.get("item_id")) elif fase_id == None: return Response(json.dumps({'sucess': 'true', 'lista':[]})) else: entidades_item_id = item_dao.get_items_fase(fase_id); lista = []; p = Pickler(True, None) for entidad in entidades_item_id: rd = ItemDAO(request) padre = rd.get_by_id(entidad._padre_item_id) antecesor = rd.get_by_id(entidad._antecesor_item_id) entidadLinda = ItemDTO(entidad) if padre != None: entidadLinda._padre = ItemDTO(padre) if antecesor != None: entidadLinda._antecesor = ItemDTO(antecesor) lista.append(p.flatten(entidadLinda)) j_string = p.flatten(lista) a_ret = json.dumps({'sucess': True, 'lista':j_string}) return Response(a_ret) elif (request.method == 'POST'): u = Unpickler() entidad = u.restore(request.json_body); dao_fase = FaseDAO(request) fase = dao_fase.get_by_id(entidad["_fase"]) if entidad['_tipo_item'] == '': return Response(json.dumps({'sucess': 'false', 'message':'Debe seleccionar un Tipo de Item para guardar'})) dao_tipo_item = TipoItemDAO(request) tipo_item = dao_tipo_item.get_by_id(entidad["_tipo_item"]["_id"]) dao_item_ante = ItemDAO(request) if(entidad["_antecesor"] == "" or entidad["_antecesor"] == None): antecesor = None antecesor_id = None else: antecesor = dao_item_ante.get_by_id(entidad["_antecesor"]) antecesor_id = antecesor._id dao_item_padre = ItemDAO(request) if(entidad["_padre"] == "" or entidad["_padre"] == None): padre = None padre_id = None else: padre = dao_item_padre.get_by_id(entidad["_padre"]) padre_id = padre._id seq = Sequence('item_id_seq') item_id = DBSession.execute(seq) if entidad["_fecha_inicio"]!= None and len(entidad["_fecha_inicio"])>1: if entidad["_fecha_inicio"].find("T")>=0: formato_entrada = "%Y-%m-%dT%H:%M:%S" fecha_inicio = datetime.datetime.strptime(entidad["_fecha_inicio"],formato_entrada) else: formato_entrada = "%Y-%m-%d %H:%M:%S" fecha_inicio = datetime.datetime.strptime(entidad["_fecha_inicio"],formato_entrada) else: fecha_inicio = "" if padre != None and fecha_inicio != "": if len(padre._fecha_inicio) > 1: if padre._fecha_inicio.find("T")>=0: formato_entrada = "%Y-%m-%dT%H:%M:%S" else: formato_entrada = "%Y-%m-%d %H:%M:%S" padre_inicio = datetime.datetime.strptime(padre._fecha_inicio, formato_entrada) if fecha_inicio < padre_inicio: return Response(json.dumps({'sucess': 'false', 'message':'La fecha es menor a la fecha de inicio del padre'})) if antecesor != None and fecha_inicio != "": if len(antecesor._fecha_inicio)>1: if antecesor._fecha_inicio.find("T")>=0: formato_entrada = "%Y-%m-%dT%H:%M:%S" else: formato_entrada = "%Y-%m-%d %H:%M:%S" antecesor_inicio = datetime.datetime.strptime(antecesor._fecha_inicio, formato_entrada) if fecha_inicio < antecesor_inicio: return Response(json.dumps({'sucess': 'false', 'message':'La fecha es menor a la fecha de inicio del antecesor'})) nuevo_item = Item(item_id, entidad["_nombre"], tipo_item, fase, entidad["_duracion"], entidad["_descripcion"], entidad["_condicionado"], entidad["_version"], entidad["_estado"], fecha_inicio, entidad["_completado"], padre_id, antecesor_id, entidad["_color"]) itemDao = ItemDAO(request) itemDao.crear(nuevo_item) itemDao.actualizarEstadosFaseyProyecto(nuevo_item) nuevo_item = ItemDTO(nuevo_item) lista = [] p = Pickler() lista.append(p.flatten(nuevo_item)) j_string = p.flatten(lista) if (request.GET.get('actualizar') == "true"): if (request.GET.get('rev') == True): itemDao.actualizarReferenciasItemNuevaVersion(nuevo_item._id, entidad["_id"]) else: itemDao.actualizarReferenciasItemNuevaVersion(nuevo_item._id) return Response(json.dumps({'sucess': 'true', 'lista':j_string}))
def tearDown(self): del self.testapp from yapp.models import DBSession DBSession.remove()