From ee18c536fd6515e9e9b34d520dde5a9f5e0e711b Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Tue, 28 Oct 2025 12:22:51 +0000 Subject: [PATCH] Auto commit: 2025-10-28T12:22:51.063Z --- core/__pycache__/admin.cpython-311.pyc | Bin 212 -> 453 bytes core/__pycache__/forms.cpython-311.pyc | Bin 0 -> 1450 bytes core/__pycache__/models.cpython-311.pyc | Bin 209 -> 2709 bytes core/__pycache__/urls.cpython-311.pyc | Bin 347 -> 464 bytes core/__pycache__/views.cpython-311.pyc | Bin 1364 -> 1941 bytes core/admin.py | 4 +- core/forms.py | 12 + core/migrations/0001_initial.py | 26 +++ core/migrations/0002_call.py | 32 +++ core/migrations/0003_lead_status.py | 18 ++ .../__pycache__/0001_initial.cpython-311.pyc | Bin 0 -> 1370 bytes .../__pycache__/0002_call.cpython-311.pyc | Bin 0 -> 2088 bytes .../0003_lead_status.cpython-311.pyc | Bin 0 -> 983 bytes core/models.py | 36 ++- core/templates/base.html | 16 +- core/templates/core/index.html | 209 +++++------------- core/templates/core/lead_detail.html | 50 +++++ core/templates/core/lead_list.html | 59 +++++ core/urls.py | 6 +- core/views.py | 50 +++-- 20 files changed, 336 insertions(+), 182 deletions(-) create mode 100644 core/__pycache__/forms.cpython-311.pyc create mode 100644 core/forms.py create mode 100644 core/migrations/0001_initial.py create mode 100644 core/migrations/0002_call.py create mode 100644 core/migrations/0003_lead_status.py create mode 100644 core/migrations/__pycache__/0001_initial.cpython-311.pyc create mode 100644 core/migrations/__pycache__/0002_call.cpython-311.pyc create mode 100644 core/migrations/__pycache__/0003_lead_status.cpython-311.pyc create mode 100644 core/templates/core/lead_detail.html create mode 100644 core/templates/core/lead_list.html diff --git a/core/__pycache__/admin.cpython-311.pyc b/core/__pycache__/admin.cpython-311.pyc index cd6f855b12f4883b1ba9de01c54245c53aacd714..7fb1478ec5e6cd2cb7b1985569299ed4323d4f1a 100644 GIT binary patch literal 453 zcma)1u};G<5IrYOsVdr~Qy0XVf%*p!3yc*DTedVll@vR!oJ7FR#KgwR1VW7bNT`sA zJRvc4L+aKE8;As`15an)^PS$^^If;w0gKTiq@~So?$N;iCd*4pu7Lw50wjqD0q${M zc+!u2Nh3-C$uwwWH?4;K%;?_|fCqcN@GlMhtKswr!eHS>gv10fmua?eGeghN5ysrm z{aA>@aKrTYG|nb!n5eAK=~%npn3hx=MXsG$?R*-Vrv;j}#z~qNsPAEEtFYQ($4VkA z$7NQO49_qr3#Hkq(kJ;WPLL%^Bm3MxoSm=QyLNCXa8LKF+8N4Yd%gRFkQ%nD-%-O> hwJu&Exahnky0kL_Cp~!J;GLt1 zCK%$`|AXVES5MrQEGJIB*I~fL(Ztwkf76fm(Z1hnzqVSF1j^Izr1yyu@&gA|2`@UM z3_1ry5J3}?(wI^rJmDu^>c@T>!~rE9c}_&|frwDj%}S3P`h7 z&DW$oae_*1YQr_9Q*#1)BW=$HuOt^Xc*c{YTUsqKxEPEcLg#=;5>r89&pD*v&^z>C zE6~ak`@#n&fo-C_CGaq2t&$tv9kV9=I9P`ue5P?IJka;gTb2Ievdnoqw2iJx`#jsT zQ(cwiyqmL(r_zS~4VA$!Q@J!YGC9u+v(k=ilQ{v#>?C8U5=A1RKgHN~!4p(vOk+H4 z2#YeY(OOR?!W@wip5**dXG5j3Q@km%yy(bX*)4LVJ3C5mnLh8zPFHE!aUopn@7Vx% zsgZHCX%+z9Uw(rdbNk_7`o*!U`w@Qn7KrG1fR&>_-@w5%!b~--Z(`3$-Ns(C0%XK2 z0bDs4dS3XF4oN+py7{v|td=g&`WRE_1L+ErWe*B629so;dQGe;b?fJ-L#R|iAkU05$mzi L!BEsoxKR8AI-x}_ literal 0 HcmV?d00001 diff --git a/core/__pycache__/models.cpython-311.pyc b/core/__pycache__/models.cpython-311.pyc index 9aa598b9d5171b2bb0d207f045e07f9fbbb95a64..403759f28e434b6ebc76f765435975194f8d6385 100644 GIT binary patch literal 2709 zcmai0%}*Og6rZ)%-)m!IAcm0CDIcu^v8xcFD2XCb2oY(5s)V)@m(}7Kz+}Da%&tp7 zIrxwRha9+6K}st{twf2E1BX`Xp@$y&2dt&7WbL&lE)`L7%B6j8*Cu?0KJUJrd0#X0 zX5Mf7b37g;K%>8s(oX?G{>Dy=pzqR~CHOoglu$t>Wnoqju zMJ6nXO&_x9C*&o(9?b?^s{mL9Pp}Ho&^?k1@1RpoaDru>GSz^V_?5wUu^G($>`hJ* zaB_^y3Y5(He1!SmPl5`se4C(u39m;uk^iv>9eJa zP?X>Tp`jlI8h#Zyl$xk(8Ebh$tmvUROGhkXhb-b$dQ4^$G!E%YIO1)l(4BuF;tRov zmX(LH%CrS@ai;@BGdZ6Vm{S$)z9VW?Ro%G=!dwWX{%N+%6WH@Pk#Su!m7>WgZ*wK@ zVpCf7ORg_)W*9u_$>JcW=!T+Z?=j8fDNh<5S9OEY>^Hi`+ndf!(QVx@dD@djruFQY zW-K$#abDiYejb6g6Dlt1r6Mz&5M}d9RW)HDl2SEwS<{zgg;F>Z;a0!6x4YnqZ9H~w zaEedKBZ7z5Bgl;~4UVCrUalzG3d9r*rp_DalYN&jEb3)esLoY2vsz#eSrNwLg=L-J zH!4bz6^c4%1@B1aD=SV&mSHinyeeV3^UYo-#4@m^YNXMYe)7l)pMHbGPv_d4uqioDtf!&x;uf&qOLI~GQ%F4u8|Ya zbQ6*lG)%>;8cuvdG1*M1%sg$h$QcNzte8$pRSZ*ZhI2*yBN*WY;aT|bv&e!ihQ)0B z1+2FBYb4ID&D)8yTYXj{Ur*%iM80;jk?va`wbOlDhLs+vr$_AcNbPn*>Rp?(rQR){ zB@NZ3AzK=%-DnA)U)rLUG*XvFY-t3<@iS{*+wn77?YksA8r;W{B-y!}3MaZ=6JT$V z)h2h_N&Db>mz^5ezGS5?*Hf46)aBZ(MrL>;XlI7Esg=1}&s?=LS1qw~R}=!hyW}YI zR*Z{19#}Lu79Ro@7N7#a2s*n25CI#v5AQsPzy!L)!UwGV$AX26#Axoq35>oEwqh;> zNM1BTHlgvd)giO-6SavGwQVPAldcvE+oeO}w!2!aXP0R3Rp<~fbsY3};qTzeI%yQ3 ztBb~YHd3its; zz)f%w;WKE!H74xGge9zfm!83u2AVwte@1=~VM_k#)hNy>yIe9Cv#VlO*RnakBdSpI zd;mQ85VBri9*%f5ghjO~p<@de`q2W#2nqSy%(*vDR_Ppe{b_zR(Q%imeaXY z{2bWwkCF8u!zDP;Nx-1eg7yVlam&;RjgQ?MADg(rFQE-C)rkNeGehRA!f{Lh5156l zS51ID#y>$($f%af3SV&~%D!c)UMT~78%~joeIc6uvYE#F< zQ4_f8iL9N-zQ?S3dcaN(09^H)-x#!e&ewZ}?Ve#vJk{vvU!Sx)`s*EocE@1tPNVz6 zMwi`vq267vy9<`s)yNDX+zf5surgQbnJaeY3cyVxHE0HQ( z&?QA%(DQW8+wz`fA2FMk=JIgsE#|#j$lLG09sHN%p|+dKgXw)2zUEyu*ZDXMf#==$ z4%n_=5QGNlwGKWFGGrZmcExr90Q4wZ8+~%^HOk+LrWmp2~#~=<2FhLogg@BCd3@HpLj5!Rsj8Tk?3@J>(44TX@K?*b( zZ?Wa(r=;c-`)M-W;!Md(%uCPLOGzqX21>4E_zY6>OHV%|KQ~psG^sSNq*On(A~m_R zB)>?%JijQrxF9h(RX;huC{-U~j9x+IFAf_ZyEG@&u80Guoe_wOWr4&8W=2NF8w@fR Ku%RM0pb7xTsWln^ diff --git a/core/__pycache__/urls.cpython-311.pyc b/core/__pycache__/urls.cpython-311.pyc index 1f807fae1897c89361c99c5e868a26d00799b73f..7c7ea4c342534a595d6e6709011277e179ed1920 100644 GIT binary patch literal 464 zcmZ8czfZzY5Wd&G7E05Q$ZCumAu%+rhAb@7{NJ-@UtgwX6aNx&8$AOT0hQ*^2%LmOTL;0Rf2zK4}pG zsG#a8zS>d=D8L9(ruOKz5Va5eMFn^lcOz>~PH?ns1oQtn9i^qCaR!ybT#_mzqkSjt z&dJ8nZe2ErGRQPHKsJ==!139A$zu-MH8+S)B)W95ZfE8iB8wf@JFVn06MIh339AYB zA}*)mayc%i;W=pxVKP&sMa!7+AbNwP2*K*e?uI_IldB|%6PpcLJBdSX4?=zu^_@1e z+aVWe@o%+%x60T25EGBpc~KP0$s-hIp%Ox7u%GVg3`*&)E_Be0QDeL}K7Y7)8l<#5 nq2(zp&uD(sNR5MMZF+e8ZKbq1q0K36E;O~Mj7)jBB^vz#pw)G1 delta 244 zcmcb>e49yqIWI340}vcY|CNyiq#uJgFu)3Be72dWu9}>}x`u5TGXukFAclZ+#weB) z_Fx80j+Y<-O~zX+1&JjYFBzenjQrfxTMR`YV?c6wiMgqMnyk0DQ?e5C()0C7i*kyK zK!)97Ez3+TFD_!8%*7ZG!v_=rnNaKnBt9@RGBVy^khy@09x#YsKt&(e7+5(QTsnk0 eLT0dCV3EJbB7cQN{sS`;KT`uY2o~`GjROGhQ#t(r diff --git a/core/__pycache__/views.cpython-311.pyc b/core/__pycache__/views.cpython-311.pyc index 6867ddf286a519cf1754ac97038f9f1e4605fbf2..9b008bf9f6bc6bb9c7e68be5bc056aed89782886 100644 GIT binary patch literal 1941 zcma)6Pe>eB7=QC`XVw|rwM(MKjS;FT8`|Aagd!$Qp~fQqX{?@>z_Qu*s;e`OeKTuP z8H>*(UP)~fUt-qQ?`_>VnwnM zF3YBBX<5yRW}_f0&rr4lM}X>BokJ<@HFKJhf(Rumn9x9@1Q#hOxIy;VtceXw9?g@ zSNquw!8Oj$F0m^4Dr-%y^?%{4=qAp!9>S6*cp{ef#RI7BFsu+RNSO)bhhNOi2TBp{ z=jnQ^U{jLee0tHf*agU6vF0l#T!WM92qG477i~O+0f^AtvH_#c%bC|gKq6yn77mIlP z8V6pBG8_)J$B~@sq^!{#_%zNq_SEtSw3~77FmeM(AeS6?3ZqWmBu(h3^^587N>gmm~|2-2* z^lmNDvpe#`Ncq9bkxJrrHF0}utk#>{8rzwu-5A_|1kB8(v6(&|{`F%&Fi_pwL;e0$UkwfUSABK4LzofjsD<_#!k4gfHRVbE3qit^VgLXD literal 1364 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 literal 0 HcmV?d00001 diff --git a/core/migrations/__pycache__/0003_lead_status.cpython-311.pyc b/core/migrations/__pycache__/0003_lead_status.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..50d87cfed57b4ab5a38afcbafad6bca33ceef52f GIT binary patch literal 983 zcmZuvy>HV%6n|$sPV6?&79@oDP^c<1sgzl;Z@Y^`! zQ5YFVOK9u>14bg~lP2j~O^bj9Pk>pUfZ3e%>~Yaow0@j=O`ADuP%RvoaMjX&zuT5H z>55osw=WovR5-3Qt2c6vT4?M5hbCdrv>0iVrfmUtdgG?>Xl59; zi)Y)|EuHmow-WQPF<*Pn#~opNPADYT-onDdVi3|O(oV!F)2>QrlB#MEQ|t!ckP~<$ z+Fo762@Mm@tehOA$YgyO97M#S>ssCY!J z2$jgGA?GzjWjR(GT*_%=@{V@;tESFw6hdCbSm=zt*KLmth1DWm4xLeQ6l()vsG^&pFSdYeS zG0$4LHn}3hb}J?=&z(i%he*pd7`1k+- literal 0 HcmV?d00001 diff --git a/core/models.py b/core/models.py index 71a8362..11f95ac 100644 --- a/core/models.py +++ b/core/models.py @@ -1,3 +1,37 @@ from django.db import models +from django.contrib.auth.models import User -# Create your models here. +class Lead(models.Model): + company = models.CharField(max_length=255) + contact_name = models.CharField(max_length=255) + phone = models.CharField(max_length=20) + notes = models.TextField(blank=True, null=True) + status = models.CharField(max_length=50, choices=[ + ('New', 'New'), + ('Contacted', 'Contacted'), + ('In Progress', 'In Progress'), + ('Proposal Sent', 'Proposal Sent'), + ('Closed Won', 'Closed Won'), + ('Closed Lost', 'Closed Lost'), + ('No Answer', 'No Answer'), + ], default='New') + created_at = models.DateTimeField(auto_now_add=True) + last_contacted_at = models.DateTimeField(auto_now=True) + + def __str__(self): + return self.company + +class Call(models.Model): + lead = models.ForeignKey(Lead, related_name='calls', on_delete=models.CASCADE) + sales_rep = models.ForeignKey(User, on_delete=models.CASCADE) + call_outcome = models.CharField(max_length=255) + summary = models.TextField() + developments = models.TextField() + requirements_raised = models.TextField() + actions_taken = models.TextField() + next_followup_date = models.DateTimeField() + followup_required = models.BooleanField(default=False) + created_at = models.DateTimeField(auto_now_add=True) + + def __str__(self): + return f"Call with {self.lead.contact_name} on {self.created_at}" \ No newline at end of file diff --git a/core/templates/base.html b/core/templates/base.html index 788576e..ba44d35 100644 --- a/core/templates/base.html +++ b/core/templates/base.html @@ -2,10 +2,20 @@ - {% block title %}Knowledge Base{% endblock %} + + {% block title %}Lead Tracker{% endblock %} + {% block head %}{% endblock %} - {% block content %}{% endblock %} + +
+ {% block content %}{% endblock %} +
+ - + \ No newline at end of file diff --git a/core/templates/core/index.html b/core/templates/core/index.html index 0a3f404..3f78462 100644 --- a/core/templates/core/index.html +++ b/core/templates/core/index.html @@ -1,154 +1,61 @@ -{% extends "base.html" %} - -{% block title %}{{ project_name }}{% endblock %} - -{% block head %} -{% if project_description %} - - - -{% endif %} -{% if project_image_url %} - - -{% endif %} - - - - -{% endblock %} +{% extends 'base.html' %} {% block content %} -
-
-

