Пример #1
0
def AElimAccion():
    #GET parameter
    results = [
        {
            'label': '/VProducto',
            'msg': ['Accion eliminada']
        },
        {
            'label': '/VProducto',
            'msg': ['No se pudo eliminar esta acción']
        },
    ]
    res = results[1]

    # Obtenemos el id del producto y de la acción
    idPila = int(session['idPila'])
    idAccion = int(session['idAccion'])

    # Conseguimos la acción a eliminar
    oAccion = accions()
    found = oAccion.searchIdAccion(idAccion)

    oAccionUserHist = userHistory()
    result = oAccionUserHist.searchidUserHistoryIdAccion(idAccion)

    # Verificamos si la acción está asociado a una historia
    if (result == []):
        deleted = oAccion.deleteAccion(found[0].AC_accionDescription, idPila)

        if deleted:
            res = results[0]

    # Conseguimos la acción a eliminar
    oAccion = accions()
    found = oAccion.searchIdAccion(idAccion)

    oAccionUserHist = userHistory()
    result = oAccionUserHist.searchidUserHistoryIdAccion(idAccion)

    # Verificamos si la acción está asociado a una historia
    if (result == []):
        deleted = oAccion.deleteAccion(found[0].AC_accionDescription, 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)
Пример #2
0
def AResumenHistoria():
    #POST/PUT parameters
    params = request.get_json()
    results = [{'label':'/VSprint', 'msg':['Resumen agregado exitosamente!']}, {'label':'/VResumenHistoria', 'msg':['Error agregando resumen de historia']}, ]
    res = results[0]
    #Action code goes here, res should be a list with a label and a message

    print(params)

    idSprint = int(session['idSprint'])
    idUserHistory = int(params['Historia'])
    resume = str(params['Resumen'])

    res['label'] = res['label'] + '/' + str(idSprint)
    oUserHistory = userHistory()
    result = oUserHistory.assignHistoryResume(idUserHistory, resume)

    if not result:
        res = results[1]

    #Action code ends here
    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 AElimAccion():
    #GET parameter
    results = [{'label':'/VProducto', 'msg':['Accion eliminada']}, {'label':'/VProducto', 'msg':['No se pudo eliminar esta acción']}, ]
    res     = results[1]

    # Obtenemos el id del producto y de la acción
    idPila   = int(session['idPila'])
    idAccion = int(session['idAccion'])

    # Conseguimos la acción a eliminar
    oAccion = accions()
    found   = oAccion.searchIdAccion(idAccion)

    oAccionUserHist = userHistory()
    result  = oAccionUserHist.searchidUserHistoryIdAccion(idAccion)

    # Verificamos si la acción está asociado a una historia
    if (result == []):
        deleted = oAccion.deleteAccion(found[0].AC_accionDescription, 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)
Пример #4
0
def ACambiarPrioridades():
    #POST/PUT parameters
    params = request.get_json()
    results = [
        {
            'label': '/VHistorias',
            'msg': ['Prioridades reasignadas']
        },
    ]
    res = results[0]

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

    list = params['lista']

    oHistory = userHistory()

    for hist in list:
        idHistory = hist['idHistoria']
        priority = hist['prioridad']
        oHistory.updatePriority(idHistory, priority)

    res['label'] = res['label'] + '/' + str(idPila)
    res['idPila'] = 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 VSprintHistoria():
    #GET parameter
    idSprint = request.args['idSprint']
    res = {}
    if "actor" in session:
        res['actor'] = session['actor']

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

    idPila = int(session['idPila'])

    oUserHistory = userHistory()
    historiasProducto = oUserHistory.getAllUserHistoryId(idPila)
    res['fSprintHistoria_opcionesHistoria'] = [{
        'key':
        historia.UH_idUserHistory,
        'value':
        historia.UH_codeUserHistory
    } for historia in historiasProducto]

    res['idSprint'] = idSprint
    res['fSprintHistoria'] = {'idPila': idPila, 'idSprint': idSprint}

    return json.dumps(res)
Пример #6
0
def AIncompletarHistoria():
    params = request.get_json()
    idHistory = request.args.get('idHistoria')
    results = [
        {
            'label': '/VHistoria/' + idHistory,
            'msg': ['La historia fue marcada como incompleta']
        },
        {
            'label': '/VHistoria/' + idHistory,
            'msg': ['Error al modificar historia']
        },
    ]
    res = results[1]

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

    # Extraemos los valores
    oUserHist = userHistory()

    incompleted = oUserHist.incompleteHistory(int(idHistory))
    if incompleted == True:
        res = results[0]
    return json.dumps(res)
