Exemplo n.º 1
0
    def save(self, commit=True):
        cleaned_data = super(RegistrarTareaForm, self).clean()
        #usuario = Usuario.objects.get(user=self.instance)
        #proyecto = Proyecto.objects.get(pk=self.instance.pk)

        sprint = super(RegistrarTareaForm, self).save(commit=True)

        user_story = UserStory.objects.get(pk=self.cleaned_data['id'].pk)

        tarea = Tarea()
        tarea.user_story = user_story
        tarea.descripcion = self.cleaned_data['descripcion']
        tarea.horas_de_trabajo = self.cleaned_data['horas']
        tarea.sprint = sprint
        tarea.flujo = user_story.flujo
        tarea.actividad = user_story.userstorydetalle.actividad
        tarea.estado = user_story.userstorydetalle.estado
        tarea.tipo = 'Registro de Tarea'
        tarea.usuario = self.user
        tarea.save()

        user_story.horas_acumuladas = user_story.horas_acumuladas + tarea.horas_de_trabajo
        user_story.save()

        return sprint
Exemplo n.º 2
0
    def save(self, commit=True):
        print "saaaaa"
        cleaned_data = super(AgregarNotaForm, self).clean()
        #usuario = Usuario.objects.get(user=self.instance)
        #proyecto = Proyecto.objects.get(pk=self.instance.pk)

        sprint = super(AgregarNotaForm, self).save(commit=True)

        user_story = UserStory.objects.get(pk=self.cleaned_data['id'].pk)
        #proyecto = Proyecto.objects.get(pk=self.cleaned_data['proyecto'].pk)

        nota = Nota()
        nota.texto = self.cleaned_data['texto']
        nota.user_story = user_story
        nota.usuario = self.user

        print "save nota = %s" % user_story

        user_story.estado = 'Aprobado'
        user_story.save()

        tarea = Tarea()
        tarea.user_story = user_story
        tarea.descripcion = "Aprobar user story"
        tarea.horas_de_trabajo = 0
        tarea.sprint = sprint
        tarea.flujo = user_story.flujo
        tarea.actividad = user_story.userstorydetalle.actividad
        tarea.estado = user_story.userstorydetalle.estado
        tarea.tipo = 'Cambio de Estado'
        tarea.usuario = self.user
        tarea.save()

        historial_us = HistorialUserStory(user_story=user_story, operacion='aprobado', usuario=self.user)
        historial_us.save()






        nota.save()

        return sprint
Exemplo n.º 3
0
def aprobar_user_story(request, pk_proyecto, pk_sprint, pk_user_story):
    """
    Funcion que permite aprobar un user story finalizado en un flujo.

    @type request: django.http.HttpRequest
    @param request: Contiene informacion sobre la peticion actual

    @type pk_proyecto: string
    @param pk_proyecto: id del proyecto

    @type pk_sprint: string
    @param pk_sprint: id del sprint

    @type pk_user_story: string
    @param pk_user_story: id del user story

    @rtype: django.http.HttpResponseRedirect
    @return: Renderiza sprints/sprint_kanban.html para obtener el kanban actual
    """

    template = 'sprints/user_story_aprobar.html'
    proyecto = get_object_or_404(Proyecto, pk=pk_proyecto)
    sprint = get_object_or_404(Sprint, pk=pk_sprint)
    user_story = get_object_or_404(UserStory, pk=pk_user_story)
    usuario = request.user
    detalle = UserStoryDetalle.objects.get(user_story=user_story)
    lista_tareas_us = Tarea.objects.filter(user_story=user_story)
    horas_acumuladas = 0

    us_id = user_story.id
    uri = request.build_absolute_uri()
    print "uri= %s" % uri

    uri_us = urlparse.urljoin(uri, '../../tareas/%s/' % us_id)
    print "uri_us= %s" % uri_us

    for tarea in lista_tareas_us:
        horas_acumuladas = horas_acumuladas + tarea.horas_de_trabajo

    if request.method == 'POST':
        user_story.estado = 'Aprobado'
        user_story.save()

        tarea = Tarea()
        tarea.user_story = user_story
        tarea.descripcion = "Aprobar user story"
        tarea.horas_de_trabajo = 0
        tarea.sprint = sprint
        tarea.flujo = user_story.flujo
        tarea.actividad = user_story.userstorydetalle.actividad
        tarea.estado = user_story.userstorydetalle.estado
        tarea.tipo = 'Cambio de Estado'
        tarea.usuario = request.user
        tarea.save()

        #se envia la notificacion a traves de celery
        aprobacion_user_story.delay(proyecto.nombre_corto, sprint.nombre, user_story.nombre, user_story.flujo.nombre, uri_us)

        return HttpResponseRedirect(reverse('sprints:kanban', args=[pk_proyecto, pk_sprint]))

    return render(request, template, locals())
