Exemple #1
0
    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)
Exemple #2
0
    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)
Exemple #3
0
    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
Exemple #4
0
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)
Exemple #5
0
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}))
Exemple #6
0
 def tearDown(self):
     del self.testapp
     from yapp.models import DBSession
     DBSession.remove()