Пример #7
0
def ACambiarPrioridades():
    #POST/PUT parameters
    params  = request.get_json()
    results = [{'label':'/VHistorias', 'msg':['Prioridades reasignadas']}, ]
    res     = results[0]

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

    list = params['lista']

    oHistory = userHistory()

    for hist in list:
        idHistory   = hist['idHistoria']
        priority    = hist['prioridad']
        oHistory.updatePriority(idHistory,priority)

    res['label']  = res['label']+'/'+str(idPila)
    res['idPila'] = 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 VPrelaciones():
    #GET parameter
    idPila = request.args['idPila']
    res = {}
    if "actor" in session:
        res['actor']=session['actor']
    #Action code goes here, res should be a JSON structure

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

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

    # Obtenemos el id del producto y de la historia.
    idPila = request.args['idPila']

    oBacklog          = backlog()
    oUserHistory      = userHistory()
    oTask             = task()
    oPrecedence       = precedence()


    #Hacer query para obtener las prelaciones que existen ya en este producto y devolverlas en fPrelaciones
    lista = []
    precedenceList = oPrecedence.getAllPrecedences(idPila)
    for object in precedenceList:
        lista.append({'antecedente':object.P_idFirstTask, 'consecuente':object.P_idSecondTask})

    res['fPrelaciones'] = {'lista':lista}

    #res['fPrelaciones'] = {'lista':[
    #  {'antecedente':1, 'consecuente':2},
    #  {'antecedente':2, 'consecuente':3}]}



    res['idPila'] = idPila

    #Hacer query para obtener las tareas de esta historia y devolverlas con su id y valor en una lista
    userHistoriesList = oBacklog.userHistoryAsociatedToProduct(int(idPila))
    taskList = []
    #tasks = []

    #Se obtienen todas las tareas de las historias de usuarios
    for hist in userHistoriesList:
        taskList.extend(oTask.taskAsociatedToUserHistory(hist.UH_idUserHistory))

    #Se transforman las tareas para la vista
    #for listaT in taskList:
    #    for tarea in listaT:
    #    tasks.append(tarea)

    res['fPrelaciones_listaTareas'] = [{'key':tarea.HW_idTask, 'value':tarea.HW_description + ' | historia:' + oUserHistory.getUHCodeFromId(tarea.HW_idUserHistory)}for tarea in taskList]

    #Action code ends here
    return json.dumps(res)
Пример #9
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)
Пример #10
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)
Пример #11
0
def ASprintHistoria():
    #POST/PUT parameters
    params = request.get_json()
    results = [
        {
            'label': '/VSprint',
            'msg': ['Historia Asignado']
        },
        {
            'label': '/VSprint',
            'msg': ['Error al Asignar Historia']
        },
    ]
    res = results[1]

    idSprint = int(params['idSprint'])
    idPila = params['idPila']
    idHistoria = params['historia']

    oSprint = sprints()
    oTask = task()
    oUserHistory = userHistory()

    #Lista usada para obtener los ids de las historias asigndas
    historiesList = []

    if oSprint.asignSprintHistory(idSprint, idPila, idHistoria):
        historiesList.append(idHistoria)

        # Chequeamos si es epica, si lo es agregamos las sub-historias
        if oUserHistory.isEpic(idHistoria):
            for idHistoria in oUserHistory.historySuccesors(idHistoria):
                oSprint.asignSprintHistory(idSprint, idPila, idHistoria)
                historiesList.append(idHistoria)

        totalResult = True
        #Obtenemos las tareas asociadas a cada historia de usuario asignada
        for idHist in historiesList:
            taskList = oTask.getAllTask(idHist)

            if taskList != []:
                for t in taskList:
                    result = oSprint.asignSprintTask(idSprint, idPila,
                                                     t.HW_idTask)
                    totalResult = totalResult and result

    #if totalResult:
        res = results[0]

    res['label'] = res['label'] + '/' + str(idSprint)
    #Action code ends here
    if "actor" in res:
        if res['actor'] is None:
            session.pop("actor", None)
        else:
            session['actor'] = res['actor']
    return json.dumps(res)
