Пример #1
0
def changeItem(request, id_item):
    """
        *Vista para la modificacion de una fase dentro del sistema.*
        *Opción válida para usuarios con los roles correspondientes.*

        :param request: HttpRequest necesario para modificar la fase, es la solicitud de la acción.
        :param id_fase: Identificador de la fase dentro del sistema la cual se desea modificar.
        :param args: Argumentos para el modelo ``Fase``.
        :param kwargs: Keyword Arguments para la el modelo ``Fase``.
        :return: Proporciona la pagina ``changephase.html`` con el formulario correspondiente.
                 Modifica la fase especifica y luego regresa al menu principal

    """
    mensajes = []
    items = ItemBase.objects.filter(pk=id_item)
    if items:
        print 'Inicio de Proceso de Modificacion'
    else:
        return

    item = ItemBase.objects.get(pk=id_item)
    tipoItem = item.tipoitem
    phase = tipoItem.fase
    project = phase.proyecto

    if request.method == 'POST':
        form = itemForm(request.POST, instance=item)
        form.fields['tipoitem'].queryset = TipoItem.objects.filter(fase=phase.id)
        if form.is_valid():
            item = form.save(commit=False)
            item.fecha_modificacion = timezone.now()
            item.usuario_modificacion = request.user
            item.version = reversion.get_unique_for_object(item).__len__() + 1
            item.save()

            message = 'Modificaciones concluidas con exito en el Item: ' + item.nombre
            error = 0
            mensajes.append(message)
            request.session['messages'] = mensajes
            request.session['error'] = error
            return HttpResponseRedirect('/workphase/' + str(phase.id))
    else:
        form = itemForm(instance=item)
        form.fields['tipoitem'].queryset = TipoItem.objects.filter(fase=phase.id)
    return render(request, 'item/changeitem.html', {'form': form, 'item': item, 'phase': phase, 'project': project,
                                                    'tiposItem': tipoItem, 'user': request.user}, )
Пример #2
0
def createItem(request, id_fase):
    """
    *Vista para la creación de fases en el sistema.
    Opción válida para usuarios con los roles correspondientes.*

    :param request: HttpRequest necesario para crear fases dentro de los proyectos, es la solicitud de la acción.
    :param id_proyecto: Identificador del proyecto dentro del sistema al cual se le vincularán las fases creadas.
    :param args: Argumentos para el modelo ``Item``.
    :param kwargs: Keyword Arguments para la el modelo ``Item``.
    :return: Proporciona la pagina ``createphase.html`` con el formulario correspondiente.
            Crea la fase dentro del proyecto especificando y luego regresa al menu principal
    """
    usuario = request.user
    fase = Fase.objects.get(pk=id_fase)
    proyecto = fase.proyecto

    if request.method == 'POST':
        form = itemForm(request.POST)
        form.fields['tipoitem'].queryset = TipoItem.objects.filter(fase=id_fase)
        if form.is_valid():
            item = form.save(commit=False)
            item.fecha_modificacion = timezone.now()
            item.usuario = usuario
            item.usuario_modificacion = usuario
            item.save()

            crearAtributos(item.id)

            mensajes = []
            mensajes.append('Item: ' + ItemBase.objects.last().nombre + ', creado exitosamente')
            request.session['messages'] = mensajes
            request.session['error'] = 0

            return HttpResponseRedirect('/workphase/' + str(fase.id))

    else:
        form = itemForm()
        form.fields['tipoitem'].queryset = TipoItem.objects.filter(fase=id_fase)
    return render(request, 'item/createitem.html', {'form': form, 'fase': fase, 'proyecto': proyecto,
                                                    'user': usuario}, )
