Beispiel #1
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)
Beispiel #2
0
def AElimHistoria():
    #GET parameter
    results = [{'label':'/VHistorias', 'msg':['Historia eliminada']}, {'label':'/VHistorias', 'msg':['No se pudo eliminar esta historia']}, ]
    res = results[1]

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

    # Conseguimos la historia a eliminar
    oUserHistory = userHistory()
    found        = oUserHistory.searchIdUserHistory(idHistoria)

    if (found != []):
        # Verificamos si la historia no es una épica
        if (not oUserHistory.isEpic(idHistoria)):
            # Conseguimos los actores asosciados a la historia
            oActorsUserHistory = actorsUserHistory()
            resultActors = oActorsUserHistory.idActorsAsociatedToUserHistory(idHistoria)

            if (resultActors != []):
                # Eliminamos los actores asociados a la historia
                for actor in resultActors:
                    oActorsUserHistory.deleteActorAsociatedInUserHistory(actor, idPila)

                # Conseguimos los objetivos asosciados a la historia
                oObjUserHistory = objectivesUserHistory()
                resultObjectives = oObjUserHistory.idObjectivesAsociatedToUserHistory(idHistoria)

                if (resultObjectives != []):
                    # Eliminamos los objetivos asociados a la historia
                    for objetivo in resultObjectives:
                        oObjUserHistory.deleteObjectiveAsociatedInUserHistory(objetivo, idPila)

                    # Conseguimos las tareas asociadas a la historia
                    aTarea     = task()
                    resultTask = aTarea.taskAsociatedToUserHistory(idHistoria)

                    if (resultTask != []):
                        # Eliminamos las tareas asociados a la historia
                        for tasky in resultTask:
                            aTarea.deleteTask(tasky.HW_description)

                    # Eliminamos la historia de usuario
                    deleted = oUserHistory.deleteUserHistory(found[0].UH_idUserHistory)

                    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)
Beispiel #3
0
def ACrearHistoria():
    #POST/PUT parameters
    params  = request.get_json()
    results = [{'label':'/VHistorias', 'msg':['Historia creada']}, {'label':'/VCrearHistoria', 'msg':['Error al crear historia']}, ]
    res     = results[1]  
    
    # Obtenemos el id del producto.
    idPila  = int(session['idPila'])
        
    # Extraemos los parametros.
    codeHistory = params['codigo']
    idSuperHist = params['super']
    idType      = params['tipo']
    idActor     = params['actores']
    idAccion    = params['accion']
    idObjective = params['objetivos']
    priority    = params['prioridad']
    
    if idActor != [] and idObjective != []:
        oUserHistory = userHistory()
        # Insertamos los datos de la historia
        inserted     = oUserHistory.insertUserHistory(codeHistory,idSuperHist,idType,idAccion,idPila,priority)
    
        # Asociamos los actores y objetivos a la historia.
        if inserted:
            oObjUserHist = objectivesUserHistory()
            oActUserHist = actorsUserHistory()
            result       = oUserHistory.searchUserHistory(codeHistory,idPila)
            idInserted   = result[0].UH_idUserHistory
            insertedAct  = False
            insertedObj  = False
            
            # Insertamos los nuevos objetivos seleccionados
            for idobj in idObjective:
                insertedObj  = oObjUserHist.insertObjectiveAsociatedInUserHistory(idobj,idInserted)
            
            # Insertamos los nuevos actores seleccionados
            for idact in idActor:
                insertedAct  = oActUserHist.insertActorAsociatedInUserHistory(idact,idInserted)
    
            # Verificamos que se crearon todos los componentes de la historia.
            if insertedAct and insertedObj and inserted:
                actorsList     = oActUserHist.idActorsAsociatedToUserHistory(idInserted)
                objectivesList = oObjUserHist.idObjectivesAsociatedToUserHistory(idInserted)
                
                if actorsList != [] and objectivesList != []:    
                    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)
Beispiel #4
0
def AElimHistoria():
    #GET parameter
    results = [{'label':'/VHistorias', 'msg':['Historia eliminada']}, {'label':'/VHistorias', 'msg':['No se pudo eliminar esta historia']}, ]
    res = results[1]

    # Obtenemos el id del producto y de la historia.
    idPila      = int(session['idPila'])
    idHistoria  = int(session['idHistoria'])
    
    # Conseguimos la historia a eliminar 
    oUserHistory = userHistory()
    found        = oUserHistory.searchIdUserHistory(idHistoria)
    
    if (found != []):
        # Verificamos si la historia no es una épica
        if (not oUserHistory.isEpic(idHistoria)):
            # Conseguimos los actores asosciados a la historia
            oActorsUserHistory = actorsUserHistory()
            resultActors = oActorsUserHistory.idActorsAsociatedToUserHistory(idHistoria)
        
            if (resultActors != []):
                # Eliminamos los actores asociados a la historia
                for actor in resultActors:
                    oActorsUserHistory.deleteActorAsociatedInUserHistory(actor, idPila)
        
                # Conseguimos los objetivos asosciados a la historia
                oObjUserHistory = objectivesUserHistory()
                resultObjectives = oObjUserHistory.idObjectivesAsociatedToUserHistory(idHistoria)
        
                if (resultObjectives != []):
                    # Eliminamos los objetivos asociados a la historia
                    for objetivo in resultObjectives:
                        oObjUserHistory.deleteObjectiveAsociatedInUserHistory(objetivo, idPila)
                        
                    # Conseguimos las tareas asociadas a la historia
                    aTarea     = task()
                    resultTask = aTarea.taskAsociatedToUserHistory(idHistoria) 
                
                    if (resultTask != []):
                        # Eliminamos las tareas asociados a la historia
                        for tasky in resultTask:
                            aTarea.deleteTask(tasky.HW_description)
        
                    # Eliminamos la historia de usuario
                    deleted = oUserHistory.deleteUserHistory(found[0].UH_idUserHistory) 
        
                    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)