Пример #12
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)
Пример #13
0
def AElimSprintHistoria():
    #POST/PUT parameters
    params = request.get_json()
    results = [
        {
            'label': '/VSprint',
            'msg': ['Historia Eliminado']
        },
        {
            'label': '/VSprint',
            'msg': ['Error al eliminar historia']
        },
    ]
    res = results[1]

    idSprint = int(session['idSprint'])
    idPila = int(session['idPila'])
    idHistoriaEliminar = int(request.args['id'])

    oSprint = sprints()
    oUserHistory = userHistory()
    oTask = task()
    deletedHistoryID = []
    if oSprint.deleteAssignedSprintHistory(idSprint, idPila,
                                           idHistoriaEliminar):
        # Chequeamos si es epica, si lo es eliminamos sus hijos
        deletedHistoryID.append(idHistoriaEliminar)
        if oUserHistory.isEpic(idHistoriaEliminar):
            for idHistoria in oUserHistory.historySuccesors(
                    idHistoriaEliminar):
                oSprint.deleteAssignedSprintHistory(idSprint, idPila,
                                                    idHistoria)
                deletedHistoryID.append(idHistoria)

        # Eliminamos sus tareas
        for idHistoria in deletedHistoryID:
            tareas = oTask.taskAsociatedToUserHistory(idHistoria)
            for tarea in tareas:
                oSprint.deleteAssignedSprintTask(idSprint, idPila,
                                                 tarea.HW_idTask)

        res = results[0]

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

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

    return json.dumps(res)
Пример #14
0
def VCrearTarea():
    #GET parameter
    res = {}
    # Obtenemos el id de la historia actual
    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)

    # Buscamos la historia actual
    oUserHistory = userHistory()
    hist         = oUserHistory.searchIdUserHistory(idHistory)

    res['usuario']        = session['usuario']
    res['codHistoria']    = hist[0].UH_codeUserHistory

    # Obtenemos una lista con los datos asociados a las categorías
    cateList  = clsCategory.query.all()

    idTarea = request.args.get('idTarea')
    result   = clsTask.query.filter_by(HW_idTask = idTarea).first()
    cateList     = clsCategory.query.all()
    oTeam = team()
    found = clsUserHistory.query.filter_by(UH_idUserHistory = idHistory).first()
    miembroList = oTeam.getTeam(found.UH_idBacklog)

    # Mostramos los datos en la vista
    ListaCompleta = []
    for i in cateList:
        ListaCompleta.append((i.C_idCategory,i.C_nameCate,i.C_weight))

    decorated = [(tup[2], tup) for tup in ListaCompleta]
    decorated.sort()

    res['fTarea_opcionesCategoria'] = [
     {'key':cat[1][0] ,'value':cat[1][1]+" ("+str(cat[1][2])+")",'peso':cat[1][2]} for cat in decorated]

    res['fTarea_opcionesMiembro'] = [{'key':-1,'value':'Sin asignacion'}] + [
      {'key':miembro.EQ_idEquipo ,'value':miembro.EQ_username} for miembro in miembroList]

    res['fTarea'] = {'idHistoria':idHistory}

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

    return json.dumps(res)
Пример #15
0
def AIncompletarHistoria():
    params  = request.get_json()
    idHistory    = request.args.get('idHistoria')
    results = [{'label':'/VHistoria/'+idHistory, 'msg':['La historia fue marcada como incompleta']}, {'label':'/VHistoria/'+idHistory, 'msg':['Error al modificar historia']}, ]
    res     = results[1]

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

    # Extraemos los valores
    oUserHist    = userHistory()

    incompleted = oUserHist.incompleteHistory(int(idHistory))
    if incompleted == True:
        res = results[0]
    return json.dumps(res)
