示例#1
0
def AModifObjetivo():
    #POST/PUT parameters
    params  = request.get_json()
    results = [{'label':'/VProducto', 'msg':['Objetivo actualizado']}, {'label':'/VProducto', 'msg':['Error al modificar objetivo']}, ]
    res     = results[1] 
    
    # Obtenemos el id del producto
    idPila  = int(session['idPila'])
    
    # Extraemos los parámetros
    idObjetivo     = params['idObjetivo']  
    newDescription = params['descripcion'] 
    newType        = params['transversal'] 
        
    # Conseguimos el objetivo a modificar
    oObjetivo    = objective()
    objetivoDesc = oObjetivo.searchIdObjective(idObjetivo) 

    # Modificamos la descripción del objetivo    
    result       = oObjetivo.updateObjective(objetivoDesc[0].O_descObjective , newDescription,newType,idPila) 

    if result:
        res = results[0]
        
    res['label'] = res['label'] + '/' + str(idPila)

    if "actor" in res:
        if res['actor'] is None:
            session.pop("actor", None)
        else:
            session['actor'] = res['actor']
            
    return json.dumps(res)
示例#2
0
def AElimObjetivo():
    #GET parameter
    results = [{'label':'/VProducto', 'msg':['Objetivo eliminado']}, {'label':'/VProducto', 'msg':['No se pudo eliminar este objetivo']}, ]
    res     = results[1] 
    
    # Obtenemos el id del producto
    idPila       = int(session['idPila'])
    idObjective  = int(session['idObjective'])
    
    # Conseguimos el objetivo a eliminar  
    oObjetivo    = objective()
    found = oObjetivo.searchIdObjective(idObjective) 
    
    oObjUserHistory = objectivesUserHistory()
    result = oObjUserHistory.searchidUserHistoryIdObjective(idObjective)
    
    # Verificamos si el objetivo está asociado a una historia
    if (result == []):
        deleted = oObjetivo.deleteObjective(found[0].O_descObjective,idPila) 

        if deleted:
            res = results[0]  

    res['label'] = res['label'] +  '/' + str(idPila)

    if "actor" in res:
        if res['actor'] is None:
            session.pop("actor", None)
        else:
            session['actor'] = res['actor']
    return json.dumps(res)
示例#3
0
def VObjetivo():
    #GET parameter
    res = {}
    
    # Obtenemos el id del producto y del objetivo
    idPila      = int(session['idPila'])
    idObjective = int(request.args.get('idObjetivo'))
    boolean = {0:False,1:True}
    
    if "actor" in session:
        res['actor']=session['actor']
        
    if 'usuario' not in session:
      res['logout'] = '/'
      return json.dumps(res)
  
    res['usuario'] = session['usuario']
    
    # Determinamos el tipo de objetivo a través de su id
    oObjective = objective()
    result     = oObjective.searchIdObjective(idObjective)
    number     = int(result[0].O_objType)
    istransver = boolean[number]

    # Mostramos los objetivos en la vista
    res['fObjetivo_opcionesTransversalidad'] = [{'key':True, 'value':'Si'},{'key':False, 'value':'No'}]
    res['fObjetivo'] = {'idObjetivo':idObjective, 'descripcion':result[0].O_descObjective , 'transversal':istransver}    
    res['idPila']    = idPila
    session['idObjective'] = idObjective

    return json.dumps(res)
示例#4
0
def ACrearObjetivo():
    #POST/PUT parameters
    params  = request.get_json()
    results = [{'label':'/VProducto', 'msg':['Objetivo creado']}, {'label':'/VCrearObjetivo', 'msg':['Error al crear objetivo']}, ]
    res     = results[1]
    
    # Obtenemos el id del producto
    idPila  = int(session['idPila'])
    
    if request.method == 'POST':
    
        # Extraemos los parámetros
        newDescription      = params['descripcion']
        transverseObjective = params['transversal']
        
        oObjective = objective()
        result     = oObjective.insertObjective(newDescription,idPila,transverseObjective)

        if result:
            res = results[0]

    res['label'] = res['label'] + '/' + str(idPila)
    
    if "actor" in res:
        if res['actor'] is None:
            session.pop("actor", None)
        else:
            session['actor'] = res['actor']
            
    return json.dumps(res)