Пример #3
0
    def test_changeItem_response(self):
        """
            *Test para la vista de modificacion de fases en el sistema.*
        """
        print '\nInicio - Prueba: changeItem'
        login = self.client.login(username='******', password='******')
        self.assertTrue(login)

        project = Proyecto.objects.get(nombre='Proyecto01')
        fase = Fase.objects.get(nombre='Fase01')
        fase.proyecto = project
        fase.save()
        tipoItem = TipoItem.objects.get(nombre='TipoItem01')
        tipoItem.fase = fase
        tipoItem.save()

        dato_item_exito = {
                  'usuario': self.user,
                  'usuario_modificacion': self.user,
                  'nombre': 'Item01',
                  'descripcion': 'Esto es un Item de prueba',
                  'estado' : 'ACT',
                  'fecha_creacion': timezone.now(),
                  'fecha_modificacion': timezone.now(),
                  'tipoitem': tipoItem.id,
                  'complejidad': 10,
                  'costo': 10,
                  'tiempo': 10,
                  'version': 1,
                  'linea_base': '', }

        form = itemForm(dato_item_exito)
        if form.is_valid():
            item = form.save(commit=False)
            item.usuario = self.user
            item.usuario_modificacion = self.user
            item.save()
        else:
            print 'Error en los datos del formulario'

        item = ItemBase.objects.get(nombre='Item01')
        print 'Prueba de Exitosa'

        dato_item_mod = {
                 'usuario': self.user,
                  'usuario_modificacion': self.user,
                  'nombre': 'Item01_Modificado',
                  'descripcion': 'Esto es un Item de prueba',
                  'estado' : 'ACT',
                  'fecha_creacion': timezone.now(),
                  'fecha_modificacion': timezone.now(),
                  'tipoitem': tipoItem.id,
                  'complejidad': 10,
                  'costo': 10,
                  'tiempo': 10,
                  'version': 1,
                  'linea_base': '', }

        request = self.factory.post('/changeitem/', dato_item_mod)
        request.user = self.user
        request.session = {}
        response = changeItem(request, item.id)

        if response == None:
            print 'Error Previsto: La item especificado no existe\nPor favor verifique los datos ingresados'
        else:
            self.assertEqual(response.status_code, 302, 'Error al modificar el Item')

        print '\nItem modificado exitosamente'
        print ItemBase.objects.all()
        print 'Fin - Prueba: changeItem\n'
        print 'Inicio - Prueba: changeItem(ERROR PREVISTO)'
        id_item = 3
        response = changeItem(request, id_item)
        if response == None:
           print 'Error Previsto: El código de item ' + str(id_item)  + ' especificado no existe\nPor favor verifique los datos ingresados'
        print 'Fin - Prueba: changePhase(ERROR PREVISTO)\n'
Пример #4
0
    def test_createItem_response(self):
        """
            *Test para la vista de creacion de proyectos en el sistema*
        """
        print '\nInicio - Prueba: Creacion de Item'
        login = self.client.login(username='******', password='******')
        self.assertTrue(login)
        project = Proyecto.objects.get(nombre='Proyecto01')
        fase = Fase.objects.get(nombre='Fase01')
        fase.proyecto = project
        fase.save()
        tipoItem = TipoItem.objects.get(nombre='TipoItem01')

        dato_item_exito = {
                'usuario': self.user,
                'usuario_modificacion': self.user,
                'nombre': 'Item01',
                'descripcion': 'Esto es un Item de prueba',
                'estado' : 'ACT',
                'fecha_creacion': timezone.now(),
                'fecha_modificacion': timezone.now(),
                'tipoitem': tipoItem.id,
                'complejidad': 10,
                'costo': 10,
                'tiempo': 10,
                'version': 1,
                'linea_base': '', }

        print 'Prueba de Exitosa'
        request = self.factory.post('/createitem/', dato_item_exito)
        request.user = self.user
        request.session = {}
        response = createItem(request, id_fase=fase.id)
        self.assertEqual(response.status_code, 302, 'Error al crear el Item')
        print ItemBase.objects.all()

        print '\nPrueba con Error Previsto'
        dato_item_falso = {
                'usuario': self.user,
                'usuario_modificacion': self.user,
                'nombre': 'Item01',
                'descripcion': 'Esto es un Item de prueba',
                'estado' : 'ACT',
                'fecha_creacion': timezone.now(),
                'fecha_modificacion': timezone.now(),
                'tipoitem': tipoItem,
                'complejidad': 10,
                'costo': 10,
                'tiempo': 10,
                'version': 1,
                'linea_base': '', }

        form = itemForm(dato_item_falso)
        try:
            form.save()
        except TypeError as e:
            print e
            print 'Error en el formulario, el campo tipo de item no recibe un dato válido'

        request = self.factory.post('/createitem/', dato_item_falso)
        request.user = self.user
        request.session = {}
        response = createItem(request, id_fase=fase.id)
        if response.status_code == 200:
            self.assertEqual(response.status_code, 200, 'Error en la creación de ítems, los datos ingresados en el formulario no son válidos')
            print 'Es posible establecer una conexión con la vista. \nPero no es posible crear el ítem, ya que existen campos inválidos en el formulario.'
        else:
            self.assertEqual(response.status_code, 302, 'Error en la creación de ítems, los datos ingresados en el formulario no son válidos')

        print 'Fin - Prueba: Creacion de Item\n'