Пример #16
0
def ASprintHistoria():
    #POST/PUT parameters
    params  = request.get_json()
    results = [{'label':'/VSprint', 'msg':['Historia Asignado']}, {'label':'/VSprint', 'msg':['Error al Asignar Historia']}, ]
    res     = results[1]

    idSprint   = int(params['idSprint'])
    idPila     = params['idPila']
    idHistoria = params['historia']

    oSprint      = sprints()
    oTask        = task()
    oUserHistory = userHistory()

    #Lista usada para obtener los ids de las historias asigndas
    historiesList = []

    if oSprint.asignSprintHistory(idSprint,idPila, idHistoria):
        historiesList.append(idHistoria)

        # Chequeamos si es epica, si lo es agregamos las sub-historias
        if oUserHistory.isEpic(idHistoria):
            for idHistoria in oUserHistory.historySuccesors(idHistoria):
                oSprint.asignSprintHistory(idSprint,idPila, idHistoria)
                historiesList.append(idHistoria)

        totalResult = True
        #Obtenemos las tareas asociadas a cada historia de usuario asignada
        for idHist in historiesList:
            taskList = oTask.getAllTask(idHist)

            if taskList != []:
                for t in taskList:
                    result = oSprint.asignSprintTask(idSprint,idPila, t.HW_idTask)
                    totalResult = totalResult and result

    #if totalResult:
        res = results[0]

    res['label'] = res['label'] + '/' + str(idSprint)
    #Action code ends here
    if "actor" in res:
        if res['actor'] is None:
            session.pop("actor", None)
        else:
            session['actor'] = res['actor']
    return json.dumps(res)
Пример #17
0
def VCrearTarea():
    #GET parameter
    res = {}    
    # Obtenemos el id de la historia actual
    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)
  
    # Buscamos la historia actual
    oUserHistory = userHistory()
    hist         = oUserHistory.searchIdUserHistory(idHistory)
    
    res['usuario']        = session['usuario']
    res['codHistoria']    = hist[0].UH_codeUserHistory
    
    # Obtenemos una lista con los datos asociados a las categorías
    cateList  = clsCategory.query.all()        
    
    # Mostramos los datos en la vista
    ListaCompleta = []
    for i in cateList:
        ListaCompleta.append((i.C_idCategory,i.C_nameCate,i.C_weight))
    
    decorated = [(tup[2], tup) for tup in ListaCompleta]
    decorated.sort()

    res['fTarea_opcionesCategoria'] = [
     {'key':cat[1][0] ,'value':cat[1][1]+" ("+str(cat[1][2])+")",'peso':cat[1][2]} for cat in decorated]                                 

    res['fTarea'] = {'idHistoria':idHistory}

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

    return json.dumps(res)
Пример #18
0
def AElimSprintHistoria():
    #POST/PUT parameters
    params = request.get_json()
    results = [{'label':'/VSprint', 'msg':['Historia Eliminado']}, {'label':'/VSprint', 'msg':['Error al eliminar historia']}, ]
    res = results[1]

    idSprint = int(session['idSprint'])
    idPila = int(session['idPila'])
    idHistoriaEliminar = int(request.args['id'])

    oSprint  = sprints()
    oUserHistory = userHistory()
    oTask = task()
    deletedHistoryID=[]
    if oSprint.deleteAssignedSprintHistory(idSprint,idPila,idHistoriaEliminar):
        # Chequeamos si es epica, si lo es eliminamos sus hijos
        deletedHistoryID.append(idHistoriaEliminar)
        if oUserHistory.isEpic(idHistoriaEliminar):
            for idHistoria in oUserHistory.historySuccesors(idHistoriaEliminar):
                oSprint.deleteAssignedSprintHistory(idSprint,idPila, idHistoria)
                deletedHistoryID.append(idHistoria)

        # Eliminamos sus tareas
        for idHistoria in deletedHistoryID:
            tareas = oTask.taskAsociatedToUserHistory(idHistoria)
            for tarea in tareas:
                oSprint.deleteAssignedSprintTask(idSprint, idPila, tarea.HW_idTask)

        res = results[0]

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

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

    return json.dumps(res)
Пример #19
0
def AResumenHistoria():
    #POST/PUT parameters
    params = request.get_json()
    results = [
        {
            'label': '/VSprint',
            'msg': ['Resumen agregado exitosamente!']
        },
        {
            'label': '/VResumenHistoria',
            'msg': ['Error agregando resumen de historia']
        },
    ]
    res = results[0]
    #Action code goes here, res should be a list with a label and a message

    print(params)

    idSprint = int(session['idSprint'])
    idUserHistory = int(params['Historia'])
    resume = str(params['Resumen'])

    res['label'] = res['label'] + '/' + str(idSprint)
    oUserHistory = userHistory()
    result = oUserHistory.assignHistoryResume(idUserHistory, resume)

    if not result:
        res = results[1]

    #Action code ends here
    if "actor" in res:
        if res['actor'] is None:
            session.pop("actor", None)
        else:
            session['actor'] = res['actor']
    return json.dumps(res)
