コード例 #1
0
    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
コード例 #2
0
ファイル: forms.py プロジェクト: frvc123/sigp
    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
コード例 #3
0
    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'
コード例 #4
0
    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
コード例 #5
0
    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'
コード例 #6
0
    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'
コード例 #7
0
ファイル: forms.py プロジェクト: frvc123/sigp
    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
コード例 #8
0
    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'
コード例 #9
0
    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
コード例 #10
0
    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
コード例 #11
0
ファイル: forms.py プロジェクト: frvc123/sigp
    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
コード例 #12
0
ファイル: forms.py プロジェクト: frvc123/sigp
    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
コード例 #13
0
    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'