示例#5
0
def VCrearHistoria():
    res = {}

    # Obtenemos el id del producto.
    idPila = int(request.args.get('idPila',1))

    if "actor" in session:
        res['actor']=session['actor']

    scale = {1:'Alta',2:'Media',3:'Baja'}

    # Obtenemos los datos asociados al producto
    oBacklog      = backlog()
    oObjective    = objective()

    actorList     = oBacklog.actorsAsociatedToProduct(idPila)
    accionList    = oBacklog.accionsAsociatedToProduct(idPila)
    objectiveList = oBacklog.objectivesAsociatedToProduct(idPila)
    historyList   = oBacklog.userHistoryAsociatedToProduct(idPila)

    # Obtenemos todos los objetivos que son no trasnversales.
    for object in objectiveList:
        idObjective = object.O_idObjective
        transverse  = oObjective.verifyObjectiveTransverse(idObjective)
        if int(transverse) == 1:
            objectiveList.remove(object)

    # Hallamos el tipo de escala seleccionado para el producto.
    typeScale = oBacklog.scaleType(idPila)

    # Obtenemos el tipo de escala asociado al producto (id,valor)
    resultScale = []
    if typeScale == 1:
        resultScale = [(i,scale[i]) for i in range(1,3+1)]
    elif typeScale == 2:
        resultScale = [(i,i) for i in range(1,20+1)]

    # Valores dependientes del proyecto.
    res['fHistoria_opcionesActores']       = [{'key':act.A_idActor ,'value':act.A_nameActor }for act in actorList]
    res['fHistoria_opcionesAcciones']      = [{'key':acc.AC_idAccion,'value':acc.AC_accionDescription}for acc in accionList]
    res['fHistoria_opcionesAcciones'].append({'key':0,'value':'Seleccione una acción'})
    res['fHistoria_opcionesObjetivos']     = [{'key':obj.O_idObjective ,'value':obj.O_descObjective}for obj in objectiveList]
    res['fHistoria_opcionesHistorias']     = [{'key':hist.UH_idUserHistory,'value':hist.UH_codeUserHistory}for hist in historyList]
    res['fHistoria_opcionesHistorias'].append({'key':0,'value':'Ninguno'})
    res['fHistoria_opcionesTiposHistoria'] = [{'key':1,'value':'Opcional'},{'key':2,'value':'Obligatoria'}]
    res['fHistoria_opcionesTiposHistoria'].append({'key':0,'value':'Seleccione un tipo de acción'})
    res['fHistoria_opcionesPrioridad']     = [{'key':scale[0], 'value':scale[1]}for scale in resultScale]
    res['fHistoria_opcionesPrioridad'].append({'key':0,'value':'Seleccione una prioridad'})
    res['fHistoria'] = {'super':0, 'idPila':idPila,'actores':[],'objetivos':[],'accion':0,'tipo':0,'prioridad':0}
    res['idPila']    = idPila

    return json.dumps(res)
示例#6
0
def VCrearHistoria():
    res = {}
    
    # Obtenemos el id del producto.
    idPila = int(request.args.get('idPila',1))
    
    if "actor" in session:
        res['actor']=session['actor']
        
    scale = {1:'Alta',2:'Media',3:'Baja'}
    
    # Obtenemos los datos asociados al producto
    oBacklog      = backlog() 
    oObjective    = objective()  
      
    actorList     = oBacklog.actorsAsociatedToProduct(idPila)
    accionList    = oBacklog.accionsAsociatedToProduct(idPila)
    objectiveList = oBacklog.objectivesAsociatedToProduct(idPila)
    historyList   = oBacklog.userHistoryAsociatedToProduct(idPila)

    # Obtenemos todos los objetivos que son no trasnversales.        
    for object in objectiveList:
        idObjective = object.O_idObjective 
        transverse  = oObjective.verifyObjectiveTransverse(idObjective)
        if int(transverse) == 1:
            objectiveList.remove(object)
    
    # Hallamos el tipo de escala seleccionado para el producto.
    typeScale = oBacklog.scaleType(idPila)
    
    # Obtenemos el tipo de escala asociado al producto (id,valor)
    resultScale = []
    if typeScale == 1:
        resultScale = [(i,scale[i]) for i in range(1,3+1)]
    elif typeScale == 2:
        resultScale = [(i,i) for i in range(1,20+1)]
    
    # Valores dependientes del proyecto.
    res['fHistoria_opcionesActores']       = [{'key':act.A_idActor ,'value':act.A_nameActor }for act in actorList]
    res['fHistoria_opcionesAcciones']      = [{'key':acc.AC_idAccion,'value':acc.AC_accionDescription}for acc in accionList]
    res['fHistoria_opcionesAcciones'].append({'key':0,'value':'Seleccione una acción'})
    res['fHistoria_opcionesObjetivos']     = [{'key':obj.O_idObjective ,'value':obj.O_descObjective}for obj in objectiveList]
    res['fHistoria_opcionesHistorias']     = [{'key':hist.UH_idUserHistory,'value':hist.UH_codeUserHistory}for hist in historyList]
    res['fHistoria_opcionesHistorias'].append({'key':0,'value':'Ninguno'})
    res['fHistoria_opcionesTiposHistoria'] = [{'key':1,'value':'Opcional'},{'key':2,'value':'Obligatoria'}]
    res['fHistoria_opcionesTiposHistoria'].append({'key':0,'value':'Seleccione un tipo de acción'})
    res['fHistoria_opcionesPrioridad']     = [{'key':scale[0], 'value':scale[1]}for scale in resultScale]
    res['fHistoria_opcionesPrioridad'].append({'key':0,'value':'Seleccione una prioridad'})
    res['fHistoria'] = {'super':0, 'idPila':idPila,'actores':[],'objetivos':[],'accion':0,'tipo':0,'prioridad':0}
    res['idPila']    = idPila
     
    return json.dumps(res)
