From d1c0cd3fee432e3e4db3349a0cbe5d925fa3f9c9 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Sun, 22 Mar 2026 22:12:10 +0000 Subject: [PATCH] Autosave: 20260322-221210 --- core/__pycache__/urls.cpython-311.pyc | Bin 564 -> 913 bytes core/__pycache__/views.cpython-311.pyc | Bin 2755 -> 4051 bytes core/templates/core/dashboard.html | 20 ++++++++++++++++ core/templates/core/login.html | 32 +++++++++++++++++++++++++ core/urls.py | 6 ++++- core/views.py | 24 +++++++++++++++++-- 6 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 core/templates/core/dashboard.html create mode 100644 core/templates/core/login.html diff --git a/core/__pycache__/urls.cpython-311.pyc b/core/__pycache__/urls.cpython-311.pyc index d63d93a0ff84529a672f6592f965a021f7d06e21..4c2eae55cda981d9bdc81dd04e03acc7df641124 100644 GIT binary patch literal 913 zcmb7Czi-n(7(FNF-$|Rc3@s{Tjudj0SR#ZN2oggj7MQ$5PVN*Ne71GATgZSicFab{ zPEZ7Y1b>1fWr%L7Kn&d?b*qHLogFH*%EI}4_kHi(=lA^CU+Q%Wi1Ek!;WsJ({F2GP zQ7|I8`YD!A00XQ9fGUon$hZ(iDiHRF)nJr@B?YqoKb82|!HE7+t zl$Kfwhq0S_VporRa-3W$64f~LB1*XJha-}tee9+#Z!nTX!4c_`F!fWPB-{$3kstPD zA>Y7m;te8~;WD=c7iDRgz+uD)2TWT@hAt&z+l_rx3LvHnW?YlVN(C`PLRuk#xLWLE z>qZ4}^Clkar5NJ!xKMr7s&gB^b;D8A$yksu`33mS3K>RW%KSmc%~Fp+$yhQhtR{uW z!cJj;nSy8X=U}!xX}EFRm-e|W9xPgy5*8+3!IdDvbsNdHp=^+aX@2V*AsN=ZANy_ojzuUJlU=qB%s%y1rSN*z#h#;!XboO+*AR delta 387 zcmbQpzJ;ZJIWI340}$LyKaeTK$iVOz#DM{JDC2VtkTIPhg&~D8has0Sijk2ag(-zO zhbfmiiaD1hiY1pdiWMlv62->Ekjj|Cn#!EQwuXHfGXukFAcg?23`Z(U3MZ0`Em#gL z#g)pM!i^*amPu!hVo%`-X3*q)3F2!q-eM_8EXjBYbSZ--^JHyCwM3TW{G!xb3`ML^ z`Mkv3)GF@8f=vC)y!6!K68$1JpiC7HNTevWI6tQ>Rlf-2Ge1p^TihvGiFxVydZk4< z#YG^e-eN7wOf4@4n+Dcc#6H=9DauI*C&(y#Tf<*#Ag8TOx=)GnG!}=SdSTTHEtx-gppK}zE9G- zjBd5twSnQA@j~!0t9F)p3E#2EwNI-sgZ-GJzf=0eNd_Jd#-S)LP%&3{KU&f!dcpq4 z}($#w!Iw191wLwPJFX75D|n!Y=}N5mvBDOJ;$yTghdU zYh%9Hxsq+@*{~NfG`nOnejY;uMa|||AICoA5<-~N3CW859KIZ86>(Kd1ZNrse-R8X z+TO;SWo?CzBLlbf1;8rV4JXz<-|TxB9(KdSyUO6#Q;(Ii50$g`W*f>_QyE*APIR`C zsm+=Cccq?>*B7Qbmdel)_r$m^Kv7WZpPAXEZtI4o9{N1OjF6Yu}n(_ z)=gb($fHep)D=g02I^SuY%;ur;KsfA8<}s2eS`zSDHB+rOt&DSez=98yEu1C@n!7D z>PyM{APYYQkfop*A@`{-nT2Wh^+|N5EczN<1`2hz1_4&dAMKi7`eAx!(!Dg_kn>GB z?~3{Qv$bR0e(lp>JYD5iNs)YLn3LQIZn&_)H@h)2VoN(=uN%z06T{7Vwznt;t%#=iPd!z$BMCjTRD1D#q5yZa&;8;7e?+OWY PXpeM2az2aBh^Xzq$W@UO delta 562 zcmZXQOG_L<5XZaS*_qj$$NE|kBW7G5>-a8Ugn}BJ+3P~J5n>N;7#!0 z!GlYG1xb(yIrs$x^8o?@g@Hi6L@t3qsy2rZ(oFxl`d`$)rt9m|`>OlFamozWL-Vf1 zjjlV&ue$ZdE@y%XLt3#N*u9ubCvZ^X(hXcZO<9Tig8|Hy&R8%QX`+0_-lNe+a_g;N z2vzGpby)CC=G$t7ZXQ)i58+%?2TN}KlWa(QtjT+1#{5~LiSR>34e8N0o z0pT04NbwS3nXp385xIe_6L}N?^@df%-@i~@d!+arr8;)rH)|OARajEv&c#k{i-WM; zOqM%YOQt|$f^otVM6UlyLWvX_9ME8TuK+T Tf9ebS=TpT>L!DO|8WsNreuR9Z diff --git a/core/templates/core/dashboard.html b/core/templates/core/dashboard.html new file mode 100644 index 0000000..c6ef6fc --- /dev/null +++ b/core/templates/core/dashboard.html @@ -0,0 +1,20 @@ +{% extends "base.html" %} + +{% block title %}Dashboard | {{ project_name }}{% endblock %} + +{% block content %} +
+
+
+

System Dashboard

+
+
+
Welcome to the Management System
+

You are logged in as {{ user.username }}.

+ Logout +
+
+
+
+
+{% endblock %} diff --git a/core/templates/core/login.html b/core/templates/core/login.html new file mode 100644 index 0000000..5d1bf7b --- /dev/null +++ b/core/templates/core/login.html @@ -0,0 +1,32 @@ +{% extends "base.html" %} + +{% block title %}Login | {{ project_name }}{% endblock %} + +{% block content %} +
+
+
+
+
+

Login

+ {% if form.errors %} +
Invalid username or password.
+ {% endif %} +
+ {% csrf_token %} +
+ + +
+
+ + +
+ +
+
+
+
+
+
+{% endblock %} diff --git a/core/urls.py b/core/urls.py index 1facb35..dfbd8af 100644 --- a/core/urls.py +++ b/core/urls.py @@ -1,6 +1,7 @@ from django.urls import path +from django.contrib.auth import views as auth_views -from .views import home, ingest_data, resolve_entities +from .views import home, ingest_data, resolve_entities, login_view, dashboard_view, logout_view app_name = 'core' @@ -8,4 +9,7 @@ urlpatterns = [ path("", home, name="home"), path("api/ingest/", ingest_data, name="ingest_data"), path("api/resolve/", resolve_entities, name="resolve_entities"), + path("login/", login_view, name="login"), + path("dashboard/", dashboard_view, name="dashboard"), + path("logout/", logout_view, name="logout"), ] \ No newline at end of file diff --git a/core/views.py b/core/views.py index cfa6cf5..01c2908 100644 --- a/core/views.py +++ b/core/views.py @@ -3,7 +3,9 @@ from django.http import JsonResponse from django.views.decorators.csrf import csrf_exempt from core.services.ingestion import IngestionService from core.services.resolution import EntityResolutionService -from django.shortcuts import render +from django.shortcuts import render, redirect +from django.contrib.auth import authenticate, login, logout +from django.contrib.auth.decorators import login_required from django.utils import timezone import os import platform @@ -27,6 +29,24 @@ def home(request): } return render(request, "core/index.html", context) +def login_view(request): + if request.method == 'POST': + username = request.POST.get('username') + password = request.POST.get('password') + user = authenticate(request, username=username, password=password) + if user is not None: + login(request, user) + return redirect('dashboard') + return render(request, 'core/login.html') + +@login_required +def dashboard_view(request): + return render(request, 'core/dashboard.html', {'project_name': 'New Style'}) + +def logout_view(request): + logout(request) + return redirect('home') + @csrf_exempt def ingest_data(request): if request.method == 'POST': @@ -43,4 +63,4 @@ def resolve_entities(request): # Using EntityResolutionService as a placeholder for actual processing result = EntityResolutionService.resolve(data) return JsonResponse({'status': 'success', 'result': result}) - return JsonResponse({'error': 'Invalid request'}, status=400) \ No newline at end of file + return JsonResponse({'error': 'Invalid request'}, status=400)