Пример #20
0
def VSprintHistoria():
    #GET parameter
    idSprint = request.args['idSprint']
    res = {}
    if "actor" in session:
        res['actor']=session['actor']

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

    idPila = int(session['idPila'])

    oUserHistory = userHistory()
    historiasProducto = oUserHistory.getAllUserHistoryId(idPila)
    res['fSprintHistoria_opcionesHistoria'] = [
        {'key':historia.UH_idUserHistory,'value':historia.UH_codeUserHistory} for historia in historiasProducto
    ]

    res['idSprint']= idSprint
    res['fSprintHistoria'] = {'idPila':idPila, 'idSprint':idSprint}

    return json.dumps(res)
Пример #21
0
def VSprint():
    #GET parameter
    res = {}

    # Obtenemos el id del producto y del sprint
    idPila   = int(session['idPila'])
    idSprint = int(request.args.get('idSprint',1))

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

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

    # Buscamos el actor actual

    oSprint      = sprints()
    oBacklog     = backlog()
    oUserHistory = userHistory()
    sprint       = oSprint.searchIdSprint(idSprint,idPila)[0]

    res['fSprint'] = {'idSprint':idSprint,
                        'numero':sprint.S_numero,
                        'descripcion':sprint.S_sprintDescription,
                        'fechini':sprint.S_fechini.strftime(DATE_FORMAT),
                        'fechfin':sprint.S_fechfin.strftime(DATE_FORMAT),
                        'state':sprint.S_state }

    #Obtenes las historias asignadas al sprint
    listaHistorias = oSprint.getAssignedSprintHistory(idSprint, idPila)
    userHistories  = []

    #Acomodamos la escala asociada a la historia
    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 listaHistorias:
        result = oUserHistory.transformUserHistory(hist.UH_idUserHistory)

        if typeScale == 1:
            result['priority'] = priorities[hist.UH_scale]
        elif typeScale == 2:
            result['priority'] = priorities2[hist.UH_scale]
        userHistories.append(result)

    #Lista de Historias
    res['data6'] = [
        {'idHistoria':hist['idHistory'],
         'prioridad' :hist['priority'],
         'enunciado' :'En tanto ' + hist['actors'] + hist['accions'] + ' para ' + hist['objectives'],
         'resumen'   :hist['resume']}for hist in userHistories
    ]

    listaTareas = oSprint.getAssignedSprintTask(idSprint, idPila) # Tareas asignadas al Sprint
    #Lista de tareas
    res['data8'] = [{'idTarea':tarea.HW_idTask, 'descripcion':tarea.HW_description}for tarea in listaTareas]

    session['idSprint'] = idSprint
    res['idSprint'] = idSprint
    res['idPila'] = idPila

    oMeeting = meeting()
    result  = oMeeting.getMeetings(idSprint)
    res['data4'] = [{'id':res.SM_idSprintMeeting, 'fecha':res.SM_meetingDate, 'actividades':res.SM_activities,'tipo':res.SM_typeMeeting } for res in result]

    session['idSprint'] = idSprint
    res['idSprint'] = idSprint

    session['idPila'] = idPila
    res['idPila'] = idPila


    return json.dumps(res)