示例#7
0
def AModifObjetivo():
    #POST/PUT parameters
    params = request.get_json()
    results = [
        {
            'label': '/VProducto',
            'msg': ['Objetivo actualizado']
        },
        {
            'label': '/VProducto',
            'msg': ['Error al modificar objetivo']
        },
    ]
    res = results[1]

    # Obtenemos el id del producto
    idPila = int(session['idPila'])

    # Extraemos los parámetros
    idObjetivo = params['idObjetivo']
    newDescription = params['descripcion']
    newType = params['transversal']

    # Conseguimos el objetivo a modificar
    oObjetivo = objective()
    objetivoDesc = oObjetivo.searchIdObjective(idObjetivo)

    # Modificamos la descripción del objetivo
    result = oObjetivo.updateObjective(objetivoDesc[0].O_descObjective,
                                       newDescription, newType, idPila)

    if result:
        res = results[0]

    res['label'] = res['label'] + '/' + str(idPila)

    if "actor" in res:
        if res['actor'] is None:
            session.pop("actor", None)
        else:
            session['actor'] = res['actor']

    return json.dumps(res)
示例#8
0
def VObjetivo():
    #GET parameter
    res = {}

    # Obtenemos el id del producto y del objetivo
    idPila = int(session['idPila'])
    idObjective = int(request.args.get('idObjetivo'))
    boolean = {0: False, 1: True}

    if "actor" in session:
        res['actor'] = session['actor']

    if 'usuario' not in session:
        res['logout'] = '/'
        return json.dumps(res)

    res['usuario'] = session['usuario']

    # Determinamos el tipo de objetivo a través de su id
    oObjective = objective()
    result = oObjective.searchIdObjective(idObjective)
    number = int(result[0].O_objType)
    istransver = boolean[number]

    # Mostramos los objetivos en la vista
    res['fObjetivo_opcionesTransversalidad'] = [{
        'key': True,
        'value': 'Si'
    }, {
        'key': False,
        'value': 'No'
    }]
    res['fObjetivo'] = {
        'idObjetivo': idObjective,
        'descripcion': result[0].O_descObjective,
        'transversal': istransver
    }
    res['idPila'] = idPila
    session['idObjective'] = idObjective

    return json.dumps(res)
示例#9
0
def AElimObjetivo():
    #GET parameter
    results = [
        {
            'label': '/VProducto',
            'msg': ['Objetivo eliminado']
        },
        {
            'label': '/VProducto',
            'msg': ['No se pudo eliminar este objetivo']
        },
    ]
    res = results[1]

    # Obtenemos el id del producto
    idPila = int(session['idPila'])
    idObjective = int(session['idObjective'])

    # Conseguimos el objetivo a eliminar
    oObjetivo = objective()
    found = oObjetivo.searchIdObjective(idObjective)

    oObjUserHistory = objectivesUserHistory()
    result = oObjUserHistory.searchidUserHistoryIdObjective(idObjective)

    # Verificamos si el objetivo está asociado a una historia
    if (result == []):
        deleted = oObjetivo.deleteObjective(found[0].O_descObjective, idPila)

        if deleted:
            res = results[0]

    res['label'] = res['label'] + '/' + str(idPila)

    if "actor" in res:
        if res['actor'] is None:
            session.pop("actor", None)
        else:
            session['actor'] = res['actor']
    return json.dumps(res)
