def AModifObjetivo(): #POST/PUT parameters params = request.get_json() results = [{'label':'/VProducto', 'msg':['Objetivo actualizado']}, {'label':'/VProducto', 'msg':['Error al modificar objetivo']}, ] res = results[1] # Obtenemos el id del producto idPila = int(session['idPila']) # Extraemos los parámetros idObjetivo = params['idObjetivo'] newDescription = params['descripcion'] newType = params['transversal'] # Conseguimos el objetivo a modificar oObjetivo = objective() objetivoDesc = oObjetivo.searchIdObjective(idObjetivo) # Modificamos la descripción del objetivo result = oObjetivo.updateObjective(objetivoDesc[0].O_descObjective , newDescription,newType,idPila) if result: res = results[0] res['label'] = res['label'] + '/' + str(idPila) if "actor" in res: if res['actor'] is None: session.pop("actor", None) else: session['actor'] = res['actor'] return json.dumps(res)
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)
def VObjetivo(): #GET parameter res = {} # Obtenemos el id del producto y del objetivo idPila = int(session['idPila']) idObjective = int(request.args.get('idObjetivo')) boolean = {0:False,1:True} if "actor" in session: res['actor']=session['actor'] if 'usuario' not in session: res['logout'] = '/' return json.dumps(res) res['usuario'] = session['usuario'] # Determinamos el tipo de objetivo a través de su id oObjective = objective() result = oObjective.searchIdObjective(idObjective) number = int(result[0].O_objType) istransver = boolean[number] # Mostramos los objetivos en la vista res['fObjetivo_opcionesTransversalidad'] = [{'key':True, 'value':'Si'},{'key':False, 'value':'No'}] res['fObjetivo'] = {'idObjetivo':idObjective, 'descripcion':result[0].O_descObjective , 'transversal':istransver} res['idPila'] = idPila session['idObjective'] = idObjective return json.dumps(res)
def ACrearObjetivo(): #POST/PUT parameters params = request.get_json() results = [{'label':'/VProducto', 'msg':['Objetivo creado']}, {'label':'/VCrearObjetivo', 'msg':['Error al crear objetivo']}, ] res = results[1] # Obtenemos el id del producto idPila = int(session['idPila']) if request.method == 'POST': # Extraemos los parámetros newDescription = params['descripcion'] transverseObjective = params['transversal'] oObjective = objective() result = oObjective.insertObjective(newDescription,idPila,transverseObjective) if result: res = results[0] res['label'] = res['label'] + '/' + str(idPila) if "actor" in res: if res['actor'] is None: session.pop("actor", None) else: session['actor'] = res['actor'] return json.dumps(res)
def VCrearHistoria(): res = {} # Obtenemos el id del producto. idPila = int(request.args.get('idPila',1)) if "actor" in session: res['actor']=session['actor'] scale = {1:'Alta',2:'Media',3:'Baja'} # Obtenemos los datos asociados al producto oBacklog = backlog() oObjective = objective() actorList = oBacklog.actorsAsociatedToProduct(idPila) accionList = oBacklog.accionsAsociatedToProduct(idPila) objectiveList = oBacklog.objectivesAsociatedToProduct(idPila) historyList = oBacklog.userHistoryAsociatedToProduct(idPila) # Obtenemos todos los objetivos que son no trasnversales. for object in objectiveList: idObjective = object.O_idObjective transverse = oObjective.verifyObjectiveTransverse(idObjective) if int(transverse) == 1: objectiveList.remove(object) # Hallamos el tipo de escala seleccionado para el producto. typeScale = oBacklog.scaleType(idPila) # Obtenemos el tipo de escala asociado al producto (id,valor) resultScale = [] if typeScale == 1: resultScale = [(i,scale[i]) for i in range(1,3+1)] elif typeScale == 2: resultScale = [(i,i) for i in range(1,20+1)] # Valores dependientes del proyecto. res['fHistoria_opcionesActores'] = [{'key':act.A_idActor ,'value':act.A_nameActor }for act in actorList] res['fHistoria_opcionesAcciones'] = [{'key':acc.AC_idAccion,'value':acc.AC_accionDescription}for acc in accionList] res['fHistoria_opcionesAcciones'].append({'key':0,'value':'Seleccione una acción'}) res['fHistoria_opcionesObjetivos'] = [{'key':obj.O_idObjective ,'value':obj.O_descObjective}for obj in objectiveList] res['fHistoria_opcionesHistorias'] = [{'key':hist.UH_idUserHistory,'value':hist.UH_codeUserHistory}for hist in historyList] res['fHistoria_opcionesHistorias'].append({'key':0,'value':'Ninguno'}) res['fHistoria_opcionesTiposHistoria'] = [{'key':1,'value':'Opcional'},{'key':2,'value':'Obligatoria'}] res['fHistoria_opcionesTiposHistoria'].append({'key':0,'value':'Seleccione un tipo de acción'}) res['fHistoria_opcionesPrioridad'] = [{'key':scale[0], 'value':scale[1]}for scale in resultScale] res['fHistoria_opcionesPrioridad'].append({'key':0,'value':'Seleccione una prioridad'}) res['fHistoria'] = {'super':0, 'idPila':idPila,'actores':[],'objetivos':[],'accion':0,'tipo':0,'prioridad':0} res['idPila'] = idPila return json.dumps(res)
def VCrearHistoria(): res = {} # Obtenemos el id del producto. idPila = int(request.args.get('idPila',1)) if "actor" in session: res['actor']=session['actor'] scale = {1:'Alta',2:'Media',3:'Baja'} # Obtenemos los datos asociados al producto oBacklog = backlog() oObjective = objective() actorList = oBacklog.actorsAsociatedToProduct(idPila) accionList = oBacklog.accionsAsociatedToProduct(idPila) objectiveList = oBacklog.objectivesAsociatedToProduct(idPila) historyList = oBacklog.userHistoryAsociatedToProduct(idPila) # Obtenemos todos los objetivos que son no trasnversales. for object in objectiveList: idObjective = object.O_idObjective transverse = oObjective.verifyObjectiveTransverse(idObjective) if int(transverse) == 1: objectiveList.remove(object) # Hallamos el tipo de escala seleccionado para el producto. typeScale = oBacklog.scaleType(idPila) # Obtenemos el tipo de escala asociado al producto (id,valor) resultScale = [] if typeScale == 1: resultScale = [(i,scale[i]) for i in range(1,3+1)] elif typeScale == 2: resultScale = [(i,i) for i in range(1,20+1)] # Valores dependientes del proyecto. res['fHistoria_opcionesActores'] = [{'key':act.A_idActor ,'value':act.A_nameActor }for act in actorList] res['fHistoria_opcionesAcciones'] = [{'key':acc.AC_idAccion,'value':acc.AC_accionDescription}for acc in accionList] res['fHistoria_opcionesAcciones'].append({'key':0,'value':'Seleccione una acción'}) res['fHistoria_opcionesObjetivos'] = [{'key':obj.O_idObjective ,'value':obj.O_descObjective}for obj in objectiveList] res['fHistoria_opcionesHistorias'] = [{'key':hist.UH_idUserHistory,'value':hist.UH_codeUserHistory}for hist in historyList] res['fHistoria_opcionesHistorias'].append({'key':0,'value':'Ninguno'}) res['fHistoria_opcionesTiposHistoria'] = [{'key':1,'value':'Opcional'},{'key':2,'value':'Obligatoria'}] res['fHistoria_opcionesTiposHistoria'].append({'key':0,'value':'Seleccione un tipo de acción'}) res['fHistoria_opcionesPrioridad'] = [{'key':scale[0], 'value':scale[1]}for scale in resultScale] res['fHistoria_opcionesPrioridad'].append({'key':0,'value':'Seleccione una prioridad'}) res['fHistoria'] = {'super':0, 'idPila':idPila,'actores':[],'objetivos':[],'accion':0,'tipo':0,'prioridad':0} res['idPila'] = idPila return json.dumps(res)
def AModifObjetivo(): #POST/PUT parameters params = request.get_json() results = [ { 'label': '/VProducto', 'msg': ['Objetivo actualizado'] }, { 'label': '/VProducto', 'msg': ['Error al modificar objetivo'] }, ] res = results[1] # Obtenemos el id del producto idPila = int(session['idPila']) # Extraemos los parámetros idObjetivo = params['idObjetivo'] newDescription = params['descripcion'] newType = params['transversal'] # Conseguimos el objetivo a modificar oObjetivo = objective() objetivoDesc = oObjetivo.searchIdObjective(idObjetivo) # Modificamos la descripción del objetivo result = oObjetivo.updateObjective(objetivoDesc[0].O_descObjective, newDescription, newType, idPila) if result: res = results[0] res['label'] = res['label'] + '/' + str(idPila) if "actor" in res: if res['actor'] is None: session.pop("actor", None) else: session['actor'] = res['actor'] return json.dumps(res)
def VObjetivo(): #GET parameter res = {} # Obtenemos el id del producto y del objetivo idPila = int(session['idPila']) idObjective = int(request.args.get('idObjetivo')) boolean = {0: False, 1: True} if "actor" in session: res['actor'] = session['actor'] if 'usuario' not in session: res['logout'] = '/' return json.dumps(res) res['usuario'] = session['usuario'] # Determinamos el tipo de objetivo a través de su id oObjective = objective() result = oObjective.searchIdObjective(idObjective) number = int(result[0].O_objType) istransver = boolean[number] # Mostramos los objetivos en la vista res['fObjetivo_opcionesTransversalidad'] = [{ 'key': True, 'value': 'Si' }, { 'key': False, 'value': 'No' }] res['fObjetivo'] = { 'idObjetivo': idObjective, 'descripcion': result[0].O_descObjective, 'transversal': istransver } res['idPila'] = idPila session['idObjective'] = idObjective return json.dumps(res)
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)
def ACrearObjetivo(): #POST/PUT parameters params = request.get_json() results = [ { 'label': '/VProducto', 'msg': ['Objetivo creado'] }, { 'label': '/VCrearObjetivo', 'msg': ['Error al crear objetivo'] }, ] res = results[1] # Obtenemos el id del producto idPila = int(session['idPila']) if request.method == 'POST': # Extraemos los parámetros newDescription = params['descripcion'] transverseObjective = params['transversal'] oObjective = objective() result = oObjective.insertObjective(newDescription, idPila, transverseObjective) if result: res = results[0] res['label'] = res['label'] + '/' + str(idPila) if "actor" in res: if res['actor'] is None: session.pop("actor", None) else: session['actor'] = res['actor'] return json.dumps(res)
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)
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)
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)
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)
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)
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)