def save(self, commit=True): if not commit: raise NotImplementedError("No se puede crear el Proyecto") proyecto = super(ProyectoCreateForm, self).save(commit=True) scrum_master = User.objects.get( pk=self.cleaned_data['scrum_master'].pk) rolproyecto = RolProyecto.objects.get(group__name='Scrum Master') grupo = Group.objects.get(name='Scrum Master') #Se agrega al usuario al equipo proyecto.equipo.add(scrum_master) #Se agrega el rol al usuario scrum_master.usuario.rolesproyecto.add(rolproyecto) scrum_master.groups.add(grupo) #Se agrega el registro de la asignacion del rol a la tabla USER_ROLPROYECTO_PROYECTO rolproyecto_proyecto = RolProyecto_Proyecto(user=scrum_master, rol_proyecto=rolproyecto, proyecto=proyecto) max_length = Proyecto._meta.get_field('codigo').max_length proyecto.codigo = orig = slugify(proyecto.nombre_corto[0])[:max_length] for x in itertools.count(1): if not Proyecto.objects.filter(codigo=proyecto.codigo).exists(): break # Truncate the original slug dynamically. Minus 1 for the hyphen. proyecto.codigo = "%s-%d" % (orig[:max_length - len(str(x)) - 1], x) proyecto.save() rolproyecto_proyecto.save() scrum_master.save() return proyecto
def save(self, commit=True): if not commit: raise NotImplementedError("No se puede crear el Proyecto") proyecto = super(ProyectoCreateForm, self).save(commit=True) scrum_master = User.objects.get(pk=self.cleaned_data['scrum_master'].pk) rolproyecto = RolProyecto.objects.get(group__name='Scrum Master') grupo = Group.objects.get(name='Scrum Master') #Se agrega al usuario al equipo proyecto.equipo.add(scrum_master) #Se agrega el rol al usuario scrum_master.usuario.rolesproyecto.add(rolproyecto) scrum_master.groups.add(grupo) #Se agrega el registro de la asignacion del rol a la tabla USER_ROLPROYECTO_PROYECTO rolproyecto_proyecto = RolProyecto_Proyecto(user=scrum_master, rol_proyecto=rolproyecto, proyecto=proyecto) max_length = Proyecto._meta.get_field('codigo').max_length proyecto.codigo = orig = slugify(proyecto.nombre_corto[0])[:max_length] for x in itertools.count(1): if not Proyecto.objects.filter(codigo=proyecto.codigo).exists(): break # Truncate the original slug dynamically. Minus 1 for the hyphen. proyecto.codigo = "%s-%d" % (orig[:max_length - len(str(x)) - 1], x) proyecto.save() rolproyecto_proyecto.save() scrum_master.save() return proyecto
def test_view_SprintBacklogIndexView(self): """ Funcion que realiza el test sobre la vista SprintBacklogIndexView que genera lista de user stories del sprint """ # se loguea el usuario testuser user = self.client.login(username='******', password='******') self.assertTrue(user) user2 = User.objects.create_user(username='******', email='*****@*****.**', password='******') proyecto = Proyecto.objects.create(codigo='codi', nombre_corto='test', nombre_largo='test', cancelado=False, scrum_master=user2) proyecto.save() sprint = Sprint.objects.create(nombre='sprint', duracion=15, proyecto=proyecto) sprint.save() # se crean 10 user stories para controlar que se retorne la lista completa, que seran 10 en total for i in range(10): user_story = UserStory.objects.create(nombre='us%s' % i, descripcion='desc%s' % i, valor_negocio='%d' % i, proyecto=proyecto, sprint=sprint) user_story.save() group = Group.objects.create(name='grupo') group.save() rolProyecto = RolProyecto(group=group, es_rol_proyecto=True) rolProyecto.save() row_rol = RolProyecto_Proyecto(user=self.user, rol_proyecto=rolProyecto, proyecto=proyecto) row_rol.save() # verificamos que la vista devuelva el template adecuado request = self.factory.get( reverse('sprints:backlog', args=[proyecto.pk, sprint.pk])) request.user = self.user response = SprintBacklogIndexView.as_view()(request, pk_proyecto=proyecto.pk, pk_sprint=sprint.pk) self.assertEqual(response.status_code, 200) self.assertEqual(response.template_name[0], 'sprints/sprint_backlog.html') # verificamos los user stories retornados self.assertEqual(len(response.context_data['object_list']), 10) print 'Test de SprintBacklogIndexView de Sprints realizado exitosamente'
def save(self, commit=True): print "HeiHei" if not commit: print "errror" raise NotImplementedError( "Can't create Miembro without database save") proyecto = super(AddMiembroForm, self).save(commit=True) user = User.objects.get(pk=self.cleaned_data['usuario'].pk) print user proyecto.equipo.add(user) usuario = Usuario.objects.get(user=user) # rol = Group.objects.get(pk=self.cleaned_data['rolproyecto'].pk) print self.cleaned_data['rolproyecto'] for rol in self.cleaned_data['rolproyecto']: print rol grupo = Group.objects.get(name=rol.name) rolpro = RolProyecto.objects.get(group=rol) usuario.rolesproyecto.add(rolpro) user.groups.add(grupo) rolproyecto = RolProyecto.objects.get(group=rol) if RolProyecto_Proyecto.objects.filter(user=user, rol_proyecto=rolproyecto, proyecto=proyecto): nuevo = False else: if RolProyecto_Proyecto.objects.filter( rol_proyecto__group__name='Scrum Master', proyecto=proyecto ) and rolproyecto.group.name == 'Scrum Master': existe_sm = True nuevo = False print "%s en si" % rolproyecto else: rolproyecto_proyecto = RolProyecto_Proyecto( user=user, rol_proyecto=rolproyecto, proyecto=proyecto) rolproyecto_proyecto.save() nuevo = True print nuevo if nuevo: usuario.save() proyecto.save() user.save() else: pass return proyecto
def test_view_FlujosProyectoIndex(self): """ Funcion que realiza el test sobre la vista FlujosProyectoIndex que genera lista de flujos dentro de un proyecto """ # se loguea el usuario testuser user = self.client.login(username='******', password='******') self.assertTrue(user) user2 = User.objects.create_user(username='******', email='*****@*****.**', password='******') proyecto = Proyecto.objects.create(codigo='codi', nombre_corto='test', nombre_largo='test', cancelado=False, scrum_master=user2) proyecto.save() lista_actividades = [] # se crean 3 actividades para controlar que se retorne la lista completa de sprints, que seran 3 en total for i in range(3): actividad_flujo = Actividad.objects.create(nombre='actividad%s' % i) actividad_flujo.save() lista_actividades.append(actividad_flujo) # se crean 10 flujos para controlar que se retorne la lista completa de flujos, que seran 10 en total for i in range(10): flujo = Flujo.objects.create(nombre='flujo%s' % i, proyecto=proyecto) flujo.actividades = lista_actividades flujo.save() group = Group.objects.create(name='grupo') group.save() rolProyecto = RolProyecto(group=group, es_rol_proyecto=True) rolProyecto.save() row_rol = RolProyecto_Proyecto(user=self.user, rol_proyecto=rolProyecto, proyecto=proyecto) row_rol.save() # verificamos que la vista devuelva el template adecuado request = self.factory.get(reverse('flujos:flujos_proyecto_index', args=[proyecto.pk])) request.user = self.user response = FlujosProyectoIndex.as_view()(request, pk_proyecto=proyecto.pk) self.assertEqual(response.status_code, 200) self.assertEqual(response.template_name[0], 'flujos/flujos_proyecto_index.html') # verificamos las plantillas de flujo retornados self.assertEqual(len(response.context_data['object_list']), 10) print 'Test de FlujosProyectoIndex realizado exitosamente'
def test_view_proyecto_reporte_trabajos_usuario(self): """ Funcion que realiza el test sobre la vista proyecto_reporte_trabajos_usuario que genera el reporte de los trabajos realizados por cada usuario """ # se loguea el usuario testuser user = self.client.login(username='******', password='******') self.assertTrue(user) user2 = User.objects.create_user(username='******', email='*****@*****.**', password='******') proyecto = Proyecto.objects.create(codigo='co', nombre_corto='test', nombre_largo='test', cancelado=False, scrum_master=user2) for i in range(10): sprint_s = Sprint.objects.create(nombre='sprint%s' % i, duracion='%d' % i, proyecto=proyecto, estado='Activo') sprint_s.save() sprint = Sprint.objects.filter(estado='Activo') group = Group.objects.create(name='Developer') group.save() rolProyecto = RolProyecto(group=group, es_rol_proyecto=True) rolProyecto.save() row_rol = RolProyecto_Proyecto(user=self.user, rol_proyecto=rolProyecto, proyecto=proyecto) row_rol.save() # verificamos que la vista devuelva el template adecuado request = self.factory.get( reverse('proyectos:reporte_trabajo_usuario', args=[proyecto.pk])) request.user = self.user view = proyecto_reporte_trabajos_usuario response = view(request, pk=proyecto.pk) self.assertEqual(response.status_code, 200) print 'Test de proyecto_reporte_trabajos_usuario realizado exitosamente'
def save(self, commit=True): print "HeiHei" if not commit: print "errror" raise NotImplementedError("Can't create Miembro without database save") proyecto = super(AddMiembroForm, self).save(commit=True) user = User.objects.get(pk=self.cleaned_data['usuario'].pk) print user proyecto.equipo.add(user) usuario = Usuario.objects.get(user=user) # rol = Group.objects.get(pk=self.cleaned_data['rolproyecto'].pk) print self.cleaned_data['rolproyecto'] for rol in self.cleaned_data['rolproyecto']: print rol grupo = Group.objects.get(name=rol.name) rolpro = RolProyecto.objects.get(group=rol) usuario.rolesproyecto.add(rolpro) user.groups.add(grupo) rolproyecto = RolProyecto.objects.get(group=rol) if RolProyecto_Proyecto.objects.filter(user=user, rol_proyecto=rolproyecto, proyecto=proyecto): nuevo = False else: if RolProyecto_Proyecto.objects.filter(rol_proyecto__group__name='Scrum Master', proyecto=proyecto) and rolproyecto.group.name == 'Scrum Master': existe_sm = True nuevo = False print "%s en si" % rolproyecto else: rolproyecto_proyecto = RolProyecto_Proyecto(user=user, rol_proyecto=rolproyecto, proyecto=proyecto) rolproyecto_proyecto.save() nuevo = True print nuevo if nuevo: usuario.save() proyecto.save() user.save() else: pass return proyecto
def test_view_FlujoProyectoAsignar(self): """ Funcion que realiza el test sobre la vista FlujoProyectoAsignar que asigna un flujo a un proyecto """ # se loguea el usuario testuser user = self.client.login(username='******', password='******') self.assertTrue(user) user4 = User.objects.create_user(username='******', email='*****@*****.**', password='******') # se crea un usuario proyecto = Proyecto.objects.create(codigo='codi', nombre_corto='test', nombre_largo='test', cancelado=False, scrum_master=user4) proyecto.save() lista_actividades = [] # se crean 3 actividades para controlar que se retorne la lista completa de sprints, que seran 3 en total for i in range(3): actividad_flujo = Actividad.objects.create(nombre='actividad%s' % i) actividad_flujo.save() lista_actividades.append(actividad_flujo) flujo = Flujo.objects.create(nombre='flujo', proyecto=proyecto) flujo.actividades = lista_actividades flujo.save() group = Group.objects.create(name='grupo') group.save() rolProyecto = RolProyecto(group=group, es_rol_proyecto=True) rolProyecto.save() row_rol = RolProyecto_Proyecto(user=self.user, rol_proyecto=rolProyecto, proyecto=proyecto) row_rol.save() self.assertEqual(flujo.nombre, 'flujo') self.assertEqual(flujo.proyecto, proyecto) print 'Test de FlujoProyectoAsignar realizado exitosamente'
def save(self, commit=True): if not commit: raise NotImplementedError( "Can't create Proyecto without database save") proyecto = super(ProyectoUpdateForm, self).save(commit=True) proyecto_antiguo = Proyecto.objects.get(pk=self.instance.pk) print proyecto print proyecto_antiguo estado = self.cleaned_data['estado'] scrum_master = User.objects.get( pk=self.cleaned_data['scrum_master'].pk) rolproyecto = RolProyecto.objects.get(group__name='Scrum Master') grupo = Group.objects.get(name='Scrum Master') #obtenemos esl usuario anterior con el rol scrum master usuario_anterior = proyecto_antiguo.scrum_master #asignamos al nuevo usuario como scrum master del proyecto proyecto.scrum_master = scrum_master #asignamos el nuevo estado proyecto.estado = estado for miembro in proyecto_antiguo.equipo.all(): if miembro != scrum_master: try: entrar = RolProyecto_Proyecto.objects.get( user=miembro, rol_proyecto=rolproyecto, proyecto=proyecto_antiguo) except ObjectDoesNotExist: entrar = None print entrar if entrar: row = RolProyecto_Proyecto.objects.get( user=miembro, rol_proyecto=rolproyecto, proyecto=proyecto_antiguo) print row if row: row.delete() else: pass else: try: entrar2 = RolProyecto_Proyecto.objects.get( user=miembro, rol_proyecto=rolproyecto, proyecto=proyecto_antiguo) except ObjectDoesNotExist: entrar2 = None if entrar2: #se le quita el rol Scrum master al usuario_anterior #miembro.groups.remove(grupo) row_scrum = RolProyecto_Proyecto.objects.get( user=miembro, rol_proyecto=rolproyecto, proyecto=proyecto_antiguo) row_scrum.delete() #Se agrega como rol de proyecto y como group scrum_master.usuario.rolesproyecto.add(rolproyecto) scrum_master.groups.add(grupo) #Se agrega al usuario al equipo proyecto.equipo.add(scrum_master) #Se agrega el rol al usuario scrum_master.usuario.rolesproyecto.add(rolproyecto) #Se agrega el registro de la asignacion del rol a la tabla USER_ROLPROYECTO_PROYECTO rolproyecto_proyecto = RolProyecto_Proyecto(user=scrum_master, rol_proyecto=rolproyecto, proyecto=proyecto) rolproyecto_proyecto.save() proyecto.save() scrum_master.save() return proyecto
def save(self, commit=True): print "HeiHei" if not commit: print "errror" raise NotImplementedError( "Can't create Miembro without database save") proyecto = super(RolMiembroForm, self).save(commit=True) user = User.objects.get(username=self.cleaned_data['usuario']) # user = User.objects.get(pk=self.cleaned_data['usuario'].pk) print user # proyecto.equipo.add(user) usuario = Usuario.objects.get(user=user) # rol = Group.objects.get(pk=self.cleaned_data['rolproyecto'].pk) nuevo = True print self.cleaned_data['rolproyecto'] for rol in self.cleaned_data['rolproyecto']: print "for %s" % rol grupo = Group.objects.get(name=rol.name) rolpro = RolProyecto.objects.get(group=rol) usuario.rolesproyecto.add(rolpro) user.groups.add(grupo) rolproyecto = RolProyecto.objects.get(group=rol) #no importa if RolProyecto_Proyecto.objects.filter(user=user, rol_proyecto=rolproyecto, proyecto=proyecto): nuevo = False else: rolproyecto_proyecto = RolProyecto_Proyecto( user=user, rol_proyecto=rolproyecto, proyecto=proyecto) rolproyecto_proyecto.save() nuevo = True print "nuevo True" solo_del_usuario = RolProyecto_Proyecto.objects.filter( user=user, proyecto=proyecto) print "en form solo_del_usuario = %s" % solo_del_usuario #listar los roles en ese proyecto roles_proyecto_del_usuario = solo_del_usuario.values( 'rol_proyecto').distinct() print "en form roles_proyecto_del_usuario = %s" % roles_proyecto_del_usuario roro = Group.objects.filter( rolproyecto__pk__in=roles_proyecto_del_usuario) lista_de_roles_en_pro = roro print "lista_de_roles_en_pro = %s" % lista_de_roles_en_pro print "self.cleaned_data['rolproyecto'] = %s" % self.cleaned_data[ 'rolproyecto'] if lista_de_roles_en_pro == self.cleaned_data['rolproyecto']: print "Son listas iguales" else: print "Son listas diferentes" # for item2 in self.cleaned_data['rolproyecto']: for item1 in lista_de_roles_en_pro: if item1.name != 'Scrum Master': if item1 not in self.cleaned_data['rolproyecto']: rol1 = RolProyecto.objects.get(group__pk=item1.pk) RolProyecto_Proyecto.objects.get( user=user, rol_proyecto=rol1, proyecto=proyecto).delete() grupo = Group.objects.get(name=rol1.group.name) user.groups.remove(grupo) print nuevo if nuevo: usuario.save() # proyecto.save() user.save() else: pass return proyecto
def save(self, commit=True): if not commit: raise NotImplementedError("Can't create Proyecto without database save") proyecto = super(ProyectoUpdateForm, self).save(commit=True) proyecto_antiguo = Proyecto.objects.get(pk=self.instance.pk) print proyecto print proyecto_antiguo estado = self.cleaned_data['estado'] scrum_master = User.objects.get(pk=self.cleaned_data['scrum_master'].pk) rolproyecto = RolProyecto.objects.get(group__name='Scrum Master') grupo = Group.objects.get(name='Scrum Master') #obtenemos esl usuario anterior con el rol scrum master usuario_anterior = proyecto_antiguo.scrum_master #asignamos al nuevo usuario como scrum master del proyecto proyecto.scrum_master = scrum_master #asignamos el nuevo estado proyecto.estado = estado for miembro in proyecto_antiguo.equipo.all(): if miembro != scrum_master: try: entrar = RolProyecto_Proyecto.objects.get(user=miembro, rol_proyecto=rolproyecto, proyecto=proyecto_antiguo) except ObjectDoesNotExist: entrar = None print entrar if entrar: row = RolProyecto_Proyecto.objects.get(user=miembro, rol_proyecto=rolproyecto, proyecto=proyecto_antiguo) print row if row: row.delete() else: pass else: try: entrar2 = RolProyecto_Proyecto.objects.get(user=miembro, rol_proyecto=rolproyecto, proyecto=proyecto_antiguo) except ObjectDoesNotExist: entrar2 = None if entrar2: #se le quita el rol Scrum master al usuario_anterior #miembro.groups.remove(grupo) row_scrum = RolProyecto_Proyecto.objects.get(user=miembro, rol_proyecto=rolproyecto, proyecto=proyecto_antiguo) row_scrum.delete() #Se agrega como rol de proyecto y como group scrum_master.usuario.rolesproyecto.add(rolproyecto) scrum_master.groups.add(grupo) #Se agrega al usuario al equipo proyecto.equipo.add(scrum_master) #Se agrega el rol al usuario scrum_master.usuario.rolesproyecto.add(rolproyecto) #Se agrega el registro de la asignacion del rol a la tabla USER_ROLPROYECTO_PROYECTO rolproyecto_proyecto = RolProyecto_Proyecto(user=scrum_master, rol_proyecto=rolproyecto, proyecto=proyecto) rolproyecto_proyecto.save() proyecto.save() scrum_master.save() return proyecto
def save(self, commit=True): print "HeiHei" if not commit: print "errror" raise NotImplementedError("Can't create Miembro without database save") proyecto = super(RolMiembroForm, self).save(commit=True) user = User.objects.get(username=self.cleaned_data['usuario']) # user = User.objects.get(pk=self.cleaned_data['usuario'].pk) print user # proyecto.equipo.add(user) usuario = Usuario.objects.get(user=user) # rol = Group.objects.get(pk=self.cleaned_data['rolproyecto'].pk) nuevo = True print self.cleaned_data['rolproyecto'] for rol in self.cleaned_data['rolproyecto']: print "for %s" % rol grupo = Group.objects.get(name=rol.name) rolpro = RolProyecto.objects.get(group=rol) usuario.rolesproyecto.add(rolpro) user.groups.add(grupo) rolproyecto = RolProyecto.objects.get(group=rol) #no importa if RolProyecto_Proyecto.objects.filter(user=user, rol_proyecto=rolproyecto, proyecto=proyecto): nuevo = False else: rolproyecto_proyecto = RolProyecto_Proyecto(user=user, rol_proyecto=rolproyecto, proyecto=proyecto) rolproyecto_proyecto.save() nuevo = True print "nuevo True" solo_del_usuario = RolProyecto_Proyecto.objects.filter(user=user, proyecto=proyecto) print "en form solo_del_usuario = %s" % solo_del_usuario #listar los roles en ese proyecto roles_proyecto_del_usuario = solo_del_usuario.values('rol_proyecto').distinct() print "en form roles_proyecto_del_usuario = %s" % roles_proyecto_del_usuario roro = Group.objects.filter(rolproyecto__pk__in=roles_proyecto_del_usuario) lista_de_roles_en_pro = roro print "lista_de_roles_en_pro = %s" % lista_de_roles_en_pro print "self.cleaned_data['rolproyecto'] = %s" % self.cleaned_data['rolproyecto'] if lista_de_roles_en_pro == self.cleaned_data['rolproyecto']: print "Son listas iguales" else: print "Son listas diferentes" # for item2 in self.cleaned_data['rolproyecto']: for item1 in lista_de_roles_en_pro: if item1.name != 'Scrum Master': if item1 not in self.cleaned_data['rolproyecto']: rol1 = RolProyecto.objects.get(group__pk=item1.pk) RolProyecto_Proyecto.objects.get(user=user, rol_proyecto=rol1, proyecto=proyecto).delete() grupo = Group.objects.get(name=rol1.group.name) user.groups.remove(grupo) print nuevo if nuevo: usuario.save() # proyecto.save() user.save() else: pass return proyecto
def test_view_TareasIndexView(self): """ Funcion que realiza el test sobre la vista TareasIndexView que genera lista de tareas del user stories del sprint """ # se loguea el usuario testuser user = self.client.login(username='******', password='******') self.assertTrue(user) user2 = User.objects.create_user(username='******', email='*****@*****.**', password='******') proyecto = Proyecto.objects.create(codigo='codi', nombre_corto='test', nombre_largo='test', cancelado=False, scrum_master=user2) proyecto.save() sprint = Sprint.objects.create(nombre='sprint', duracion=15, proyecto=proyecto) sprint.save() user_story = UserStory.objects.create(nombre='us', descripcion='desc', valor_negocio=2, proyecto=proyecto, sprint=sprint) user_story.save() group = Group.objects.create(name='grupo') group.save() rolProyecto = RolProyecto(group=group, es_rol_proyecto=True) rolProyecto.save() row_rol = RolProyecto_Proyecto(user=self.user, rol_proyecto=rolProyecto, proyecto=proyecto) row_rol.save() actividad = Actividad(nombre='actividad') actividad.save() estado = Estado(nombre='estado') estado.save() flujo = Flujo(nombre='flujo') flujo.save() for i in range(10): tarea = Tarea.objects.create(user_story=user_story, descripcion='Una descripcion', horas_de_trabajo=20, actividad=actividad, estado=estado, sprint=sprint, flujo=flujo) tarea.save() self.assertEqual(tarea.user_story, user_story) self.assertEqual(tarea.descripcion, 'Una descripcion') self.assertEqual(tarea.horas_de_trabajo, 20) # verificamos que la vista devuelva el template adecuado request = self.factory.get( reverse('sprints:ver_tareas', args=[proyecto.pk, sprint.pk, user_story.pk])) request.user = self.user response = TareasIndexView.as_view()(request, pk_proyecto=proyecto.pk, pk_sprint=sprint.pk, pk_user_story=user_story.pk) self.assertEqual(response.status_code, 200) self.assertEqual(response.template_name[0], 'sprints/ver_tareas.html') # verificamos los user stories retornados self.assertEqual(len(response.context_data['object_list']), 10) print 'Test de TareasIndexView de Sprints realizado exitosamente'