示例#10
0
def ACrearObjetivo():
    #POST/PUT parameters
    params = request.get_json()
    results = [
        {
            'label': '/VProducto',
            'msg': ['Objetivo creado']
        },
        {
            'label': '/VCrearObjetivo',
            'msg': ['Error al crear objetivo']
        },
    ]
    res = results[1]

    # Obtenemos el id del producto
    idPila = int(session['idPila'])

    if request.method == 'POST':

        # Extraemos los parámetros
        newDescription = params['descripcion']
        transverseObjective = params['transversal']

        oObjective = objective()
        result = oObjective.insertObjective(newDescription, idPila,
                                            transverseObjective)

        if result:
            res = results[0]

    res['label'] = res['label'] + '/' + str(idPila)

    if "actor" in res:
        if res['actor'] is None:
            session.pop("actor", None)
        else:
            session['actor'] = res['actor']

    return json.dumps(res)
示例#11
0
def VPrioridades():
    #GET parameter
    res = {}

    # Obtenemos el id del producto.
    idPila = int(session['idPila'])

    if "actor" in session:
        res['actor'] = session['actor']

    if 'usuario' not in session:
        res['logout'] = '/'
        return json.dumps(res)
    res['usuario'] = session['usuario']

    oActor = role()
    oAccion = accions()
    oObjective = objective()
    oBacklog = backlog()
    oUserHistory = userHistory()
    oActUserHist = actorsUserHistory()
    oObjUserHIst = objectivesUserHistory()

    # Obtenemos las historias de usuario asociadas al producto.
    userHistoriesList = oBacklog.userHistoryAsociatedToProduct(idPila)

    userHistories = []
    options = {1: 'podría ', 2: 'puede '}
    scale = {1: 'Alta', 2: 'Media', 3: 'Baja'}

    # Obtenemos el tipo de escala asociada al producto.
    typeScale = oBacklog.scaleType(idPila)

    # Obtenemos el tipo de escala asociado al producto (id,valor) y elvalor maximo de la escala
    if typeScale == 1:
        iterations = 3
        resultScale = [(i, scale[i]) for i in range(1, 3 + 1)]
    elif typeScale == 2:
        iterations = 20
        resultScale = [(i, i) for i in range(1, 20 + 1)]

    # Obtenemos los valores de cada historia en un diccionario y almacenamos esos
    # diccionarios en un arreglo.
    for hist in userHistoriesList:
        epic = oUserHistory.isEpic(hist.UH_idUserHistory)
        if not epic:
            result = oUserHistory.transformUserHistory(hist.UH_idUserHistory)
            userHistories.append(result)

    historiesSortedByPriority = []
    # Ordenamos las tuplas por prioridad
    for i in range(iterations + 1):
        for hist in userHistories:
            if hist['priority'] == i:
                historiesSortedByPriority.append(hist)
                userHistories.remove(hist)

    #Escala dependiente del proyecto
    res['fPrioridades_opcionesPrioridad'] = [{
        'key': scale[0],
        'value': scale[1]
    } for scale in resultScale]
    res['fPrioridades'] = {
        'idPila':
        idPila,
        'lista': [{
            'idHistoria':
            hist['idHistory'],
            'prioridad':
            hist['priority'],
            'enunciado':
            'En tanto ' + hist['actors'] + hist['accions'] + ' para ' +
            hist['objectives']
        } for hist in historiesSortedByPriority]
    }
    res['idPila'] = idPila

    return json.dumps(res)