Beispiel #5
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)
Beispiel #6
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)
Beispiel #7
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)
Beispiel #8
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)
Beispiel #9
0
def AModifHistoria():
    #POST/PUT parameters
    params = request.get_json()
    results = [
        {
            'label': '/VHistorias',
            'msg': ['Historia modificada']
        },
        {
            'label': '/VHistorias',
            'msg': ['Error al modificar historia']
        },
    ]
    res = results[1]

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

    # Extraemos los valores
    oUserHist = userHistory()
    oObjUserHist = objectivesUserHistory()
    oActUserHist = actorsUserHistory()

    idHistory = params['idHistoria']
    idSupHist = params['super']
    idaccion = params['accion']
    idBacklog = params['idPila']
    idActors = params['actores']
    codeHist = params['codigo']
    idObjectives = params['objetivos']
    type = params['tipo']
    priority = params['prioridad']
    idPila = params['idPila']

    started = params['iniciado']
    startingDate = params['fechaInicio']

    try:
        startingDate_object = datetime.strptime(startingDate, '%d/%m/%Y')
    except ValueError:
        res = results[1]
        res['label'] = res['label'] + '/' + str(idPila)
        return json.dumps(res)

    subHistories = oUserHist.historySuccesors(idHistory)

    if not (idSupHist in subHistories):

        # Actualizamos los datos de la historia
        updated = oUserHist.updateUserHistory(idHistory, codeHist, idSupHist,
                                              type, idaccion, priority,
                                              started, startingDate_object)

        if updated:
            # Buscamos los actores asociados
            idActorsList = oActUserHist.idActorsAsociatedToUserHistory(
                idHistory)
            # Eliminamos los actores asociados
            for id in idActorsList:
                insertedAct = oActUserHist.deleteActorAsociatedInUserHistory(
                    id, idHistory)
            # Insertamos los nuevos actores seleccionados
            for id in idActors:
                insertedAct = oActUserHist.insertActorAsociatedInUserHistory(
                    id, idHistory)

            # Buscamos los objetivos asociados
            idObjectivesList = oObjUserHist.idObjectivesAsociatedToUserHistory(
                idHistory)
            # Eliminamos los objetivos asociados
            for id in idObjectivesList:
                insertedObj = oObjUserHist.deleteObjectiveAsociatedInUserHistory(
                    id, idHistory)
            # Insertamos los nuevos objetivos seleccionados
            for id in idObjectives:
                insertedAct = oObjUserHist.insertObjectiveAsociatedInUserHistory(
                    id, idHistory)

            if not oUserHist.isEpic:
                result = oUserHist.updatePriority(priority)

            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)
Beispiel #10
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)
Beispiel #11
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)
Beispiel #12
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)
Beispiel #13
0
def AModifHistoria():
    #POST/PUT parameters
    params  = request.get_json()
    results = [{'label':'/VHistorias', 'msg':['Historia modificada']}, {'label':'/VHistorias', 'msg':['Error al modificar historia']}, ]
    res     = results[1]

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

    # Extraemos los valores
    oUserHist    = userHistory()
    oObjUserHist = objectivesUserHistory()
    oActUserHist = actorsUserHistory()

    idHistory    = params['idHistoria']
    idSupHist    = params['super']
    idaccion     = params['accion']
    idBacklog    = params['idPila']
    idActors     = params['actores']
    codeHist     = params['codigo']
    idObjectives = params['objetivos']
    type         = params['tipo']
    priority     = params['prioridad']
    idPila       = params['idPila']


    started     = params['iniciado']
    startingDate = params['fechaInicio']

    try:
        startingDate_object = datetime.strptime(startingDate, '%d/%m/%Y')
    except ValueError:
        res     = results[1]
        res['label'] = res['label'] + '/'+str(idPila)
        return json.dumps(res)

    subHistories = oUserHist.historySuccesors(idHistory)

    if not(idSupHist in subHistories):

        # Actualizamos los datos de la historia
        updated     = oUserHist.updateUserHistory(idHistory,codeHist,idSupHist,type,idaccion,priority,started,startingDate_object)

        if updated:
            # Buscamos los actores asociados
            idActorsList = oActUserHist.idActorsAsociatedToUserHistory(idHistory)
            # Eliminamos los actores asociados
            for id in idActorsList:
                insertedAct = oActUserHist.deleteActorAsociatedInUserHistory(id,idHistory)
            # Insertamos los nuevos actores seleccionados
            for id in idActors:
                insertedAct = oActUserHist.insertActorAsociatedInUserHistory(id,idHistory)

            # Buscamos los objetivos asociados
            idObjectivesList = oObjUserHist.idObjectivesAsociatedToUserHistory(idHistory)
            # Eliminamos los objetivos asociados
            for id in idObjectivesList:
                insertedObj = oObjUserHist.deleteObjectiveAsociatedInUserHistory(id,idHistory)
            # Insertamos los nuevos objetivos seleccionados
            for id in idObjectives:
                insertedAct = oObjUserHist.insertObjectiveAsociatedInUserHistory(id,idHistory)

            if not oUserHist.isEpic:
                result = oUserHist.updatePriority(priority)

            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)