Exemplo n.º 4
0
def adjuntar_archivo(request, pk_proyecto, pk_sprint, pk_user_story):
    """
    Funcion que permite adjuntar un archivo a un user story seleccionado en un flujo.

    @type request: django.http.HttpRequest
    @param request: Contiene informacion sobre la peticion actual

    @type pk_proyecto: string
    @param pk_proyecto: id del proyecto

    @type pk_sprint: string
    @param pk_sprint: id del sprint

    @type pk_user_story: string
    @param pk_user_story: id del user story

    @rtype: django.http.HttpResponseRedirect
    @return: Renderiza sprints/sprint_kanban.html para obtener el kanban actual
    """

    template = 'sprints/user_story_adjuntar_archivo.html'
    proyecto = get_object_or_404(Proyecto, pk=pk_proyecto)
    sprint = get_object_or_404(Sprint, pk=pk_sprint)
    user_story = get_object_or_404(UserStory, pk=pk_user_story)
    usuario = request.user
    detalle = UserStoryDetalle.objects.get(user_story=user_story)

    lista_archivos = Archivo.objects.filter(user_story=user_story)

    if request.method == 'POST':
        form = AdjuntarArchivoForm(request.POST, request.FILES)

        try:
            if form.is_valid:
                nuevo_archivo = Archivo(user_story=user_story, archivo=request.FILES['archivo'])
                #nuevo_archivo.user_Story = user_story
                nuevo_archivo.save()

                tarea = Tarea()
                tarea.user_story = user_story
                tarea.descripcion = "Adjuntar archivo"
                tarea.horas_de_trabajo = 0
                tarea.sprint = sprint
                tarea.flujo = user_story.flujo
                tarea.actividad = user_story.userstorydetalle.actividad
                tarea.estado = user_story.userstorydetalle.estado
                tarea.tipo = 'Registro de Tarea'
                tarea.usuario = request.user
                tarea.save()

                return HttpResponseRedirect(reverse('sprints:adjuntar_archivo', args=[pk_proyecto, pk_sprint, pk_user_story]))
        except Exception, e:
            print e
            mensaje = 'No se pudo subir el archivo.'
            return render(request, 'sprints/user_story_adjuntar_archivo.html', locals())