Analyzing your requirements and generating your app…

-
- Loading… +
+
+

Leads

+
-

AppWizzy AI is collecting your requirements and applying the first changes.

-

This page will refresh automatically as the plan is implemented.

-

- Runtime: Django {{ django_version }} · Python {{ python_version }} - — UTC {{ current_time|date:"Y-m-d H:i:s" }} -

-
-
-
- Page updated: {{ current_time|date:"Y-m-d H:i:s" }} (UTC) -
-{% endblock %} \ No newline at end of file + + + + + + + + + + + + + + + + + {% for lead in leads %} + + + + + + + + + + {% empty %} + + + + {% endfor %} + +
CompanyContact NamePhoneCreated AtLast ContactedStatusNotes
{{ lead.company }}{{ lead.contact_name }}{{ lead.phone }}{{ lead.created_at|date:"Y-m-d H:i" }}{{ lead.last_contacted_at|date:"Y-m-d H:i" }}{{ lead.status }}{{ lead.notes }}
No leads found.
+ +{% endblock %} diff --git a/core/templates/core/lead_detail.html b/core/templates/core/lead_detail.html new file mode 100644 index 0000000..92103bf --- /dev/null +++ b/core/templates/core/lead_detail.html @@ -0,0 +1,50 @@ +{% extends 'base.html' %} + +{% block content %} +
+

