Esempio n. 1
0
def rest(request):

    if (request.method == 'POST'):
        try:
            u = Unpickler()
            objeto = u.restore(request.json_body)
            if (objeto['_fase'] == ''):
                raise FaseNoEncontradaException()
            fase_dao = FaseDAO(request)
            fase = fase_dao.get_by_id(objeto['_fase'])

            if (objeto['_items'] == None or objeto['_items'] == ''):
                raise NoItemLineaBaseException()
            item_dao = ItemDAO(request)
            items = []
            for item_id in objeto['_items']:
                items.append(item_dao.get_by_id(item_id))

            dao_item = ItemDAO(request)
            nItems = []
            for item in items:
                n_item = Item(item._item_id, item._nombre, item._tipo_item,
                              item._fase, item._duracion, item._descripcion,
                              item._condicionado, item._version + 1,
                              "BLOQUEADO", item._fecha_inicio,
                              item._completado, item._padre_item_id,
                              item._antecesor_item_id, item._color)
                dao_item.crear(n_item)
                nItems.append(n_item)
                actualizar_referencias_item(n_item, item_dao, item._id, False)
                item_dao.actualizarEstadosFaseyProyecto(n_item)
                item_dao.actualizarReferenciasItemNuevaVersion(n_item._id)

            linea_base = LineaBase(objeto['_nombre'], objeto['_descripcion'],
                                   fase, nItems)
            dao = LineaBaseDAO(request)
            dao.crear(linea_base)
            p = Pickler()
            aRet = p.flatten(linea_base)
            return Response(json.dumps({'sucess': 'true', 'entidades': aRet}))
        except FaseNoEncontradaException, e:
            print e
            return Response(json.dumps({'sucess': 'false'}))
        return Response(json.dumps({'sucess': 'false'}))
Esempio n. 2
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}))
Esempio n. 3
0
def bm_atributo(request):
    if (request.method == 'PUT' or request.method == 'DELETE'):
        u = Unpickler()
        
        
        entidad = u.restore(request.json_body);
        item_dao = ItemDAO(request);
        dao_fase = FaseDAO(request)
        fase = dao_fase.get_by_id(entidad["_fase"]["_id"])
        
        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:
            if isinstance(entidad["_antecesor"], int) != True:
                antecesor_id = entidad["_antecesor"]["_id"]
                antecesor = dao_item_ante.get_by_id(antecesor_id)
            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:
            if isinstance(entidad["_padre"], int) != True:
                padre_id = entidad["_padre"]["_id"]
                padre = dao_item_padre.get_by_id(padre_id)
            else:
                padre = dao_item_padre.get_by_id(entidad["_padre"])
                padre_id = padre._id
        item_viejo = item_dao.get_by_id(entidad["id"])
        id_viejo = item_viejo._id;
        
        formato_entrada = "%Y-%m-%dT%H:%M:%S"
        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 de inicio asignada 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"
                if len(antecesor._fecha_inicio)>1:
                    antecesor_inicio = datetime.datetime.strptime(antecesor._fecha_inicio, formato_entrada)
                    if fecha_inicio <  antecesor_inicio:
                        return Response(json.dumps({'sucess': 'false', 'message':'La fecha de inicio asignada es menor a la fecha de inicio del antecesor'}))
        
        
        if entidad['_estado'] == "APROBADO":
            print "HOLAAAAAAAAAAAAAAAAAAAAAA"
            print entidad['_padre']
            item_padre = get_entidad(entidad['_padre'], item_dao)
            if (item_padre!= None):
                if item_padre._estado == 'ELIMINADO' or item_padre._estado == 'REVISION':
                    return Response(json.dumps({'sucess': 'false', 'message':('No se puede Aprobar. El Padre del Item se encuentra en estado: ' + str(item_padre._estado))}))
            else:
                item_antecesor = get_entidad(entidad['_antecesor'], item_dao)
                fase_antecesora = get_fase_antecesora(request, fase)
                if fase_antecesora != None:
                    if item_antecesor == None:
                        return Response(json.dumps({'sucess': 'false', 'message':'No se puede Aprobar. El Item no tiene antecesor ni padre'}))
                    else :
                        if item_antecesor._estado == 'ELIMINADO' or item_antecesor._estado == 'REVISION':
                            return Response(json.dumps({'sucess': 'false', 'message':('No se puede Aprobar. El Antecesor del Item se encuentra en estado: ' + str(item_antecesor._estado))}))
                        if item_antecesor._linea_base_id == None :
                            return Response(json.dumps({'sucess': 'false', 'message':'No se puede Aprobar. Antecesor no tiene linea base'}))

        nuevo_item = Item(item_viejo._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"])

        if request.method == "DELETE":
            nuevo_item._estado = "ELIMINADO"
            nuevo_item._version += 1

        item_dao.crear(nuevo_item);
        padre = item_dao.get_by_id(nuevo_item._padre_item_id)
        antecesor = item_dao.get_by_id(nuevo_item._antecesor_item_id)
        if (nuevo_item._estado == "APROBADO" or nuevo_item._estado == "BLOQUEADO") == False: 
            actualizar_referencias_item(nuevo_item, item_dao, id_viejo)
        else:
            actualizar_referencias_item(nuevo_item, item_dao, id_viejo, False)
        item_dao.actualizarEstadosFaseyProyecto(nuevo_item)
        nuevo_item = ItemDTO(nuevo_item)
        if padre != None:
            nuevo_item._padre = ItemDTO(padre)
        if antecesor != None:
            nuevo_item._antecesor = ItemDTO(antecesor)
        p = Pickler(False, None)
        aRet = p.flatten(nuevo_item)
        if (request.GET.get('actualizar') == "true"):
            if (request.GET.get('rev') == "true"):
                item_dao.actualizarReferenciasItemNuevaVersion(nuevo_item._id, entidad["id"])
            else:
                item_dao.actualizarReferenciasItemNuevaVersion(nuevo_item._id)
        return Response(json.dumps({'sucess': 'true', 'lista':aRet}))