Exemplo n.º 5
0
def revertir_estado(request, pk_proyecto, pk_sprint, pk_user_story):
    """
    Funcion que revierte el estado y/o la actividad de un user story seleccionado en un flujo.

    @type request: django.http.HttpRequest
    @param request: Contiene informacion sobre la peticion actual

    @type pk_proyecto: string
    @param pk_proyecto: id del proyecto

    @type pk_sprint: string
    @param pk_sprint: id del sprint

    @type pk_user_story: string
    @param pk_user_story: id del user story

    @rtype: django.http.HttpResponseRedirect
    @return: Renderiza sprints/sprint_kanban.html para obtener el kanban actual
    """
    proyecto = get_object_or_404(Proyecto, pk=pk_proyecto)
    sprint = get_object_or_404(Sprint, pk=pk_sprint)
    user_story = get_object_or_404(UserStory, pk=pk_user_story)

    actividades = user_story.flujo.actividades.all().order_by('pk')
    #estados = actividades[0].estados.all()
    detalle = UserStoryDetalle.objects.get(user_story=user_story)
    us_original_act = user_story.userstorydetalle.actividad
    us_original_est = user_story.userstorydetalle.estado

    us_id = user_story.id
    uri = request.build_absolute_uri()
    print "uri= %s" % uri

    uri_us = urlparse.urljoin(uri, '../../tareas/%s/' % us_id)
    print "uri_us= %s" % uri_us

    for index, act in enumerate(actividades):
        estados = act.estados.all()
        if us_original_act == act:

            if actividades[0] != us_original_act:

                if user_story.estado == 'Activo':
                    detalle.actividad = actividades[index-1]

                    tarea = Tarea()
                    tarea.user_story = user_story
                    tarea.descripcion = "Revertir: - Actividad: %s -> %s" % (us_original_act, actividades[index-1])
                    tarea.horas_de_trabajo = 0
                    tarea.sprint = sprint
                    tarea.flujo = user_story.flujo
                    tarea.actividad = detalle.actividad
                    est = actividades[index-1].estados.all()
                    tarea.estado = est[0]
                    tarea.tipo = 'Cambio de Estado'
                    tarea.usuario = request.user
                    #tarea.estado = detalle.estado
                    tarea.save()
                    detalle.estado = est[0]

                    #se envia la notificacion a traves de celery
                    reversion_estado.delay(proyecto.nombre_corto, sprint.nombre, user_story.nombre, user_story.flujo.nombre, uri_us)

                if user_story.estado == 'Finalizado':
                    detalle.actividad = actividades[index]

                    tarea = Tarea()
                    tarea.user_story = user_story
                    tarea.descripcion = "Revertir: - Estado: %s -> %s" % (us_original_est, actividades[index].estados.all()[0])
                    tarea.horas_de_trabajo = 0
                    tarea.sprint = sprint
                    tarea.flujo = user_story.flujo
                    tarea.actividad = detalle.actividad
                    est = actividades[index].estados.all()
                    tarea.estado = est[0]
                    tarea.tipo = 'Cambio de Estado'
                    tarea.usuario = request.user
                    #tarea.estado = detalle.estado
                    tarea.save()
                    detalle.estado = est[0]
                    user_story.estado = 'Activo'

                    #se envia la notificacion a traves de celery
                    reversion_estado.delay(proyecto.nombre_corto, sprint.nombre, user_story.nombre, user_story.flujo.nombre, uri_us)

    detalle.save()
    user_story.save()

    return HttpResponseRedirect(reverse('sprints:kanban', args=[pk_proyecto, pk_sprint]))
Exemplo n.º 6
0
    def save(self, commit=True):
        cleaned_data = super(RegistrarTareaForm, self).clean()
        #usuario = Usuario.objects.get(user=self.instance)
        #proyecto = Proyecto.objects.get(pk=self.instance.pk)

        sprint = super(RegistrarTareaForm, self).save(commit=True)

        user_story = UserStory.objects.get(pk=self.cleaned_data['id'].pk)

        tarea = Tarea()
        tarea.user_story = user_story
        tarea.descripcion = self.cleaned_data['descripcion']
        tarea.horas_de_trabajo = self.cleaned_data['horas']
        tarea.sprint = sprint
        tarea.flujo = user_story.flujo
        tarea.actividad = user_story.userstorydetalle.actividad
        tarea.estado = user_story.userstorydetalle.estado
        tarea.tipo = 'Registro de Tarea'
        tarea.usuario = self.user
        tarea.save()

        return sprint