示例#12
0
def VHistorias():
    #GET parameter
    res = {}

    # Obtenemos el id del producto y de la historia.
    idPila = int(request.args.get('idPila', 1))

    if "actor" in session:
        res['actor'] = session['actor']

    oTask = task()
    oActor = role()
    oAccion = accions()
    oObjective = objective()
    oBacklog = backlog()
    oUserHistory = userHistory()
    oActUserHist = actorsUserHistory()
    oObjUserHIst = objectivesUserHistory()

    # Obtenemos las historias asociadas al producto idPila.
    userHistoriesList = oBacklog.userHistoryAsociatedToProduct(idPila)

    pesos = []
    userHistories = []
    options = {1: 'podria ', 2: 'puede '}
    priorities = {0: 'Epica', 1: 'Alta', 2: 'Media', 3: 'Baja'}
    priorities2 = {i: str(i) for i in range(1, 20 + 1)}
    priorities2[0] = 'Epica'

    # Obtenemos el tipo de escala seleccionada en el producto asociado a la historia.
    typeScale = oBacklog.scaleType(idPila)

    # Obtenemos los valores de cada historia en un diccionario y almacenamos esos
    # diccionarios en un arreglo.
    for hist in userHistoriesList:
        result = oUserHistory.transformUserHistory(hist.UH_idUserHistory)
        userHistories.append(result)
        tupla = (hist.UH_idUserHistory,
                 oTask.historyWeight(hist.UH_idUserHistory))
        pesos.append(tupla)

    # Obtenemos el maximo de la escala
    if typeScale == 1:
        iterations = 3
    elif typeScale == 2:
        iterations = 20

    historiesSortedByPriority = []
    # Ordenamos las tuplas por prioridad
    for i in range(iterations + 1):
        idsHistories = []
        for hist in userHistories:

            if hist['priority'] == i:
                # Convertimos a escala Alta, Media, Baja si es necesario
                if typeScale == 1:
                    hist['priority'] = priorities[i]
                elif typeScale == 2:
                    hist['priority'] = priorities2[i]
                historiesSortedByPriority.append(hist)
                # Almacenamos los ids de las historias ordenadas
                idsHistories.append(hist['idHistory'])

        # Eliminamos de userHistories las historias ordenadas.
        for id in idsHistories:
            for hist in userHistories:
                if hist['idHistory'] == id:
                    userHistories.remove(hist)
                    break

    res['data0'] = [{
        'idHistoria':
        hist['idHistory'],
        'prioridad':
        hist['priority'],
        'peso':
        oTask.lookup(pesos, hist['idHistory']),
        'enunciado':
        'En tanto ' + hist['actors'] + hist['accions'] + ' para ' +
        hist['objectives']
    } for hist in historiesSortedByPriority]
    session['idPila'] = idPila
    res['idPila'] = idPila

    return json.dumps(res)
