Example #1
0
 def save_model(self, request, obj, form, change):
     if change:
         antes= obj.groups.all()
         ahora=form.cleaned_data.get('groups')
         desasignados= subfinder(antes, ahora)
         asignados=subfinder(ahora, antes)
         enviar=True
         asig= ["<li>"+str(x)+"</li>" for x in asignados]
         desasig=["<li>"+str(x)+"</li>" for x in desasignados]
         mensaje="Le informamos que hubo una accion que afecto uno o mas roles."
         titulo1="Roles."
         if desasignados:
             mensaje+="<br>Tiene Roles desasignados.<br>"
             for a in desasig:
                 mensaje+=a
         if asignados:
             mensaje+="<br>Tiene Roles asignados.<br>"
             for a in asig:
                 mensaje+=a
         enviar=len(asignados)!=0 or len(desasignados)!=0
         if enviar:
             enviar_notificacion(asunto="Rol", titulo1=titulo1, titulo2=titulo1,
                  mensaje=mensaje, username=obj.username, correo=obj.email)
     
     obj.save()
Example #2
0
 def save_model(self, request, obj, form, change):
     ''' En esta función se guardan los cambios correspondientes a usuarios,
     ya sea Agregar usuarios a equipo o Eliminar Usuario del equipo'''
   
    
     ahora=form.cleaned_data.get('equipo')
     antes=Proyecto.objects.get(pk=obj.id).equipo.all()
     asignados=subfinder(ahora, antes)
     desasignados=subfinder(antes, ahora)
     print asignados,desasignados
     for a in asignados:
         enviar_notificacion(asunto="Equipo de Trabajo", titulo1="Nuevo Equipo de Trabajo", titulo2="Nuevo Equipo de Trabajo",
                mensaje=" Le informamos que ha sido asignado al equipo del proyecto <b>"+obj.nombre+" </b><br>Ingrese al sistema para ver los detalles."
                          , username=a.username, correo=a.email)
     for d in desasignados:
         enviar_notificacion(asunto="Equipo de Trabajo", titulo1="Desvinculacion de  Equipo de Trabajo", titulo2="Desvinculacion de Equipo de Trabajo",
                mensaje=" Le informamos que ha sido desvinculado del equipo  <b>"+obj.nombre+" </b>."
                          , username=d.username, correo=d.email)
     
     if change:
         obj.save()
    def save_model(self, request, obj, form, change):
        """ En esta función se guardan los cambios correspondientes a usuarios,
        ya sea Agregar usuarios a equipo o Eliminar Usuario del equipo"""
        obj.backlog = False
        if change:
            original = UserStory.objects.get(pk=obj.id)
            """ Se verificia si la cantidad de horas trabajadas"""
            if original.tiempo_trabajado != obj.tiempo_trabajado and obj.sprint:
                timeline = TimeLine()
                timeline.userstory = original
                timeline.fecha = timezone_today()
                timeline.horas = obj.tiempo_trabajado - original.tiempo_trabajado
                timeline.horas_restantes_sprint = obj.sprint.horas_faltantes() - obj.tiempo_trabajado
                timeline.horas_restantes_proyecto = obj.proyecto.horas_faltantes() - obj.tiempo_trabajado
                timeline.save()
            actual = obj.get_prioridad_display()
            anterior = UserStory.objects.get(pk=obj.id).get_prioridad_display()
            print actual, anterior
            if actual != anterior:
                aux = "Cambio de prioridad al User Story"
                mensaje = (
                    "Le informamos que el User Story al que pertenece ha cambiado de prioridad  <b>" + anterior + "</b>"
                )
                mensaje += " a prioridad <b>" + actual + "</b>"
                enviar_notificacion(
                    asunto=aux,
                    titulo1=aux,
                    titulo2=aux,
                    mensaje=mensaje,
                    username=obj.usuario.username,
                    correo=obj.usuario.email,
                )

        cambio_user = False
        if change and obj.usuario != None:
            if original.usuario_id != obj.usuario_id:
                cambio_user = True

        elif not change and obj.usuario != None:
            cambio_user = True

        if cambio_user:
            enviar_notificacion(
                asunto="User Story",
                titulo1="Asignacion de User Story",
                titulo2="Asignacion de User Story",
                mensaje=" Le informamos que se le ha sido asignado el  User Story <b>" + obj.nombreUS + " </b>",
                username=obj.usuario.username,
                correo=obj.usuario.email,
            )

        """ En esta parte del codigo se verifica si hubo un cambio en la asignacion de flujo para luego enviar
        una notificacion por correo al usuario relacionado al User Story"""
        if obj.flujo != None:
            if not change or (change and obj.flujo_id != original.flujo_id):
                enviar_notificacion(
                    asunto="User Story: Asignacion de Flujo",
                    titulo1="Asignacion de Flujo",
                    titulo2="Asignacion de Flujo ",
                    mensaje=" Le informamos que se le ha sido asignado el Flujo <b>"
                    + obj.flujo.nombre
                    + "</b>  al User Story <b>"
                    + obj.nombreUS
                    + "</b>.",
                    username="******",
                    correo=obj.usuario.email,
                )
                if obj.actividad_flujo != None:
                    siguiente = Actividad.objects.filter(flujo=obj.actividad_flujo.flujo).order_by("orden")
                    if siguiente.exists():
                        obj.actividad_flujo = siguiente[0]
                        obj.estado_actividad = "TO"

        if obj.estado_actividad == "DE" and obj.actividad_flujo != None:
            siguiente = Actividad.objects.filter(flujo=obj.actividad_flujo.flujo, orden=obj.actividad_flujo.orden + 1)
            if siguiente.exists():
                obj.actividad_flujo = siguiente[0]
                obj.estado_actividad = "TO"
            else:
                obj.estado_actividad = "FD"

        """esto sirve para controlar el estado del sprint"""
        if obj.sprint is not None:
            if obj.flujo is None:
                obj.estado_sprint = "B"
            if obj.flujo is not None:
                obj.estado_sprint = "F"

        """esto controla que cuando se asigna a un flujo comienze en la actividad 1"""
        if not UserStory.objects.filter(pk=obj.id).exists():
            if obj.flujo != None:
                obj.actividad_flujo = Actividad.objects.get(flujo=obj.flujo, orden=1)
        else:
            flujo_original = UserStory.objects.get(pk=obj.id).flujo
            if flujo_original != obj.flujo:
                obj.actividad_flujo = Actividad.objects.get(flujo=obj.flujo, orden=1)

        """ esto es para pasar automaticamente a un estado doing
            si se agrega horas trabajas 
        """
        if UserStory.objects.filter(pk=obj.id).exists():
            tiempo_trabajado_original = UserStory.objects.get(pk=obj.id).tiempo_trabajado
            if tiempo_trabajado_original != obj.tiempo_trabajado:
                estado_original = UserStory.objects.get(pk=obj.id).estado_actividad
                if estado_original == "TO":
                    obj.estado_actividad = "DG"

        if obj.proyecto == None:
            obj.proyecto = obj.sprint.proyecto

        obj.save()

        # def has_change_permission(self, request, obj=None):
        """
        Retorna True si el usuario existente tiene un rol con los permisos
        requeridos
        """

        """