Exemplo n.º 7
0
Arquivo: views.py Projeto: rodiaz/sigp
def aprobar_user_story(request, pk_proyecto, pk_sprint, pk_user_story):
    """
    Funcion que permite aprobar un user story finalizado en un flujo.

    @type request: django.http.HttpRequest
    @param request: Contiene informacion sobre la peticion actual

    @type pk_proyecto: string
    @param pk_proyecto: id del proyecto

    @type pk_sprint: string
    @param pk_sprint: id del sprint

    @type pk_user_story: string
    @param pk_user_story: id del user story

    @rtype: django.http.HttpResponseRedirect
    @return: Renderiza sprints/sprint_kanban.html para obtener el kanban actual
    """

    template = 'sprints/user_story_aprobar.html'
    proyecto = get_object_or_404(Proyecto, pk=pk_proyecto)
    sprint = get_object_or_404(Sprint, pk=pk_sprint)
    user_story = get_object_or_404(UserStory, pk=pk_user_story)
    usuario = request.user
    detalle = UserStoryDetalle.objects.get(user_story=user_story)
    lista_tareas_us = Tarea.objects.filter(user_story=user_story)
    horas_acumuladas = 0

    us_id = user_story.id
    uri = request.build_absolute_uri()
    print "uri= %s" % uri

    uri_us = urlparse.urljoin(uri, '../../tareas/%s/' % us_id)
    print "uri_us= %s" % uri_us

    for tarea in lista_tareas_us:
        horas_acumuladas = horas_acumuladas + tarea.horas_de_trabajo

    if request.method == 'POST':
        user_story.estado = 'Aprobado'
        user_story.save()

        tarea = Tarea()
        tarea.user_story = user_story
        tarea.descripcion = "Aprobar user story"
        tarea.horas_de_trabajo = 0
        tarea.sprint = sprint
        tarea.flujo = user_story.flujo
        tarea.actividad = user_story.userstorydetalle.actividad
        tarea.estado = user_story.userstorydetalle.estado
        tarea.tipo = 'Cambio de Estado'
        tarea.usuario = request.user
        tarea.save()

        #se envia la notificacion a traves de celery
        aprobacion_user_story.delay(proyecto.nombre_corto, sprint.nombre,
                                    user_story.nombre, user_story.flujo.nombre,
                                    uri_us)

        return HttpResponseRedirect(
            reverse('sprints:kanban', args=[pk_proyecto, pk_sprint]))

    return render(request, template, locals())
Exemplo n.º 8
0
Arquivo: views.py Projeto: rodiaz/sigp
def revertir_estado(request, pk_proyecto, pk_sprint, pk_user_story):
    """
    Funcion que revierte el estado y/o la actividad de un user story seleccionado en un flujo.

    @type request: django.http.HttpRequest
    @param request: Contiene informacion sobre la peticion actual

    @type pk_proyecto: string
    @param pk_proyecto: id del proyecto

    @type pk_sprint: string
    @param pk_sprint: id del sprint

    @type pk_user_story: string
    @param pk_user_story: id del user story

    @rtype: django.http.HttpResponseRedirect
    @return: Renderiza sprints/sprint_kanban.html para obtener el kanban actual
    """
    proyecto = get_object_or_404(Proyecto, pk=pk_proyecto)
    sprint = get_object_or_404(Sprint, pk=pk_sprint)
    user_story = get_object_or_404(UserStory, pk=pk_user_story)

    actividades = user_story.flujo.actividades.all().order_by('pk')
    #estados = actividades[0].estados.all()
    detalle = UserStoryDetalle.objects.get(user_story=user_story)
    us_original_act = user_story.userstorydetalle.actividad
    us_original_est = user_story.userstorydetalle.estado

    us_id = user_story.id
    uri = request.build_absolute_uri()
    print "uri= %s" % uri

    uri_us = urlparse.urljoin(uri, '../../tareas/%s/' % us_id)
    print "uri_us= %s" % uri_us

    for index, act in enumerate(actividades):
        estados = act.estados.all()
        if us_original_act == act:

            if actividades[0] != us_original_act:

                if user_story.estado == 'Activo':
                    detalle.actividad = actividades[index - 1]

                    tarea = Tarea()
                    tarea.user_story = user_story
                    tarea.descripcion = "Revertir: - Actividad: %s -> %s" % (
                        us_original_act, actividades[index - 1])
                    tarea.horas_de_trabajo = 0
                    tarea.sprint = sprint
                    tarea.flujo = user_story.flujo
                    tarea.actividad = detalle.actividad
                    est = actividades[index - 1].estados.all()
                    tarea.estado = est[0]
                    tarea.tipo = 'Cambio de Estado'
                    tarea.usuario = request.user
                    #tarea.estado = detalle.estado
                    tarea.save()
                    detalle.estado = est[0]

                    #se envia la notificacion a traves de celery
                    reversion_estado.delay(proyecto.nombre_corto,
                                           sprint.nombre, user_story.nombre,
                                           user_story.flujo.nombre, uri_us)

                if user_story.estado == 'Finalizado':
                    detalle.actividad = actividades[index]

                    tarea = Tarea()
                    tarea.user_story = user_story
                    tarea.descripcion = "Revertir: - Estado: %s -> %s" % (
                        us_original_est, actividades[index].estados.all()[0])
                    tarea.horas_de_trabajo = 0
                    tarea.sprint = sprint
                    tarea.flujo = user_story.flujo
                    tarea.actividad = detalle.actividad
                    est = actividades[index].estados.all()
                    tarea.estado = est[0]
                    tarea.tipo = 'Cambio de Estado'
                    tarea.usuario = request.user
                    #tarea.estado = detalle.estado
                    tarea.save()
                    detalle.estado = est[0]
                    user_story.estado = 'Activo'

                    #se envia la notificacion a traves de celery
                    reversion_estado.delay(proyecto.nombre_corto,
                                           sprint.nombre, user_story.nombre,
                                           user_story.flujo.nombre, uri_us)

    detalle.save()
    user_story.save()

    return HttpResponseRedirect(
        reverse('sprints:kanban', args=[pk_proyecto, pk_sprint]))