示例#13
0
def VHistoria():
    #GET parameter
    res = {}

    # Obtenemos el id del producto y de la historia.
    idPila = int(session['idPila'])
    idHistory = int(request.args.get('idHistoria'))

    if "actor" in session:
        res['actor'] = session['actor']

    if 'usuario' not in session:
        res['logout'] = '/'
        return json.dumps(res)
    res['usuario'] = session['usuario']

    scale = {
        0: 'No tiene escala asignada por ser Épica',
        1: 'Alta',
        2: 'Media',
        3: 'Baja'
    }

    oBacklog = backlog()
    oObjective = objective()
    oTarea = task()
    oUserHist = userHistory()
    oActUserHist = actorsUserHistory()
    oObjUserHist = objectivesUserHistory()

    # Obtenemos la historia que queremos modificar.
    history = oUserHist.searchIdUserHistory(idHistory)
    history = history[0]

    # Obtenemos todas las acciones, actores y objetivos asociados al producto.
    actorList = oBacklog.actorsAsociatedToProduct(idPila)
    accionList = oBacklog.accionsAsociatedToProduct(idPila)
    objectiveList = oBacklog.objectivesAsociatedToProduct(idPila)

    # Obtenemos todas las historias de usuarios excepto la actual
    historias = oUserHist.getAllUserHistoryId(idPila)
    for hist in historias:
        if hist.UH_idUserHistory == idHistory:
            historias.remove(hist)
            break

    # Obtenemos todos los objetivos que son no trasnversales.
    for object in objectiveList:
        idObjective = object.O_idObjective
        transverse = oObjective.verifyObjectiveTransverse(idObjective)
        if int(transverse) == 1:
            objectiveList.remove(object)

    taskList = oTarea.getAllTask(idHistory)

    # Obtenemos los actores asociados a una historia de usuario.
    actors = oActUserHist.idActorsAsociatedToUserHistory(idHistory)

    # Obtenemos los objetivos asociados a una historia de usuario.
    objectives = oObjUserHist.idObjectivesAsociatedToUserHistory(idHistory)

    # Obtenemos la escala asociada a la historia (la que se selecciono para el producto)
    typeScale = oBacklog.scaleType(idPila)

    # Obtenemos la escala asignada a la historia actual
    numScale = history.UH_scale

    # Obtenemos las pruebas de la historia actual
    testsList = oUserHist.testsAsociatedToUserHistory(idHistory)

    resultScale = []
    if numScale == 0:
        resultScale = [(0, scale[0])]
    else:
        # Obtenemos el tipo de escala asociado al producto (id,valor)
        if typeScale == 1:
            resultScale = [(i, scale[i]) for i in range(1, 3 + 1)]
        elif typeScale == 2:
            resultScale = [(i, i) for i in range(1, 20 + 1)]

    res['fHistoria_opcionesHistorias'] = [{
        'key': hist.UH_idUserHistory,
        'value': hist.UH_codeUserHistory
    } for hist in historias]
    res['fHistoria_opcionesHistorias'].append({'key': 0, 'value': 'Ninguno'})
    res['fHistoria_opcionesTiposHistoria'] = [{
        'key': 1,
        'value': 'Opcional'
    }, {
        'key': 2,
        'value': 'Obligatoria'
    }]
    res['fHistoria_opcionesActores'] = [{
        'key': act.A_idActor,
        'value': act.A_nameActor
    } for act in actorList]
    res['fHistoria_opcionesAcciones'] = [{
        'key': acc.AC_idAccion,
        'value': acc.AC_accionDescription
    } for acc in accionList]
    res['fHistoria_opcionesObjetivos'] = [{
        'key': obj.O_idObjective,
        'value': obj.O_descObjective
    } for obj in objectiveList]
    res['fHistoria_opcionesPrioridad'] = [{
        'key': scale[0],
        'value': scale[1]
    } for scale in resultScale]

    if history.UH_completed:
        estado = 'completa'
    else:
        estado = 'incompleta'

    startingDate_object_new = datetime.strftime(history.UH_fechaInicio,
                                                '%d/%m/%Y')

    res['fHistoria'] = {
        'super': history.UH_idSuperHistory,
        'idHistoria': idHistory,
        'idPila': history.UH_idBacklog,
        'codigo': history.UH_codeUserHistory,
        'actores': actors,
        'accion': history.UH_idAccion,
        'objetivos': objectives,
        'tipo': history.UH_accionType,
        'prioridad': history.UH_scale,
        'iniciado': history.UH_iniciado,
        'fechaInicio': startingDate_object_new,
        'estado': estado
    }

    res['data2'] = [{
        'idTarea': tarea.HW_idTask,
        'descripcion': tarea.HW_description
    } for tarea in taskList]

    res['pruebas'] = [{
        'idTarea': test.AT_idAT,
        'descripcion': test.AT_description,
        'url': test.AT_urlScript
    } for test in testsList]

    session['idHistoria'] = idHistory
    res['idHistoria'] = idHistory
    session['idPila'] = idPila
    res['idPila'] = idPila

    return json.dumps(res)
示例#14
0
def VPrioridades():
    #GET parameter
    res = {}

    # Obtenemos el id del producto.
    idPila    = int(session['idPila'])

    if "actor" in session:
        res['actor']=session['actor']

    if 'usuario' not in session:
      res['logout'] = '/'
      return json.dumps(res)
    res['usuario'] = session['usuario']

    oActor            = role()
    oAccion           = accions()
    oObjective        = objective()
    oBacklog          = backlog()
    oUserHistory      = userHistory()
    oActUserHist      = actorsUserHistory()
    oObjUserHIst      = objectivesUserHistory()

    # Obtenemos las historias de usuario asociadas al producto.
    userHistoriesList = oBacklog.userHistoryAsociatedToProduct(idPila)

    userHistories = []
    options       = {1:'podría ',2:'puede '}
    scale         = {1:'Alta',2:'Media',3:'Baja'}

    # Obtenemos el tipo de escala asociada al producto.
    typeScale = oBacklog.scaleType(idPila)

    # Obtenemos el tipo de escala asociado al producto (id,valor) y elvalor maximo de la escala
    if typeScale == 1:
        iterations  = 3
        resultScale = [(i,scale[i]) for i in range(1,3+1)]
    elif typeScale == 2:
        iterations  = 20
        resultScale = [(i,i) for i in range(1,20+1)]

    # Obtenemos los valores de cada historia en un diccionario y almacenamos esos
    # diccionarios en un arreglo.
    for hist in userHistoriesList:
        epic = oUserHistory.isEpic(hist.UH_idUserHistory)
        if not epic:
            result = oUserHistory.transformUserHistory(hist.UH_idUserHistory)
            userHistories.append(result)

    historiesSortedByPriority = []
    # Ordenamos las tuplas por prioridad
    for i in range(iterations + 1):
        for hist in userHistories:
            if hist['priority'] == i:
                historiesSortedByPriority.append(hist)
                userHistories.remove(hist)

    #Escala dependiente del proyecto
    res['fPrioridades_opcionesPrioridad'] = [{'key':scale[0], 'value':scale[1]}for scale in resultScale]
    res['fPrioridades'] = {'idPila':idPila,'lista':[{'idHistoria':hist['idHistory'],'prioridad':hist['priority'], 'enunciado':'En tanto ' + hist['actors'] + hist['accions'] + ' para ' + hist['objectives']}for hist in historiesSortedByPriority]}
    res['idPila']       = idPila

    return json.dumps(res)