{{ lead.company }}

+ +
+
+ Lead Details +
+
+

Contact Name: {{ lead.contact_name }}

+

Phone: {{ lead.phone }}

+

Notes: {{ lead.notes }}

+

Created At: {{ lead.created_at }}

+

Last Contacted At: {{ lead.last_contacted_at }}

+
+
+ +
+
+ Calls +
+
+ {% for call in lead.calls.all %} +
+

{{ call.created_at }} - {{ call.summary }}

+
+ {% empty %} +

No calls logged yet.

+ {% endfor %} +
+
+ +
+
+ Log a New Call +
+
+
+ {% csrf_token %} + {{ form.as_p }} + +
+
+
+ + Back to Leads +
+{% endblock %} diff --git a/core/templates/core/lead_list.html b/core/templates/core/lead_list.html new file mode 100644 index 0000000..29a6c1d --- /dev/null +++ b/core/templates/core/lead_list.html @@ -0,0 +1,59 @@ +{% extends 'base.html' %} + +{% block content %} +
+
+

Leads

+ +
+ + + + + + + + + + + + + + + + {% for lead in leads %} + + + + + + + + + {% empty %} + + + + {% endfor %} + +
CompanyContact NamePhoneCreated AtLast ContactedNotes
{{ lead.company }}{{ lead.contact_name }}{{ lead.phone }}{{ lead.created_at|date:"Y-m-d H:i" }}{{ lead.last_contacted_at|date:"Y-m-d H:i" }}{{ lead.notes }}
No leads found.
+
+{% endblock %} diff --git a/core/urls.py b/core/urls.py index 6299e3d..e8f4131 100644 --- a/core/urls.py +++ b/core/urls.py @@ -1,7 +1,7 @@ from django.urls import path - -from .views import home +from . import views urlpatterns = [ - path("", home, name="home"), + path('', views.index, name='index'), + path('lead//', views.lead_detail, name='lead_detail'), ] diff --git a/core/views.py b/core/views.py index c9aed12..afbc3c3 100644 --- a/core/views.py +++ b/core/views.py @@ -1,25 +1,29 @@ -import os -import platform +from django.shortcuts import render, redirect, get_object_or_404 +from .models import Lead, Call +from .forms import LeadForm, CallForm -from django import get_version as django_version -from django.shortcuts import render -from django.utils import timezone +def index(request): + if request.method == 'POST': + form = LeadForm(request.POST) + if form.is_valid(): + form.save() + return redirect('index') + else: + form = LeadForm() + + leads = Lead.objects.all() + return render(request, 'core/index.html', {'form': form, 'leads': leads}) - -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() - - 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", ""), - } - return render(request, "core/index.html", context) +def lead_detail(request, lead_id): + lead = get_object_or_404(Lead, pk=lead_id) + if request.method == 'POST': + form = CallForm(request.POST) + if form.is_valid(): + call = form.save(commit=False) + call.lead = lead + call.sales_rep = request.user + call.save() + return redirect('lead_detail', lead_id=lead.id) + else: + form = CallForm() + return render(request, 'core/lead_detail.html', {'lead': lead, 'form': form}) \ No newline at end of file