Exemplo n.º 9
0
Arquivo: views.py Projeto: rodiaz/sigp
def adjuntar_archivo(request, pk_proyecto, pk_sprint, pk_user_story):
    """
    Funcion que permite adjuntar un archivo a un user story seleccionado en un flujo.

    @type request: django.http.HttpRequest
    @param request: Contiene informacion sobre la peticion actual

    @type pk_proyecto: string
    @param pk_proyecto: id del proyecto

    @type pk_sprint: string
    @param pk_sprint: id del sprint

    @type pk_user_story: string
    @param pk_user_story: id del user story

    @rtype: django.http.HttpResponseRedirect
    @return: Renderiza sprints/sprint_kanban.html para obtener el kanban actual
    """

    template = 'sprints/user_story_adjuntar_archivo.html'
    proyecto = get_object_or_404(Proyecto, pk=pk_proyecto)
    sprint = get_object_or_404(Sprint, pk=pk_sprint)
    user_story = get_object_or_404(UserStory, pk=pk_user_story)
    usuario = request.user
    detalle = UserStoryDetalle.objects.get(user_story=user_story)

    lista_archivos = Archivo.objects.filter(user_story=user_story)

    if request.method == 'POST':
        form = AdjuntarArchivoForm(request.POST, request.FILES)

        try:
            if form.is_valid:
                nuevo_archivo = Archivo(user_story=user_story,
                                        archivo=request.FILES['archivo'])
                #nuevo_archivo.user_Story = user_story
                nuevo_archivo.save()

                tarea = Tarea()
                tarea.user_story = user_story
                tarea.descripcion = "Adjuntar archivo"
                tarea.horas_de_trabajo = 0
                tarea.sprint = sprint
                tarea.flujo = user_story.flujo
                tarea.actividad = user_story.userstorydetalle.actividad
                tarea.estado = user_story.userstorydetalle.estado
                tarea.tipo = 'Registro de Tarea'
                tarea.usuario = request.user
                tarea.save()

                return HttpResponseRedirect(
                    reverse('sprints:adjuntar_archivo',
                            args=[pk_proyecto, pk_sprint, pk_user_story]))
        except Exception, e:
            print e
            mensaje = 'No se pudo subir el archivo.'
            return render(request, 'sprints/user_story_adjuntar_archivo.html',
                          locals())