Пример #22
0
def VPrelaciones():
    #GET parameter
    idPila = request.args['idPila']
    res = {}
    if "actor" in session:
        res['actor'] = session['actor']
    #Action code goes here, res should be a JSON structure

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

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

    # Obtenemos el id del producto y de la historia.
    idPila = request.args['idPila']

    oBacklog = backlog()
    oUserHistory = userHistory()
    oTask = task()
    oPrecedence = precedence()

    #Hacer query para obtener las prelaciones que existen ya en este producto y devolverlas en fPrelaciones
    lista = []
    precedenceList = oPrecedence.getAllPrecedences(idPila)
    for object in precedenceList:
        lista.append({
            'antecedente': object.P_idFirstTask,
            'consecuente': object.P_idSecondTask
        })

    res['fPrelaciones'] = {'lista': lista}

    #res['fPrelaciones'] = {'lista':[
    #  {'antecedente':1, 'consecuente':2},
    #  {'antecedente':2, 'consecuente':3}]}

    res['idPila'] = idPila

    #Hacer query para obtener las tareas de esta historia y devolverlas con su id y valor en una lista
    userHistoriesList = oBacklog.userHistoryAsociatedToProduct(int(idPila))
    taskList = []
    #tasks = []

    #Se obtienen todas las tareas de las historias de usuarios
    for hist in userHistoriesList:
        taskList.extend(oTask.taskAsociatedToUserHistory(
            hist.UH_idUserHistory))

    #Se transforman las tareas para la vista
    #for listaT in taskList:
    #    for tarea in listaT:
    #    tasks.append(tarea)

    res['fPrelaciones_listaTareas'] = [{
        'key':
        tarea.HW_idTask,
        'value':
        tarea.HW_description + ' | historia:' +
        oUserHistory.getUHCodeFromId(tarea.HW_idUserHistory)
    } for tarea in taskList]

    #Action code ends here
    return json.dumps(res)
Пример #23
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)
Пример #24
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)
Пример #25
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)
Пример #26
0
def VSprint():
    #GET parameter
    res = {}

    # Obtenemos el id del producto y del sprint
    idPila = int(session['idPila'])
    idSprint = int(request.args.get('idSprint', 1))
    if "actor" in session:
        res['actor'] = session['actor']

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

    # Buscamos el actor actual

    oSprint = sprints()
    oBacklog = backlog()
    oUserHistory = userHistory()
    sprint = oSprint.searchIdSprint(idSprint, idPila)[0]

    res['fSprint'] = {
        'idSprint': idSprint,
        'numero': sprint.S_numero,
        'descripcion': sprint.S_sprintDescription,
        'fechini': sprint.S_fechini.strftime(DATE_FORMAT),
        'fechfin': sprint.S_fechfin.strftime(DATE_FORMAT),
        'state': sprint.S_state
    }

    #Obtenes las historias asignadas al sprint
    listaHistorias = oSprint.getAssignedSprintHistory(idSprint, idPila)
    userHistories = []

    #Acomodamos la escala asociada a la historia
    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 listaHistorias:
        result = oUserHistory.transformUserHistory(hist.UH_idUserHistory)

        if typeScale == 1:
            result['priority'] = priorities[hist.UH_scale]
        elif typeScale == 2:
            result['priority'] = priorities2[hist.UH_scale]
        userHistories.append(result)

    #Lista de Historias
    res['data6'] = [{
        'idHistoria':
        hist['idHistory'],
        'prioridad':
        hist['priority'],
        'enunciado':
        'En tanto ' + hist['actors'] + hist['accions'] + ' para ' +
        hist['objectives'],
        'resumen':
        hist['resume']
    } for hist in userHistories]

    listaTareas = oSprint.getAssignedSprintTask(
        idSprint, idPila)  # Tareas asignadas al Sprint
    #Lista de tareas
    res['data8'] = [{
        'idTarea': tarea.HW_idTask,
        'descripcion': tarea.HW_description
    } for tarea in listaTareas]

    session['idSprint'] = idSprint
    res['idSprint'] = idSprint
    res['idPila'] = idPila

    oMeeting = meeting()
    result = oMeeting.getMeetings(idSprint)
    res['data4'] = [{
        'id': res.SM_idSprintMeeting,
        'fecha': res.SM_meetingDate,
        'actividades': res.SM_activities,
        'tipo': res.SM_typeMeeting
    } for res in result]

    session['idSprint'] = idSprint
    res['idSprint'] = idSprint

    session['idPila'] = idPila
    res['idPila'] = idPila

    #Lista de criterios
    listaCriterios = oSprint.getAssignedSprintAC(
        idSprint, idPila)  # Criterios de aceptación asignados al Sprint
    res['data11'] = [{'idCriterio':criterio.HAC_idAcceptanceCriteria, \
                      'descripcion': "Historia " + \
                        clsUserHistory.query.filter_by(UH_idUserHistory = criterio.HAC_idUserHistory).first().UH_codeUserHistory \
                        + ": " + criterio.HAC_description} for criterio in listaCriterios]

    return json.dumps(res)
Пример #27
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)
Пример #28
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)
Пример #29
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)
Пример #30
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)
Пример #31
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)