示例#15
0
def VHistorias():
    #GET parameter
    res = {}

    # Obtenemos el id del producto y de la historia.
    idPila = int(request.args.get('idPila',1))

    if "actor" in session:
        res['actor'] = session['actor']

    oTask             = task()
    oActor            = role()
    oAccion           = accions()
    oObjective        = objective()
    oBacklog          = backlog()
    oUserHistory      = userHistory()
    oActUserHist      = actorsUserHistory()
    oObjUserHIst      = objectivesUserHistory()

    # Obtenemos las historias asociadas al producto idPila.
    userHistoriesList = oBacklog.userHistoryAsociatedToProduct(idPila)

    pesos          = []
    userHistories  = []
    options        = {1:'podria ',2:'puede '}
    priorities     = {0:'Epica',1:'Alta',2:'Media',3:'Baja'}
    priorities2    = {i:str(i)for i in range(1,20+1)}
    priorities2[0] = 'Epica'

    # Obtenemos el tipo de escala seleccionada en el producto asociado a la historia.
    typeScale = oBacklog.scaleType(idPila)

    # Obtenemos los valores de cada historia en un diccionario y almacenamos esos
    # diccionarios en un arreglo.
    for hist in userHistoriesList:
        result = oUserHistory.transformUserHistory(hist.UH_idUserHistory)
        userHistories.append(result)
        tupla = (hist.UH_idUserHistory,oTask.historyWeight(hist.UH_idUserHistory))
        pesos.append(tupla)

    # Obtenemos el maximo de la escala
    if typeScale == 1:
        iterations = 3
    elif typeScale == 2:
        iterations = 20

    historiesSortedByPriority = []
    # Ordenamos las tuplas por prioridad
    for i in range(iterations + 1):
        idsHistories = []
        for hist in userHistories:

            if hist['priority'] == i:
                # Convertimos a escala Alta, Media, Baja si es necesario
                if typeScale == 1:
                    hist['priority'] = priorities[i]
                elif typeScale == 2:
                    hist['priority'] = priorities2[i]
                historiesSortedByPriority.append(hist)
                # Almacenamos los ids de las historias ordenadas
                idsHistories.append(hist['idHistory'])

        # Eliminamos de userHistories las historias ordenadas.
        for id in idsHistories:
            for hist in userHistories:
                if hist['idHistory'] == id:
                    userHistories.remove(hist)
                    break


    res['data0']      = [{'idHistoria':hist['idHistory'],
                          'prioridad' :hist['priority'],
                          'peso'      :oTask.lookup(pesos,hist['idHistory']),
                          'enunciado' :'En tanto ' + hist['actors'] + hist['accions'] + ' para ' + hist['objectives']}for hist in historiesSortedByPriority]
    session['idPila'] = idPila
    res['idPila']     = idPila

    return json.dumps(res)
