def home(request): lista_herramientas = Herramienta.objects.all() if filters.has_group(request.user, "MiembroGTI"): ownTools = lista_herramientas.filter(estado=0, owner=request.user) lista_herramientas = lista_herramientas.exclude(estado=0) lista_herramientas = lista_herramientas | ownTools elif filters.has_group(request.user, "ConectaTE"): lista_herramientas = lista_herramientas.exclude(estado=0) elif not filters.has_group(request.user, "Administrador"): lista_herramientas = lista_herramientas.filter(estado=2) #validar filtro categoria = request.GET.get('categoria',False) if categoria: cat =int(categoria) lista_herramientas = lista_herramientas.filter(tipo=cat,estado=1) sistema_operativo = request.GET.get('sistema_operativo', False) if sistema_operativo: lista_herramientas = lista_herramientas.filter(sistema_operativo__icontains=sistema_operativo) tipo_licencia = request.GET.get('tipo_licencia', False) if tipo_licencia: lista_herramientas = lista_herramientas.filter(licencia__icontains=tipo_licencia) uso= request.GET.get('uso',False) if uso: lista_herramientas=lista_herramientas.filter(usos__icontains=uso, estado=1) context = {'lista_herramientas': lista_herramientas} return render(request, 'home.html', context)
def details(request, index=None): instance = get_object_or_404(Herramienta, id=index) if (filters.has_group(request.user, "Administrador") or instance.estado == 2 or (filters.has_group(request.user, "MiembroGTI") and instance.estado == 1) or (filters.has_group(request.user, "ConectaTE") and instance.estado == 1) or (filters.has_group(request.user, "MiembroGTI") and instance.estado == 0 and instance.owner == request.user)): context = {'herramienta': instance} return render(request, 'detalleherramienta.html', context) else: return redirect('home')
def addHerramientaParaPublicacion(request, id): try: herramienta = models.Herramienta.objects.get(id=id) except ObjectDoesNotExist: messages.error(request, 'Herramienta no encontrada') return redirect('home') if not filters.is_herramienta_owner(request.user, herramienta) and not filters.has_group( request.user, "Administrador"): list_revisiones = HerramientaPorAprobar.objects.filter( herramienta_id=herramienta.id) for revision in list_revisiones: if revision.owner.username == request.user.username: messages.error(request, 'Herramienta ya ha sido postulada por ti') return redirect('tool_detail', id) HerramientaPorAprobar.objects.create(herramienta=herramienta, owner=request.user) # Send Confirmation Email admins = User.objects.filter(groups__name="Administrador") EmailHandler.send_email_to_publish_tool(admins, herramienta.owner, herramienta) messages.success(request, 'Herramienta Postulada Correctamente') return redirect('tool_detail', id) messages.error(request, 'Error de Permisos') return redirect('tool_detail', id)
def editHerramientaField(request, id): try: herramienta = models.Herramienta.objects.get(id=id) except ObjectDoesNotExist: messages.error(request, 'Herramienta no encontrada') return redirect('home') if not filters.has_group(request.user, "Administrador"): if herramienta.estado == 0 and filters.is_herramienta_owner(request.user, herramienta): herramienta.estado = 1 herramienta.save() miembros = User.objects.filter(groups__name="MiembroGTI").exclude(username=request.user.username) EmailHandler.send_email_miembro(miembros, request.user, herramienta) elif herramienta.estado == 1: herramienta.estado = 0 herramienta.owner = request.user herramienta.save() herramientas_por_borrar = models.HerramientaPorAprobar.objects.filter(herramienta_id=herramienta.id) for current_postulacion in herramientas_por_borrar: current_postulacion.delete() if herramienta.estado == 0: text = "Borrador" else: text = "En Revisión" messages.success(request, '¡La Herramienta ahora está en estado ' + text + '!') return redirect('tool_detail', index=herramienta.id) else: return redirect('home')
def lista_herramientas_por_publicar (request): if(filters.has_group(request.user, "Administrador")): lista_postulaciones = HerramientaPorAprobar.objects.all() context = {'lista_postulaciones': lista_postulaciones} return render(request, 'herramienta/lista_herramientas_publicacion.html', context) else: return redirect('home')
def lista_postulaciones_rechazar (request, index=None): try: postulacion = models.HerramientaPorAprobar.objects.get(id=index) herramienta = models.Herramienta.objects.get(id=postulacion.herramienta.id) except ObjectDoesNotExist: mensaje = "<h1>Esta herramienta no existe</h1>" return HttpResponseNotFound(mensaje) if filters.has_group(request.user, "Administrador"): herramientas_por_borrar = models.HerramientaPorAprobar.objects.filter(herramienta_id=herramienta.id) for current_postulacion in herramientas_por_borrar: current_postulacion.delete() return redirect('tool_detail', index=herramienta.id) else: return redirect('home')