import re
from django.db.models import Q
from django.shortcuts import render
from django.utils.html import escape
from abonapp.models import Abon
from devapp.models import Device
from djing import MAC_ADDR_REGEX, IP_ADDR_REGEX
from django.contrib.auth.decorators import login_required
def replace_without_case(orig, old, new):
return re.sub(old, new, orig, flags=re.IGNORECASE)
@login_required
def home(request):
s = request.GET.get('s')
s = s.replace('+', '')
if s:
if re.match(IP_ADDR_REGEX, s):
abons = Abon.objects.filter(ip_addresses__ip=s)
devices = Device.objects.filter(ip_address=s)
else:
abons = Abon.objects.filter(
Q(fio__icontains=s) | Q(username__icontains=s) | Q(telephone__icontains=s) |
Q(additional_telephones__telephone__icontains=s)
)
if re.match(MAC_ADDR_REGEX, s):
devices = Device.objects.filter(mac_addr=s)
else:
devices = Device.objects.filter(comment__icontains=s)
else:
abons = ()
devices = ()
for abn in abons:
abn.fio = replace_without_case(escape(abn.fio), s, "%s" % s)
abn.username_display = replace_without_case(escape(abn.username), s, "%s" % s)
abn.telephone = replace_without_case(escape(abn.telephone), s, "%s" % s)
for dev in devices:
dev.comment = replace_without_case(escape(dev.comment), s, "%s" % s)
return render(request, 'searchapp/index.html', {
'abons': abons,
'devices': devices,
's': s
})