示例#16
0
def VHistoria():
    #GET parameter
    res = {}

    # Obtenemos el id del producto y de la historia.
    idPila    = int(session['idPila'])
    idHistory = int(request.args.get('idHistoria'))

    if "actor" in session:
        res['actor']=session['actor']

    if 'usuario' not in session:
      res['logout'] = '/'
      return json.dumps(res)
    res['usuario'] = session['usuario']

    scale = {0:'No tiene escala asignada por ser Épica',1:'Alta',2:'Media',3:'Baja'}

    oBacklog      = backlog()
    oObjective    = objective()
    oTarea        = task()
    oUserHist     = userHistory()
    oActUserHist  = actorsUserHistory()
    oObjUserHist  = objectivesUserHistory()

    # Obtenemos la historia que queremos modificar.
    history = oUserHist.searchIdUserHistory(idHistory)
    history = history[0]

    # Obtenemos todas las acciones, actores y objetivos asociados al producto.
    actorList     = oBacklog.actorsAsociatedToProduct(idPila)
    accionList    = oBacklog.accionsAsociatedToProduct(idPila)
    objectiveList = oBacklog.objectivesAsociatedToProduct(idPila)

    # Obtenemos todas las historias de usuarios excepto la actual
    historias =  oUserHist.getAllUserHistoryId(idPila)
    for hist in historias:
        if hist.UH_idUserHistory == idHistory:
            historias.remove(hist)
            break

    # Obtenemos todos los objetivos que son no trasnversales.
    for object in objectiveList:
        idObjective = object.O_idObjective
        transverse  = oObjective.verifyObjectiveTransverse(idObjective)
        if int(transverse) == 1:
            objectiveList.remove(object)

    taskList = oTarea.getAllTask(idHistory)

    # Obtenemos los actores asociados a una historia de usuario.
    actors = oActUserHist.idActorsAsociatedToUserHistory(idHistory)

    # Obtenemos los objetivos asociados a una historia de usuario.
    objectives = oObjUserHist.idObjectivesAsociatedToUserHistory(idHistory)

    # Obtenemos la escala asociada a la historia (la que se selecciono para el producto)
    typeScale = oBacklog.scaleType(idPila)

    # Obtenemos la escala asignada a la historia actual
    numScale  = history.UH_scale

    # Obtenemos las pruebas de la historia actual
    testsList = oUserHist.testsAsociatedToUserHistory(idHistory)

    resultScale = []
    if numScale == 0:
        resultScale = [(0,scale[0])]
    else:
        # Obtenemos el tipo de escala asociado al producto (id,valor)
        if typeScale == 1:
            resultScale = [(i,scale[i]) for i in range(1,3+1)]
        elif typeScale == 2:
            resultScale = [(i,i) for i in range(1,20+1)]

    res['fHistoria_opcionesHistorias']     = [{'key':hist.UH_idUserHistory,'value':hist.UH_codeUserHistory}for hist in historias]
    res['fHistoria_opcionesHistorias'].append({'key':0,'value':'Ninguno'})
    res['fHistoria_opcionesTiposHistoria'] = [{'key':1,'value':'Opcional'},{'key':2,'value':'Obligatoria'}]
    res['fHistoria_opcionesActores']       = [{'key':act.A_idActor,'value':act.A_nameActor}for act in actorList]
    res['fHistoria_opcionesAcciones']      = [{'key':acc.AC_idAccion,'value':acc.AC_accionDescription}for acc in accionList]
    res['fHistoria_opcionesObjetivos']     = [{'key':obj.O_idObjective,'value':obj.O_descObjective}for obj in objectiveList]
    res['fHistoria_opcionesPrioridad']     = [{'key':scale[0], 'value':scale[1]}for scale in resultScale]

    if history.UH_completed:
        estado = 'completa'
    else:
        estado = 'incompleta'

    startingDate_object_new = datetime.strftime(history.UH_fechaInicio, '%d/%m/%Y')

    res['fHistoria'] = {'super':history.UH_idSuperHistory , 'idHistoria':idHistory, 'idPila':history.UH_idBacklog,
                        'codigo':history.UH_codeUserHistory,'actores':actors, 'accion':history.UH_idAccion,
                        'objetivos':objectives, 'tipo':history.UH_accionType, 'prioridad':history.UH_scale,
                        'iniciado': history.UH_iniciado, 'fechaInicio': startingDate_object_new, 'estado': estado}

    res['data2'] = [{'idTarea':tarea.HW_idTask, 'descripcion':tarea.HW_description}for tarea in taskList]

    res['pruebas'] = [{'idTarea':test.AT_idAT,
                        'descripcion':test.AT_description,
                        'url': test.AT_urlScript} for test in testsList]

    session['idHistoria'] = idHistory
    res['idHistoria'] = idHistory
    session['idPila'] = idPila
    res['idPila']     = idPila

    return json.dumps(res)