38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
|
from django.http import HttpResponse, HttpResponseNotFound, HttpRequest
|
||
|
from django.shortcuts import render
|
||
|
from django.core.paginator import Paginator
|
||
|
from django.db.models import Q
|
||
|
|
||
|
from apps.gnous_eu.models import Service
|
||
|
|
||
|
TEMPLATE_PATH = "./"
|
||
|
|
||
|
|
||
|
class ServicesView:
|
||
|
@staticmethod
|
||
|
def index(request: HttpRequest, *args, **kwargs) -> HttpResponse:
|
||
|
search: str = request.GET.get("search", False)
|
||
|
|
||
|
if search:
|
||
|
data_services = Service.objects.all().filter(
|
||
|
Q(id__exact=int(search) if search.isdigit() else 0)
|
||
|
| Q(name__icontains=search)
|
||
|
| Q(description__icontains=search)
|
||
|
| Q(sources__icontains=search)
|
||
|
| Q(hosted__icontains=search)
|
||
|
| Q(domain__icontains=search)
|
||
|
| Q(sources__icontains=search)
|
||
|
| Q(hosted__icontains=search)
|
||
|
)
|
||
|
else:
|
||
|
data_services = Service.objects.all().filter(hidden=False)
|
||
|
paginator = Paginator(data_services, 30)
|
||
|
|
||
|
page = request.GET.get("page")
|
||
|
|
||
|
return render(
|
||
|
request,
|
||
|
TEMPLATE_PATH + "services.html",
|
||
|
{"services": paginator.get_page(page), "search": search},
|
||
|
)
|