From 4c0ed8bcd5fbc00981622dea1fb74094d2c7a2e2 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Mon, 22 Dec 2025 18:50:12 +0000 Subject: [PATCH] mh2 --- core/__pycache__/forms.cpython-311.pyc | Bin 0 -> 1330 bytes core/__pycache__/urls.cpython-311.pyc | Bin 347 -> 561 bytes core/__pycache__/views.cpython-311.pyc | Bin 1364 -> 3318 bytes core/forms.py | 17 ++ core/templates/base.html | 3 + core/templates/core/dashboard.html | 49 ++++++ core/templates/core/index.html | 190 ++++++----------------- core/templates/core/mood_entry_form.html | 57 +++++++ core/urls.py | 10 +- core/views.py | 65 ++++++-- requirements.txt | 1 + 11 files changed, 235 insertions(+), 157 deletions(-) create mode 100644 core/__pycache__/forms.cpython-311.pyc create mode 100644 core/forms.py create mode 100644 core/templates/core/dashboard.html create mode 100644 core/templates/core/mood_entry_form.html diff --git a/core/__pycache__/forms.cpython-311.pyc b/core/__pycache__/forms.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4dda47543360f4ac835b103b91d007ed66c4055e GIT binary patch literal 1330 zcmZuxzi-n(6h8k>Di{q)&Zf8 z9gtw?fEWrW42+EY2`P$1bQ2O&wp8uZiT7;MQt0{ayL)%{p5OQ0vp;0B83OIm_Cse> zCgc|i!>0XN96W%<8$t<{T;fTlBoQi8#g#q9R6NyGB_fk$Le-aqYD}sP^~kP5NE=4d zOr7daNFminu^9>-*D&(%xTWnBZo73HlG@pJmJF>Q(b{bzn4r6xaqZH78rA? z?#Q3DU5Hs5;}*C0)(H!prX1Aq zIe=T_=vHyn_gFEiMD;K#vL>rWq0fsOK3@wOc9j*8R532M`9@2q$e3qAa}-AK3}Ey4 z>7Ae2(t5^1C+=JN&-~omnQngW>-4vKo!d*;^UHhrwa3n`(~nq6P<6Y6@L^dPQ)gf09BAQ<>DC7z#VbCkXV8c;)b`Ax8g-$1|s28tv} gJu=xj-FsxVb5;WXrQ{rx_C#i6W{G=?+(X-!cC-< z5e<~7f)ISnS#n`*Wr-@CrF5y-bs!QbnVnh9&b)d1=3Apt2V*ZkzZpGd0Ke?xuX%rx zt4}8R0s;gZL(D?PKvaY?uEb90#28}ihOVh$Sgimt;gTb&KfMbF;D?DD+jM+FQMiY>^oc;7+gQ&RwXa?iX<;M9nql3rQ#E*4zn~G5Vr!k z{iBmkul*OX6vdccsYhnm?wOsKYwa+`matv^>nnI(-tViRIrG<5aBH*Ir(37*zj`IM y=Ga7$R&X^hi delta 255 zcmdnUa+|4sIWI340}vcY|CNyiq#uJgFu)3Be6|5HrZc24q%h_%MX-2upzKp&xd_ZxK+F~yt@qw97&-6`oyET>gna*@QGD%VHA?Hsy$<+*XbY*+CsxiXHtVv4Oy>3xeXT#Fcls z^6bjCRJvvX6_8y67K{K^ivZQhaUdOh$ic@Pa|)Ki0wNX=V4%oBHx@=OIrYtmT4^mE z^L99#dGF2Nd*6FA-*$Ee5m5H&75Sfjg#JT2d&IXJZ#JOu3}J*h1r>JxxdI1$Ug1?w z!OKyeN9j;~1)nMu1lIQ|el<`Cuy%(MR6~UjYx|V2+F9s?wt)RgM2!}rtQ}BdYP=9< zIziVSp^es6w)3hc>YUgqv|H8i`Y zfo2_ja@p`YY&1*9F58UG>ABL3l)ft)m9z@hN=slaS<?6U=pHiL7SrM>9%iLRt)NWjQ|LWQwxL|Gvl!Z z>TpRnY@w`G4e6diL=foofa!Glmw_BTP;P!|zG}?pqN9ZiKp{k>n4+WB|;g*Mw`s$<5^GBCzmTSCmGHoSKZzXe^ z$=u7YzQ1WEbB*LBD|u-v`PpXjvmeJA$s1PkhFQ32{^=&vR`Sow;pY3d^ad71F7)|;K@apM56F0i464wkeblY(#r&R#{R6rjUvF@3 z+#HQZ%)7Pja|U%qn*dil_RR1b-siC1y0a$596o@-S-NLNYZL{C2zR(wp`$5YYy2AI zvcrUZ8-jbpeUCvs-6o1{9H@EZ!}tzPkQiv$0SB3OkYQ4%zNbMyElUcfkk%LdeK!XB z)PX)sfdz7`gMv>3_*acZk%0x5^vaZ0BA5Z#4wfq=ViaNWQYOeyOWuR!NP<=r+ayV= zFjO{=4co69WSYi@Ef`vH7E;tMl)dB_)uU$uy=n3RG;|7bfN`31Q8t{Qy)-!ueah4S z0aYFSEFQPSlUw4MP4Udjtoviab@hqtyjb5 zz^7*5N+WQ^3S6mQY9@}Yc7Lr|iPKw&!Og_r%l<~!3$XcZe|mc8UeyqFE=+*7)Lno7)F5_8v&Do|*@Dw0G{u zJ{aRbym}5~f+O?0WEqeJ99hsM>jqiKk%e8dPLOrBWde>IltH*0c}}-II0W`MGOXU# zI~Y

bCwhRE-?;lY16yv7|7j_*v^-p?nmT_2%=Rn}BhHb^fFBLS!u zg%3tX@<2Nj0<8DRVE)_=bvo-&=?*9Gbk0+vnrwcaD{T7PPdzC==Hb2j`>zd$II~IfD3bfljI{9#)3Z# z*}jfm3z4P2t|m5xUQ_7ZjvinA>YJO5XulQhU-mXb(I*!kU3mEMfsJ^xPq zEA^spHPuMvtyF&bYV$xbRSy^M(0DE7s49JP-%uFAGI=sU0N* literal 1364 zcmZ`(&1)M+6ra_{dS%J>I!@|TuH%hUh$T{~CE!96oTjQ1oHkCdQ%ZHHPf-Q6#oP5Eq{V!1Q7#*Ku^61OfEk4%~~s}guETzy!YnKoA>c! z|CpMZL_mL+PRlpL2>m0JfI>sz+l$SscSs^=|k4VB6wxYJ2mwh>6 zP1s6a0Xh0B%Et_88>QrbMYzqB#N#E*3Oks3CUHQODRvA@K~k7$;|6iCE(zZu#bJlk z(8(RJK1WUTVt6pV9fEo^GQIeJgpqaJXHRNMhV;}glZK3tBN^en5Q~o7QAND#(>piA zMx+^HvEUS;@pC3}9#TaPq;a2SxGAxj;0&RP639l>kPjiNqhJ8&1AY_l`WecBvKL`< zK_mp-GGfihA=Gg+ss)BI*;w21yRNY^)~upqm`+Labc(T~)l62_EK-D_XmFxoXUC+( zv9ZH61GA!Od6`C{=(;tt(Wqy1VsquT>;5P-9=l@|nMF#b-iU4DnzqgA7Upvgw;tSE z&pj%9yS|;<+IaYA=m{Nfc9(G8LP76tKq2MQk+Efgahls~zxB^Y15iq2p ze1hU%s@P+67IZo#*hj*3LMINxyUY_2H9@DJWy{3I+3Mq}!>U=li}flaG+QI|spl4T zob~hDF>%eyxOE;8-gFVJ3n+TO18bo->ila}J65%hy4+QlU#ly}>PkmVchz)jqo<`_ z{(P+6Xlpn2)BEXH3$5?^ljojY`z`Y<)5;BG^zo;?`Q?6crISo|lj(kPxtsi=lf2$d zUhiF8=v}zfU%GryZ>QE?g*r>Q?ozJ5xODJS`|4MJebZUI)m^+bn2pWI0|cyf_w9L< zIJbYby>RVisS{uA##h^s)e}e(07x&wM(2TX`E06G0Q9V<>X{|ul?i3g0?%(HPYlgf z1`zb;;Me{qqL;+gPk@~&H*I26ExbmrfGYk1-VPixelMinds

+{% endblock %} diff --git a/core/templates/core/mood_entry_form.html b/core/templates/core/mood_entry_form.html new file mode 100644 index 0000000..8893d25 --- /dev/null +++ b/core/templates/core/mood_entry_form.html @@ -0,0 +1,57 @@ +{% extends 'base.html' %} + +{% block content %} +
+
+
+
+

Track Your Mood

+
+
+ {% csrf_token %} + +
+ + {{ form.mood_score }} + {% if form.mood_score.errors %} +
+ {{ form.mood_score.errors|striptags }} +
+ {% endif %} +
+ +
+ + {{ form.note }} + {% if form.note.errors %} +
+ {{ form.note.errors|striptags }} +
+ {% endif %} +
+ +
+ +
+ {% for checkbox in form.activities %} +
+ {{ checkbox.tag }} + +
+ {% endfor %} +
+ {% if form.activities.errors %} +
+ {{ form.activities.errors|striptags }} +
+ {% endif %} +
+ + +
+
+
+
+
+
+{% endblock %} diff --git a/core/urls.py b/core/urls.py index 6299e3d..8b96229 100644 --- a/core/urls.py +++ b/core/urls.py @@ -1,7 +1,11 @@ from django.urls import path -from .views import home +from .views import home, create_mood_entry, dashboard + +app_name = 'core' urlpatterns = [ - path("", home, name="home"), -] + path("", home, name="index"), + path('mood/new/', create_mood_entry, name='create_mood_entry'), + path('dashboard/', dashboard, name='dashboard'), +] \ No newline at end of file diff --git a/core/views.py b/core/views.py index c9aed12..4108665 100644 --- a/core/views.py +++ b/core/views.py @@ -2,24 +2,61 @@ import os import platform from django import get_version as django_version -from django.shortcuts import render +from django.shortcuts import render, redirect from django.utils import timezone +from django.contrib.auth.decorators import login_required +from django.http import JsonResponse +from .forms import MoodEntryForm +from .models import MoodEntry +from django_pandas.io import read_frame def home(request): - """Render the landing screen with loader and environment details.""" - host_name = request.get_host().lower() - agent_brand = "AppWizzy" if host_name == "appwizzy.com" else "Flatlogic" - now = timezone.now() - + """Render the home page with mood entries.""" context = { - "project_name": "New Style", - "agent_brand": agent_brand, - "django_version": django_version(), - "python_version": platform.python_version(), - "current_time": now, - "host_name": host_name, - "project_description": os.getenv("PROJECT_DESCRIPTION", ""), - "project_image_url": os.getenv("PROJECT_IMAGE_URL", ""), + 'project_name': "PixelMinds", } + if request.user.is_authenticated: + mood_entries = MoodEntry.objects.filter(user=request.user).order_by('-date_time')[:7] + context['mood_entries'] = mood_entries + return render(request, "core/index.html", context) + + +@login_required +def dashboard(request): + mood_entries = MoodEntry.objects.filter(user=request.user).order_by('date_time') + df = read_frame(mood_entries, fieldnames=['date_time', 'mood_score']) + df['date_time'] = df['date_time'].dt.strftime('%Y-%m-%d') + chart_data = df.to_json(orient='records') + return render(request, 'core/dashboard.html', {'chart_data': chart_data}) + + +@login_required +def create_mood_entry(request): + if request.method == 'POST': + form = MoodEntryForm(request.POST) + if form.is_valid(): + mood_entry = form.save(commit=False) + mood_entry.user = request.user + + # Assign color based on mood score + mood_score = form.cleaned_data['mood_score'] + if mood_score == 1: + mood_entry.color_code = '#FF0000' # Red + elif mood_score == 2: + mood_entry.color_code = '#FFC107' # Amber + elif mood_score == 3: + mood_entry.color_code = '#FFFF00' # Yellow + elif mood_score == 4: + mood_entry.color_code = '#4CAF50' # Green + elif mood_score == 5: + mood_entry.color_code = '#2196F3' # Blue + + mood_entry.save() + form.save_m2m() # Save the many-to-many relationships + return redirect('core:index') + else: + form = MoodEntryForm() + + return render(request, 'core/mood_entry_form.html', {'form': form}) diff --git a/requirements.txt b/requirements.txt index e22994c..f3c9ec2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ Django==5.2.7 mysqlclient==2.2.7 python-dotenv==1.1.1 +django-pandas==0.6.7