forked from DGNum/gestioCOF
core -- Apply black + isort to all files
This commit is contained in:
parent
104e71dcf6
commit
fdd2b35289
196 changed files with 10727 additions and 8365 deletions
|
@ -1,8 +1,8 @@
|
|||
from ldap3 import Connection
|
||||
from django.shortcuts import render
|
||||
from django.http import Http404
|
||||
from django.db.models import Q
|
||||
from django.conf import settings
|
||||
from django.db.models import Q
|
||||
from django.http import Http404
|
||||
from django.shortcuts import render
|
||||
from ldap3 import Connection
|
||||
|
||||
from gestioncof.models import User
|
||||
from kfet.decorators import teamkfet_required
|
||||
|
@ -25,81 +25,80 @@ def account_create(request):
|
|||
raise Http404
|
||||
q = request.GET.get("q")
|
||||
|
||||
if (len(q) == 0):
|
||||
if len(q) == 0:
|
||||
return render(request, "kfet/account_create_autocomplete.html")
|
||||
|
||||
data = {'q': q}
|
||||
data = {"q": q}
|
||||
|
||||
queries = {}
|
||||
search_words = q.split()
|
||||
|
||||
# Fetching data from User, CofProfile and Account tables
|
||||
queries['kfet'] = Account.objects
|
||||
queries['users_cof'] = User.objects.filter(profile__is_cof=True)
|
||||
queries['users_notcof'] = User.objects.filter(profile__is_cof=False)
|
||||
queries["kfet"] = Account.objects
|
||||
queries["users_cof"] = User.objects.filter(profile__is_cof=True)
|
||||
queries["users_notcof"] = User.objects.filter(profile__is_cof=False)
|
||||
|
||||
for word in search_words:
|
||||
queries['kfet'] = queries['kfet'].filter(
|
||||
queries["kfet"] = queries["kfet"].filter(
|
||||
Q(cofprofile__user__username__icontains=word)
|
||||
| Q(cofprofile__user__first_name__icontains=word)
|
||||
| Q(cofprofile__user__last_name__icontains=word)
|
||||
)
|
||||
queries['users_cof'] = queries['users_cof'].filter(
|
||||
queries["users_cof"] = queries["users_cof"].filter(
|
||||
Q(username__icontains=word)
|
||||
| Q(first_name__icontains=word)
|
||||
| Q(last_name__icontains=word)
|
||||
)
|
||||
queries['users_notcof'] = queries['users_notcof'].filter(
|
||||
queries["users_notcof"] = queries["users_notcof"].filter(
|
||||
Q(username__icontains=word)
|
||||
| Q(first_name__icontains=word)
|
||||
| Q(last_name__icontains=word)
|
||||
)
|
||||
|
||||
# Clearing redundancies
|
||||
queries['kfet'] = queries['kfet'].distinct()
|
||||
queries["kfet"] = queries["kfet"].distinct()
|
||||
usernames = set(
|
||||
queries['kfet'].values_list('cofprofile__user__username', flat=True))
|
||||
queries['kfet'] = [
|
||||
(account, account.cofprofile.user)
|
||||
for account in queries['kfet']
|
||||
queries["kfet"].values_list("cofprofile__user__username", flat=True)
|
||||
)
|
||||
queries["kfet"] = [
|
||||
(account, account.cofprofile.user) for account in queries["kfet"]
|
||||
]
|
||||
|
||||
queries['users_cof'] = \
|
||||
queries['users_cof'].exclude(username__in=usernames).distinct()
|
||||
queries['users_notcof'] = \
|
||||
queries['users_notcof'].exclude(username__in=usernames).distinct()
|
||||
usernames |= set(
|
||||
queries['users_cof'].values_list('username', flat=True))
|
||||
usernames |= set(
|
||||
queries['users_notcof'].values_list('username', flat=True))
|
||||
queries["users_cof"] = (
|
||||
queries["users_cof"].exclude(username__in=usernames).distinct()
|
||||
)
|
||||
queries["users_notcof"] = (
|
||||
queries["users_notcof"].exclude(username__in=usernames).distinct()
|
||||
)
|
||||
usernames |= set(queries["users_cof"].values_list("username", flat=True))
|
||||
usernames |= set(queries["users_notcof"].values_list("username", flat=True))
|
||||
|
||||
# Fetching data from the SPI
|
||||
if getattr(settings, 'LDAP_SERVER_URL', None):
|
||||
if getattr(settings, "LDAP_SERVER_URL", None):
|
||||
# Fetching
|
||||
ldap_query = '(&{:s})'.format(''.join(
|
||||
'(|(cn=*{bit:s}*)(uid=*{bit:s}*))'.format(bit=word)
|
||||
for word in search_words if word.isalnum()
|
||||
))
|
||||
ldap_query = "(&{:s})".format(
|
||||
"".join(
|
||||
"(|(cn=*{bit:s}*)(uid=*{bit:s}*))".format(bit=word)
|
||||
for word in search_words
|
||||
if word.isalnum()
|
||||
)
|
||||
)
|
||||
if ldap_query != "(&)":
|
||||
# If none of the bits were legal, we do not perform the query
|
||||
entries = None
|
||||
with Connection(settings.LDAP_SERVER_URL) as conn:
|
||||
conn.search(
|
||||
'dc=spi,dc=ens,dc=fr', ldap_query,
|
||||
attributes=['uid', 'cn']
|
||||
)
|
||||
conn.search("dc=spi,dc=ens,dc=fr", ldap_query, attributes=["uid", "cn"])
|
||||
entries = conn.entries
|
||||
# Clearing redundancies
|
||||
queries['clippers'] = [
|
||||
queries["clippers"] = [
|
||||
Clipper(entry.uid.value, entry.cn.value)
|
||||
for entry in entries
|
||||
if entry.uid.value
|
||||
and entry.uid.value not in usernames
|
||||
if entry.uid.value and entry.uid.value not in usernames
|
||||
]
|
||||
|
||||
# Resulting data
|
||||
data.update(queries)
|
||||
data['options'] = sum([len(query) for query in queries])
|
||||
data["options"] = sum([len(query) for query in queries])
|
||||
|
||||
return render(request, "kfet/account_create_autocomplete.html", data)
|
||||
|
||||
|
@ -111,17 +110,19 @@ def account_search(request):
|
|||
q = request.GET.get("q")
|
||||
words = q.split()
|
||||
|
||||
data = {'q': q}
|
||||
data = {"q": q}
|
||||
|
||||
for word in words:
|
||||
query = Account.objects.filter(
|
||||
Q(cofprofile__user__username__icontains=word) |
|
||||
Q(cofprofile__user__first_name__icontains=word) |
|
||||
Q(cofprofile__user__last_name__icontains=word)
|
||||
).distinct()
|
||||
Q(cofprofile__user__username__icontains=word)
|
||||
| Q(cofprofile__user__first_name__icontains=word)
|
||||
| Q(cofprofile__user__last_name__icontains=word)
|
||||
).distinct()
|
||||
|
||||
query = [(account.trigramme, account.cofprofile.user.get_full_name())
|
||||
for account in query]
|
||||
query = [
|
||||
(account.trigramme, account.cofprofile.user.get_full_name())
|
||||
for account in query
|
||||
]
|
||||
|
||||
data['accounts'] = query
|
||||
return render(request, 'kfet/account_search_autocomplete.html', data)
|
||||
data["accounts"] = query
|
||||
return render(request, "kfet/account_search_autocomplete.html", data)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue