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()
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 """ """