86 lines
2.7 KiB
Python
86 lines
2.7 KiB
Python
from django.shortcuts import render, redirect
|
|
from ai.local_ai_api import LocalAIApi
|
|
import json
|
|
|
|
def index(request):
|
|
user_groups = []
|
|
if request.user.is_authenticated:
|
|
user_groups = [group.name for group in request.user.groups.all()]
|
|
context = {
|
|
"project_name": "ComplianceShield",
|
|
"user_groups": user_groups,
|
|
}
|
|
return render(request, "core/index.html", context)
|
|
|
|
def search(request):
|
|
user_groups = []
|
|
if request.user.is_authenticated:
|
|
user_groups = [group.name for group in request.user.groups.all()]
|
|
if request.method == "POST":
|
|
query = request.POST.get("query", "")
|
|
if query:
|
|
response = LocalAIApi.create_response(
|
|
{
|
|
"input": [
|
|
{"role": "system", "content": "You are a helpful assistant."},
|
|
{"role": "user", "content": query},
|
|
],
|
|
},
|
|
{
|
|
"poll_interval": 5, # seconds
|
|
"poll_timeout": 300, # seconds
|
|
},
|
|
)
|
|
|
|
if response.get("success"):
|
|
text = LocalAIApi.extract_text(response)
|
|
if not text:
|
|
decoded = LocalAIApi.decode_json_from_response(response)
|
|
text = json.dumps(decoded, ensure_ascii=False) if decoded else str(response.get("data", ""))
|
|
search_results = text
|
|
else:
|
|
search_results = "Error: Could not get a response from the AI."
|
|
|
|
context = {
|
|
"project_name": "ComplianceShield",
|
|
"search_results": search_results,
|
|
"user_groups": user_groups,
|
|
}
|
|
return render(request, "core/index.html", context)
|
|
|
|
return redirect("index")
|
|
|
|
def settings(request):
|
|
context = {
|
|
"project_name": "ComplianceShield",
|
|
"user_groups": user_groups,
|
|
}
|
|
return render(request, "core/settings.html", context)
|
|
|
|
def daily_logs(request):
|
|
return render(request, "core/daily_logs.html")
|
|
|
|
def safety_meetings(request):
|
|
return render(request, "core/safety_meetings.html")
|
|
|
|
def incidents(request):
|
|
return render(request, "core/incidents.html")
|
|
|
|
def documents(request):
|
|
return render(request, "core/documents.html")
|
|
|
|
def subcontractors(request):
|
|
return render(request, "core/subcontractors.html")
|
|
|
|
def equipment(request):
|
|
return render(request, "core/equipment.html")
|
|
|
|
def ongoing_projects(request):
|
|
return render(request, "core/ongoing_projects.html")
|
|
|
|
def completed_projects(request):
|
|
return render(request, "core/completed_projects.html")
|
|
|
|
def on_hold_projects(request):
|
|
return render(request, "core/on_hold_projects.html")
|