BridgeMentor / core /views.py
SushantGautam's picture
Update cache directory in refresh_author_db function and modify response in refresh_author_db_view for admin access
d9b93e7
raw
history blame
1.58 kB
from .models import Domain, Field, Subfield, Topic
from django.http import JsonResponse, HttpResponse
from django.shortcuts import render
from BridgeMentor.utils import refresh_author_db
def home_page(request):
return render(request, 'home.html')
def refresh_author_db_view(request):
# check if admin
if not request.user.is_superuser:
return JsonResponse({"error": "Permission denied"}, status=403)
refresh_author_db(check_time=False)
return HttpResponse("Database refreshed successfully. <a href='/'>Go Home</a>", status=200)
def search_hierarchy(request):
q = request.GET.get("q", "").strip()
if not q:
return JsonResponse({"results": []})
results = []
results += [{"id": d.id, "text": d.name, "type": "Domain"}
for d in Domain.objects.filter(name__icontains=q)]
results += [{"id": f.id, "text": f"{f.domain.name} > {f.name}", "type": "Field"}
for f in Field.objects.select_related("domain").filter(name__icontains=q)]
results += [{"id": s.id, "text": f"{s.field.domain.name} > {s.field.name} > {s.name}", "type": "Subfield"}
for s in Subfield.objects.select_related("field__domain").filter(name__icontains=q)]
results += [{"id": t.id, "text": f"{t.subfield.field.domain.name} > {t.subfield.field.name} > {t.subfield.name} > {t.name}", "type": "Topic"}
for t in Topic.objects.select_related("subfield__field__domain").filter(name__icontains=q)]
return JsonResponse({"results": sorted(results, key=lambda x: x["text"].lower())[:10]})