From be406aca40e1c2eda32bab60abb1811913e77ccc Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Wed, 4 Feb 2026 04:25:33 +0000 Subject: [PATCH] Revert to version 65bfca7 --- config/__pycache__/__init__.cpython-311.pyc | Bin 159 -> 159 bytes config/__pycache__/settings.cpython-311.pyc | Bin 5685 -> 5552 bytes config/__pycache__/urls.cpython-311.pyc | Bin 1663 -> 1557 bytes config/__pycache__/wsgi.cpython-311.pyc | Bin 679 -> 679 bytes config/settings.py | 2 - config/urls.py | 1 - core/__pycache__/__init__.cpython-311.pyc | Bin 157 -> 157 bytes core/__pycache__/admin.cpython-311.pyc | Bin 1686 -> 212 bytes core/__pycache__/apps.cpython-311.pyc | Bin 524 -> 524 bytes .../context_processors.cpython-311.pyc | Bin 763 -> 763 bytes core/__pycache__/forms.cpython-311.pyc | Bin 1446 -> 0 bytes core/__pycache__/models.cpython-311.pyc | Bin 4789 -> 209 bytes core/__pycache__/urls.cpython-311.pyc | Bin 1729 -> 347 bytes core/__pycache__/views.cpython-311.pyc | Bin 9295 -> 1364 bytes core/admin.py | 18 +- core/forms.py | 14 - core/migrations/0001_initial.py | 53 ---- core/migrations/0002_folder_outfit_folder.py | 27 -- ...older_user_item_tags_item_user_and_more.py | 50 ---- .../__pycache__/0001_initial.cpython-311.pyc | Bin 2750 -> 0 bytes .../0002_folder_outfit_folder.cpython-311.pyc | Bin 1466 -> 0 bytes ...em_tags_item_user_and_more.cpython-311.pyc | Bin 2395 -> 0 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 168 -> 168 bytes core/models.py | 57 +--- core/templates/base.html | 268 ++--------------- core/templates/core/index.html | 281 +++++++++--------- core/templates/core/new_fit.html | 263 ---------------- core/templates/core/outfits.html | 158 ---------- core/templates/core/wardrobe.html | 164 ---------- core/templates/registration/login.html | 29 -- core/templates/registration/signup.html | 41 --- core/urls.py | 24 +- core/views.py | 172 +---------- 33 files changed, 180 insertions(+), 1442 deletions(-) delete mode 100644 core/__pycache__/forms.cpython-311.pyc delete mode 100644 core/forms.py delete mode 100644 core/migrations/0001_initial.py delete mode 100644 core/migrations/0002_folder_outfit_folder.py delete mode 100644 core/migrations/0003_dailyschedule_user_folder_user_item_tags_item_user_and_more.py delete mode 100644 core/migrations/__pycache__/0001_initial.cpython-311.pyc delete mode 100644 core/migrations/__pycache__/0002_folder_outfit_folder.cpython-311.pyc delete mode 100644 core/migrations/__pycache__/0003_dailyschedule_user_folder_user_item_tags_item_user_and_more.cpython-311.pyc delete mode 100644 core/templates/core/new_fit.html delete mode 100644 core/templates/core/outfits.html delete mode 100644 core/templates/core/wardrobe.html delete mode 100644 core/templates/registration/login.html delete mode 100644 core/templates/registration/signup.html diff --git a/config/__pycache__/__init__.cpython-311.pyc b/config/__pycache__/__init__.cpython-311.pyc index abb44a2bb917f4119e05879d599dcf1757e3ead0..423a6362b2322713e75da67a35e209e76169dbae 100644 GIT binary patch delta 19 ZcmbQwIG>SwIWI340}xbw%b&SwIWI340}wcGZJNkE1pq6H1i=6R diff --git a/config/__pycache__/settings.cpython-311.pyc b/config/__pycache__/settings.cpython-311.pyc index 73abb21c655c4dfe12e5d56074099e0f734b26d1..96bce5584823cd4ebfccfc40c2b36df8beaee7db 100644 GIT binary patch delta 101 zcmdn0vq778IWI340}xbw%g=O~$ScWog=M40WfoTEU%~q^axtKKdH$UX(XHqHR s0jet!1QGl|;unWaZhlH>PO4o|8j#Bf#KreEn+x4$=Dxrn1Vmt^042s4#{d8T delta 233 zcmdm>y;X;IIWI340}wcGYsze&$ScXj$GTDDGK;-Slzu96mH|i#1Qr-VXjC$lGsSfo z69dC)AclY_qZH;~22Hn3tW&v!s@U~&Q&Tb%^>49)X-(tJ)A{+C+;4IEy1IBe#)k&^ z++rz6EXlaVl9ivCcZ&-m9OUmGQp5u^uSgI?@B@io95%W6DWy57c177hE+Y^Zf7^UY m@HVsZ4Ia@3&Ktb^J>mT^T`@B>7Pw#J)w#l})4&CSU?Tu=HaVvN diff --git a/config/__pycache__/urls.cpython-311.pyc b/config/__pycache__/urls.cpython-311.pyc index fd771aa6c637a0ac6dbacf04981221ad91e229e1..0b85e94ece283a83ff1af1d71f1b265c943eb37a 100644 GIT binary patch delta 92 zcmey*GnI#TIWI340}xbw%g@xA$ScXnHBo&5qshb*DVq}*e={)(PL5$&F>mG1t0(b delta 19 ZcmbQsIG2%oIWI340}wcGZJNkE2>>fW1iJtL diff --git a/core/__pycache__/admin.cpython-311.pyc b/core/__pycache__/admin.cpython-311.pyc index cd3e6947c65758468108aa3817c096638d9ac9af..a5ed392d6714413db63120e4233d2e96cbadb5de 100644 GIT binary patch literal 212 zcmZ3^%ge<81k-=yXW9el#~=<2FhLogg@BCd3@HpLj5!Rsj8Tk?3@J>(44TX@K?*b( zZ?Pt(n;80F)6nZ2$lO literal 1686 zcmb7E%TC)s6rHgh<2(#BG`v(OssJgpC7W(4Rh6o?s;bgdDm!;!nalvDcAQQewb?}# zACMjW0xHD5-$A4-(5#TUViyD}R=w9I5hSTf$MMNLuFsrv=h{C_Gew|%{Po>kRS5Zw zgKpEWI_H8CvPT$U)FVE%C?!l`s;Bs>rTUts`3WoG>y}Q5LO9(S=@M{tAD%pfJ8lYj zLzuQpSOTJq?(Dt_F>uFiAN~%z17aon7_}jcIxvphnlaVKm>9xn0AupjjOji`eF$R; z7}K|A%&^Ql$(yH`hdh-Dhxu;#6!VzZr18=T`Bot6QhOV6U+N!f;iel(^OfUz_4U#= zXEl$PdO3tn_XN(fFxVrUSd!q-52u2!59 zFO&ko3z4gfyh{0s>^1ZfDq1qI55OufgbNM2lU(P>4giGX1QbCfef*XSi^IfGm@}c%#drx9C)xPN9|+)Y1>lrFQlK sYFR-oE66h4i|=VMTXeon=aFR@S^D8eu04}SmStpFMwa`7@zFc+2jN0r00000 diff --git a/core/__pycache__/apps.cpython-311.pyc b/core/__pycache__/apps.cpython-311.pyc index cb1b371b1d70f25b20d940e38fcbe1f67caef30e..6f131d4873bc56e3763e4ed09960c6e3f34140e1 100644 GIT binary patch delta 20 acmeBS>0#ks&dbZi00dRv@;7obG64WD>I9Vl delta 20 acmeBS>0#ks&dbZi00hokn>KPYG64WBLIf}X diff --git a/core/__pycache__/context_processors.cpython-311.pyc b/core/__pycache__/context_processors.cpython-311.pyc index 8da9bfe4ae83e0d6d6924b489c898a5b5d2317b3..75bf2234fb21a6b62efc5cec11af9512dd0c9616 100644 GIT binary patch delta 20 acmey(`kR$|IWI340}xbw%iqZTfe8RYW(H&c delta 20 acmey(`kR$|IWI340}wcGZQ98Ffe8RVz6JjP diff --git a/core/__pycache__/forms.cpython-311.pyc b/core/__pycache__/forms.cpython-311.pyc deleted file mode 100644 index bd29a8573c7576a0e9ccbbd6b2a36bbbf8c35919..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1446 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 K4T42HK;r;xDL;(> literal 1729 zcmaKszi-<{6vs*V=?5*#QtUXcEh%wbXmAjVMTHu+5X4K38gWygNSy*g43!qo5*>;p zj%1v23OZ%zkRd=dbV!#pMLl@zRP;|c1_WYo?UczeOplq1iOd`_#W8a!k(o!PG-f_ZWEM#JFy1HO=}b(Y zf2xbehf)2<&#$& zT1kaqDNZlUYDPzQRk9+6>H8WvvS0C}Lm`Bo+2<-4N}qT+gB-0MXpS6aF=}JvDM*G zXi-QFVpiEhzWF#en zJaF2U(j{RADOAs4w$?RVOAa$p@b$_iobRDxbj`X;b(``srocC5b|iO9!=c)KU2&Zr zP4kgS9=3;jNckTD<&{o(nNnVdlouN1l|*@|P+kj^A9l)5Gvx<4l)mB=muTJm-%_Kf5q>!2~iYJg&Iq`PK5@0_c|43*}K^Cp8eAJzg`i`dJ9xnSYy zNtMB-51RpOMsgy|q@|~|V7c+C4Lci^@9t@_SZU_bW-rBqBk%<~Uj!mauj DW{1mn diff --git a/core/__pycache__/views.cpython-311.pyc b/core/__pycache__/views.cpython-311.pyc index c18fba3f8a18a5fe8c06a10e18031d1d627a9b64..2a36fd69370b38a98d8b01bf8eb9817c42f16ed6 100644 GIT binary patch literal 1364 zcmZ`(&1)M+6ra_{dS%J>I&SM!uH%hUh$T{~CE!96oTjQ1oHkCdQ$lozPf-Q6#oM~=1-7}AYwoe=&3h>36z}rW~~)fO5P4{-h1=r&HMPV zzfVm~BA|nRhVUX&zZ=1NEJDd#(kRMro?7~GlVKiARAFbK7y={g8`rq_)Wa;XDEltUWCmB zkq~sth&3ZeP{;A878u54V{Oaty2i>_vx<&kIwj51DaMXgGg(=)ND+pj!HI^Q9g`Br z#tzdA%!;PvWg3a1>()Z2BR!#4DWHiJ1dw>FOuS)~xge&2p-9tZ06jh%7)=`o)~k%rY>m)oo?Fy$ z*3WOp#5FJD)_FvD(?z&0py>SutcBjF^RHFyMAbU#a#vk`t*)G?D;+i6Rnx7Fo|by~ z_(Z$b)~@ZR_tUQyT0itB&pp5LYvy^Tl^e+D)6aYJ%l+g^CzEdC%omzVp>MZ5DOS%5y(&3}_Fj3p}k zQSXfGSfK)LV6=3gZk(+F8w)R>1(H;51k^41V6;V%hd%7%j4*(RK?N8n_Q7vlxOvG_ z&$&a6_~*pCi}tBE^wG>Y_iyHY=ey^g$=|iMwlGl6|NE!O4>}m;zwo9~9Oa8Agk_jJ zjKoN6iizQ0M~Y25Vve*k=4A2Snc~u}m@Dm$xzl`%r#dd>Nqb{ndhJTJq=lG3uiYsz z-5P79*LW?P-6^pAN(V>0m6F4#h(0j#vk^wWK=J;aC{1g&Rz)OA9P&_+NTYS8wB zwxdD23$&dL+5w53W}@N8_+00s4wI7-s%(1IWLlQwl$wY-O*fG1s%Gn0BAL2AJu@duiz(UkoP_zzX32HaJ&{epG@z*m8(@Dk z*h8hb;lc_3o&+d{a?E_i0%-b>B8T%oF?WEIU+T+m>T;j;~?lZ|u=oMs3};OOD#vOf#9b>Ur1o&8oibwmI++iOaD` z_G_5`H}*5Y8oSP$+*=o>FPhw3HZ3o85qUPLsDv)gh?1PmEG`Vssp*u-UBRXDnC`T! z&SfRyh3-iRgy~5t@vDhcQZhLuaaAVh(1b_f0s&CrarI^BwG*pzi?IF*&LI+seE;GI zjytk=c`>6dj>sR$GmC1Lj9kl-50!<)j65=vCGyDCqoUV!DcrbM2D=J@iIPeJ6F zBHwo7le?W8e4obmZTb3E`7cG?_oCr@vA`7t-{(g^J9_ij%CQpT^bQt-;X9+h8vWw% z?Zbt!Ezy5#=6C+!}?zpGXvUs*NIsnYXX&*DS}X_{z%V+0eGm*5YCb zUjMRVmRWYHxJ2brkDf8+XYw+abJUE-HS`6omt87lXse@n^e0+Y@d+CWpxCwUti|#B zfaqoSGM{sT=$%{I+j_vl5+x*-RFS>fT*r3k8x`E z9i$un5L|>M$Ln*23c{t)g=7fEDhWrE&h z@)pl2W-BE<5}!dDlTCMGVFB0>dQ{03B+0198hkglYE{$(0dl+&$395}b!^g_2=Xc! zq?)*bZwGvW7Se;tAdZ8rQrF{^*^-yQf}W)OD~LR^CAP1exp{WwY<|2L+VPvowb%aP z=-(f`e{B7j)^k|zIc$Io9nPOC3a$CEt=7P;mv6qi@@|RYT>=#awit|jHTs}m8`!T8 z>^DFL_ZK`{odZVa3!9yz8=a#M)!#j@b&l$t(?;j?O`+hq)nD|8p9`M}#ZXVNE3(-Y z-RO$04eDJZM%M@^N<7!mQer^-f#JNuf1`lgifCcP_WTs-h56Sw4T7IK&7KCQ0b1U6 z8@Q^bWffPfT;{PoEzK#ox}SQuuU0uCBS%ynHP(tzJ*bQO*>~ z07lm|1vRTCQt>40)r#3Rvq&I}P~(c6P_h|QTp(E*NT7c%`6%@#AY64v^*|912yH3R0SWa z%Kr#Nqzn~Tkr4y9J?&eY)rA9wa6sb@{D7DJCp^y`Mg>_Z z+dj5xhanXk{sr%`{j1)4mRZ$Cef1{yY+fZfDDv4=dxNPSx7NEPC-{c5F2Lb(&IaFb zEe-t?B8P~YjaW<_NklSmpQS-%B%6WzbQU7oVe$$Lx5OiCCz2|F)}{-mum-{AXL45@6vmhw?TKy|$H^sgUv2XRAFW=Y1K3#mp5MRlUZ~1o^{{Bt>?hXHL z-9Kdbhw^70`2k>^#m-1E+;ivSUw!<=^6llOm>GV+>%t*JIHYlh8Zm>bf-C>z6^ohS zvQqvS%t-8dU6A`!)ciR9>H>jfiXe%r30Ler;~DT=*WWWC(bWWr?j}g&mj);j0SFNc zlBF^Rl?V`aK@7?V0~8-2Txq1RTxaV76Wt>O$NAk$~j-liAr_8zwgo*K2tdq7nWc z#3d>sqg){B@Z`7#X7w)Ztcp6WC5S|_m*og$%VE<~QIvyl(~E|z+L)#X$L|A_b1Pj_WZ(Bbm2}Az3`7DbYG{ zA!lt~f#&0|?}k#lz9bHrl%}*SIUrX7bE-N_I$%6^rNf*fUUl8PkJ_n$Mg?U^n#XfZOr9N|CS9oAfr92wkgsVr4-zPpJdrX@jxs$iYK1XPPePLDxsD)6 zao({tgw{5=s)P-)$_-|+3POVPQ#&zDnltK+vu_26D3xVJD??CQHG z7RFX4i(>odlb=oAoLZSGOci~>l}}c?H+=gv-@dJI-)gHK9yY?mTKh0&^3LeNAtN}X zi9k<5vXGo zdub^3AgNBxL60^#o5!4zL#j)u)dMKXoxkre9Sa}QH8aK27cagQe|vml{O$3#t<~lU zKBBc-;<}n{IQGbJZpI9T$(%%5VFaS(at z_d?HaF0Ni)ySARwgd@6e#1M|;$BLZiuctnp`o*~$=kn)p8BX0kyBQkX2o0`&@F1p# zjvJxlx^Th}PH5bT#+?lPn=Z`0r*p^0@Cxk(YaZw~zCvJ+>Q+sctv>$<$sZ5Qr(Aw) z*`R+rJ(OeDU3Ki`%sGh9!Q`CV$)b60rSF{Mmki|pG5=65QX?-^Tloe^c+OktdCp3v zT*}ZBtrW3N5j4!I?*$fVC1c%mmJ@}Fldt`RT zntzY(A2a-8kZ2KtC58o(5qk;~D`yR{=k6RZ1d@a=eAlb{b{W21nr9bcby6344WU=# zdK;06PD_#b?$eR^MGeNPhy>b}OMPa(4wuc_H0)ZcjWi&vDvZMTHn{)>>jHT=WH`uR zO|#HC2o(K;U&QG_Wjec{S8!DmEvr~c$BwLY$fQu7ES<8 zWEV`5%%VUqfYcz}%xuV7Y==pE3!xOai+D?SHk@^|d>9x;?MEmEQDCL|Fw9rUy;p#G z9V-1TR=f+M9;g-|2R4EOtMDo51ta)E!BY%%+qCzd9(vgbyje%5-^x8f`K5V8}x&}|6a8rR(jS#&)L*?)nHJDAObzgDpWu{ZxD$g*UQiW^M1 z%;QM3G!L3!47)bKvTk<+;=`3ImwFPWA1x`h5z1Q&P>+%qd~~S;0iI*6tOvm>8qd(B zcUYkewpY-@Ds0qhv0B{9s*sPt^joa+E{OVNuI3}%H)QyRXdr{!a-7`~11sk@#r_Sk zfA!jzxrc+A*sqJn4DpyI9&5rZ(LvLZRq&gTD&q$vD~*kB(QKFI;R{rDSeeTb6~2xt zG>K>d93RH)Emy!KHc4I{PAsZ(!;%cAYdy?XSr6YPG*2b3%KzUy2TKfyKRDs`Mz5t9rluBlw8Vh0O{nPlF_Xx?j)S~zw?c(A)(@BjHd10h*sV~p zlaA$N--PEtX&b4kg<3sqUx@)>+fWgrCV}n2K6`8vDy%+T*b0Pgswk+IqU3)7unR<- diff --git a/core/admin.py b/core/admin.py index f9fde42..8c38f3f 100644 --- a/core/admin.py +++ b/core/admin.py @@ -1,19 +1,3 @@ from django.contrib import admin -from .models import Category, Item, Outfit, DailySchedule -@admin.register(Category) -class CategoryAdmin(admin.ModelAdmin): - list_display = ('name',) - -@admin.register(Item) -class ItemAdmin(admin.ModelAdmin): - list_display = ('name', 'item_type', 'category') - list_filter = ('item_type', 'category') - -@admin.register(Outfit) -class OutfitAdmin(admin.ModelAdmin): - list_display = ('name', 'created_at') - -@admin.register(DailySchedule) -class DailyScheduleAdmin(admin.ModelAdmin): - list_display = ('date', 'outfit') \ No newline at end of file +# Register your models here. diff --git a/core/forms.py b/core/forms.py deleted file mode 100644 index 0fafa54..0000000 --- a/core/forms.py +++ /dev/null @@ -1,14 +0,0 @@ -from django import forms -from .models import Item, Category - -class ItemForm(forms.ModelForm): - class Meta: - model = Item - fields = ['name', 'category', 'image', 'item_type', 'tags'] - widgets = { - 'name': forms.TextInput(attrs={'class': 'form-control bg-dark text-white border-secondary', 'placeholder': 'Item Name'}), - 'category': forms.Select(attrs={'class': 'form-select bg-dark text-white border-secondary'}), - 'item_type': forms.Select(attrs={'class': 'form-select bg-dark text-white border-secondary'}), - 'tags': forms.TextInput(attrs={'class': 'form-control bg-dark text-white border-secondary', 'placeholder': 'Tags (comma-separated)'}), - 'image': forms.FileInput(attrs={'class': 'form-control bg-dark text-white border-secondary'}), - } diff --git a/core/migrations/0001_initial.py b/core/migrations/0001_initial.py deleted file mode 100644 index d388fda..0000000 --- a/core/migrations/0001_initial.py +++ /dev/null @@ -1,53 +0,0 @@ -# Generated by Django 5.2.7 on 2026-02-04 02:59 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Category', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=100)), - ], - options={ - 'verbose_name_plural': 'Categories', - }, - ), - migrations.CreateModel( - name='Item', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255)), - ('image', models.ImageField(blank=True, null=True, upload_to='items/')), - ('item_type', models.CharField(choices=[('wardrobe', 'Wardrobe'), ('accessory', 'Accessory')], default='wardrobe', max_length=20)), - ('created_at', models.DateTimeField(auto_now_add=True)), - ('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='core.category')), - ], - ), - migrations.CreateModel( - name='Outfit', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(blank=True, max_length=255)), - ('created_at', models.DateTimeField(auto_now_add=True)), - ('items', models.ManyToManyField(related_name='outfits', to='core.item')), - ], - ), - migrations.CreateModel( - name='DailySchedule', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date', models.DateField(unique=True)), - ('outfit', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='core.outfit')), - ], - ), - ] diff --git a/core/migrations/0002_folder_outfit_folder.py b/core/migrations/0002_folder_outfit_folder.py deleted file mode 100644 index 129aca0..0000000 --- a/core/migrations/0002_folder_outfit_folder.py +++ /dev/null @@ -1,27 +0,0 @@ -# Generated by Django 5.2.7 on 2026-02-04 03:08 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='Folder', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=100)), - ('created_at', models.DateTimeField(auto_now_add=True)), - ], - ), - migrations.AddField( - model_name='outfit', - name='folder', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='outfits', to='core.folder'), - ), - ] diff --git a/core/migrations/0003_dailyschedule_user_folder_user_item_tags_item_user_and_more.py b/core/migrations/0003_dailyschedule_user_folder_user_item_tags_item_user_and_more.py deleted file mode 100644 index 7a36fb6..0000000 --- a/core/migrations/0003_dailyschedule_user_folder_user_item_tags_item_user_and_more.py +++ /dev/null @@ -1,50 +0,0 @@ -# Generated by Django 5.2.7 on 2026-02-04 03:34 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0002_folder_outfit_folder'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.AddField( - model_name='dailyschedule', - name='user', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='schedules', to=settings.AUTH_USER_MODEL), - ), - migrations.AddField( - model_name='folder', - name='user', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='folders', to=settings.AUTH_USER_MODEL), - ), - migrations.AddField( - model_name='item', - name='tags', - field=models.CharField(blank=True, help_text='Comma-separated tags', max_length=255), - ), - migrations.AddField( - model_name='item', - name='user', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='items', to=settings.AUTH_USER_MODEL), - ), - migrations.AddField( - model_name='outfit', - name='user', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='outfits', to=settings.AUTH_USER_MODEL), - ), - migrations.AlterField( - model_name='dailyschedule', - name='date', - field=models.DateField(), - ), - migrations.AlterUniqueTogether( - name='dailyschedule', - unique_together={('user', 'date')}, - ), - ] diff --git a/core/migrations/__pycache__/0001_initial.cpython-311.pyc b/core/migrations/__pycache__/0001_initial.cpython-311.pyc deleted file mode 100644 index 3efe1ef3367cd8c242dec9b7c84ff893911812c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2750 zcmbtWO>omj6qaOJwj4XyiNVPEacEP(z}V@~38n3nf&7sIAth-DK2%k_8%IHwj3ft= z=^@kUp+|1y*i$;4`jF|N&5>gcJt#9eWcI{NPq~R9Cob(<$xa|)+EP~5)BZfY_r34! zKKZ9aBE~@L{OvpS*C@mMNe8VKZgyS_L+1&D7{qE!iG?Span(>MROL%N%W%vXgF@dk zh{vJD);r94h+%$#J7}daVyBpVc$W?*@*Ig()rzUus-as%s2T`sR=KI`Ka$PCi|b(H z34?vVB@VHrP=zV+9D~D)LhA*@p%BbO79oP5Ar>wkg&V>;4>;fs+B}CMzNXlkLD7b| z&VmlyEu9L7VyI1J8}ZkpIOH|)4qn@jdPT>4WPUy<5xQa zjm#0T-kPb(Svc69IKnJlnvDn@kFGluz$M$=z{4l7i(S4ZXiqPm;=YUhV zg9aX6%~$U`Fvp_yM(%a%z{!7!v(Jw+)xv~Mq4yf^AGTEC{{?&hTVVgd_t>%Tk!_ql z!v2|eV*l(L*bg0!pu(3rQ6A3UIU?R_ox5og9a3yuG0bJcsc4jN`lIvV0#e6Vbw^s%Yv8Ch;X~&KVY#b)||4PvtIxF!L;&Y~_)xVZCB6kj_`t zYC%ch$8B8Q{fn-J0YC+>2rA52#e9f_=QKsX z4^HcvM#OqeGZZA-1`(--Y%kX^)R*W(#YCnthe`Bqvj?-HQZ8f5q9Kb{TV1mo-0Y?) z`Vfhf7Yr42NCe?|rLNf~-RUIOBt%wh2r=MDHy+9gLL^#l(zuc+8zwHahI!sR3GbQ` zH6R+g3`Gvxm~gg{=lrt(Y(As!ftu}|TQJ_t&=r>@G320H#D+b}v9Etjb!6$-5r$(mbiLY+nB*$(k z`tr0vWzz+<)pTLhaPyn;GxGw_FfXqZ7mO+{*5~TFT`%HCxD43L;zPr{Z`G7CE>c2@ z2j8ONz`($Vax>yWZP}#X7+=sLX#EZaZFT>8*50u?=J9M=SiR{*88P=m%#HT$q`ID^ zjysuikC)ucxlMkn-zmwCZaNujJ7c*S%SqZhsf;7#*G{-neq+j!E^kYhUFouu{KN}~ z((PW1NuB=jTQ9^NZ}$?S7<Xd+lTP;h+G#g?exrYLdTZ9n&TMCA z-0X~#yt|X?c6tkI^KNg!`FPT~qdAwV9>Y9huW|6W&3#E9xjWo*U+(!5W>Qn!PO8Vr zU0hpoa~Geco!sblZq&_|BM#OW!l&A2^`~!$902NjD?n*S8r+r!U1`usUfM}XPS=ICLAUF| z#z&iIYyJ<_o%q_FsJIg~U}K3LqNH>WQ<^{mO&}>vBb*oEDXIuX1!9j1@5-4DVf71o znM19eoEL}`oU#I%D+K?&3az7NehO+t++X+4xqq~Sqi~H{@l6dw?`8C}plW<>j=_-r vg|g;Acp;W$J%M3QIZR*h+hNW+Z~A#cffYRFsCXQ6ll{->!rmKJeGGpCw{_M; diff --git a/core/migrations/__pycache__/0002_folder_outfit_folder.cpython-311.pyc b/core/migrations/__pycache__/0002_folder_outfit_folder.cpython-311.pyc deleted file mode 100644 index 88ac72053a7a7c566d82f5126266a6a2378c5eb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1466 zcmZuxy>Ht_6hD555-G`%Y$bxwHfj)~C_P9{lf^+$AdRJd9~3PeK*N_UniQ>1#N zoH$F3qC-b-&0nClu!f8oGj!-k0~~~#3Utaw!=5tr9Vsekn>*gS_ujpG@7?d-@z-Ke zL(nR(ezcxQ2>s24v}NYZ#U?PnAdIkJqmBTxXp2LsBMs$_EFcj*L|FO>VVOvSbPt+< zw^JBN>twL7gY?WBE^g~0(}q@`n!e>a9#e)cCbrj`+s0F2E?is}cx)2K?TA?D3mr*B zM1B_uiQtLRgi{y`n|y4erW!0y3;(t0 zOVi>+gnclQ7UvXW$z{BRuf$&R^JPE>@F@(6sXR~?+|q)(l5)6&%hTlvpn1ALbh`3y zO#5P|ge!pRRi-{l(FADao=XWUtgo-%GAzgPEz@R7+qE&FOtkQBn~7g;>M|>sW8XD; zl$bujEI*>w(4zDX0dxC!a(T0@eEx%(I= zoYsZ|S$*egfKe2&mWcEmt$hK5f_nR`-VW>Sp!6`x%9W)klU22I z1mu#FsD#uHdCU)H)jEWoE#Ex(BwW7v+v>~R*Wdo}By2qnTi=DPesK6hgiuTTMucf) zM?8<|WlX^__X*^ZlW1jWSvmfSce-2(1y?p{(&pVK=a@*jxT1rkYuAON7kjR1X|d^7ZE@V+lnDuNQB|C19fEUljN Lh0FJ>#yR{0$aju_ diff --git a/core/migrations/__pycache__/0003_dailyschedule_user_folder_user_item_tags_item_user_and_more.cpython-311.pyc b/core/migrations/__pycache__/0003_dailyschedule_user_folder_user_item_tags_item_user_and_more.cpython-311.pyc deleted file mode 100644 index 9e31bf491894d8a5c0a27d986a522adb18e73575..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2395 zcmcIl&2Jk;6rWwM*Sj01No+$^(a_LDZ4Ig&wH!d=%S{|mNK-@-B%G#`jc4MIu6N!2 zpb0`KLL4~u#(!Xfk^_GM;=mu^NIqC|<wsfwRoR6`V5F45kW+^s)S_p zF(S(Mh{S2U4)Vg*iXpTIU)V|sA}yh;`jk%>vl7!h>iadj;$>xKG-?&s^lOgoF}2|k zYI)`UIWdg%Cr4eG+eC#uC7DPvqOrOXZ3XRWM7Jc+4qw(?W-;D+g{{5w4XSM{%^XqbL!S#MEa7t4KgHfM?U4a zlVo`R!byw&1A%c)1S97_FnUhiV=t|HbP#o!q=fgzB2Ej4y=ZcJ+*8pq6Q;F%q?tDyW&?_oC|?+4>7SsID&8jVzRP31ZUkVT#oFfxtx)}u00AU_MHm#tJGc0 zW|)SBy%;kCW3V6m0CW=LM}cW^3>drodSDsvvDs{z8?a7jliGyZx@7|j&F0kZaM~!++D-bfr{owNIX2u*urB<;&rQ1v;b{&@Mm-cI?*#PUv(NZA8Z7+ zALQv4EeF2i<{vxmL$7I;X`ZJ_{`n=EhorfUPoxLt*%9TDpt=7sj}{h`;F&f7H@Y;} z+;;gzE;@c^dT&9#?hKxuiu7DpyZ(dG(XQ`mof{t=XoZee=*43hb!VZMMEYgE_FDJi zweHx(Zff$$wN7escj}kr-@f?$%T95nQ+&`VZuSuRN-D@O%*l)LF&`fASsKfSq6Zex zy@aA0hX}f3-t~;<;;)<~z8!oE!e-?KE_znJFGQ~i(QBNQUOP+lxDb7nTYhyn(|-3} z`#x@`)(=waoz(gnCWYtz1#vt0228pm&vX5EpV{5QJg}w z2dSw}YU&h-BH$3wiSGE#_T?Oeo5uyZW8U>XoJ^@Z^ZapdN7<9r*rl*ea%3YH{@im> zvA9{-#)kUqWyjtOYf>Ma5alaMFHFc=T&@uQHc-#B_rj|GzU9aR2}S diff --git a/core/migrations/__pycache__/__init__.cpython-311.pyc b/core/migrations/__pycache__/__init__.cpython-311.pyc index 21a48b2da96ce2ef813e60c78a1b0b869f9a1a57..9c833c8090679ee4c9ffd863c8f7abb0bb73a5db 100644 GIT binary patch delta 19 ZcmZ3%xPp;;IWI340}xbw%b& + - - - {% block title %}New Style{% endblock %} - - - - - - - - - - - - {% block extra_css %}{% endblock %} + + {% block title %}Knowledge Base{% endblock %} + {% if project_description %} + + + + {% endif %} + {% if project_image_url %} + + + {% endif %} + {% load static %} + + {% block head %}{% endblock %} + - - - - - {% block extra_js %}{% endblock %} + {% block content %}{% endblock %} + diff --git a/core/templates/core/index.html b/core/templates/core/index.html index 16a974c..faec813 100644 --- a/core/templates/core/index.html +++ b/core/templates/core/index.html @@ -1,146 +1,145 @@ {% extends "base.html" %} -{% load static %} -{% block title %}Weekly Planner - New Style{% endblock %} +{% block title %}{{ project_name }}{% endblock %} + +{% block head %} + + + + +{% endblock %} {% block content %} -
- -
- {% for day in weekly_days|slice:":3" %} -
-
- {% if day.schedule.outfit %} - -
{{ day.schedule.outfit.name }}
- {% else %} - NO FIT - {% endif %} -
- -
- {% endfor %} +
+
+

Analyzing your requirements and generating your app…

+
+ Loading…
- - -
- {% for day in weekly_days|slice:"3:5" %} -
-
- {% if day.schedule.outfit %} - -
{{ day.schedule.outfit.name }}
- {% else %} - NO FIT - {% endif %} -
- -
- {% endfor %} -
- - -
- {% for day in weekly_days|slice:"5:7" %} -
-
- {% if day.schedule.outfit %} - -
{{ day.schedule.outfit.name }}
- {% else %} - NO FIT - {% endif %} -
- -
- {% endfor %} -
-
- -
- -
-
- - {{ total_items }} ITEMS LOADED -
-
- - - - -
-
- - - -{% endblock %} - -{% block extra_js %} - -{% endblock %} +

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 diff --git a/core/templates/core/new_fit.html b/core/templates/core/new_fit.html deleted file mode 100644 index d1eb15e..0000000 --- a/core/templates/core/new_fit.html +++ /dev/null @@ -1,263 +0,0 @@ -{% extends "base.html" %} -{% load static %} - -{% block title %}New Fit - New Style{% endblock %} - -{% block extra_css %} - -{% endblock %} - -{% block content %} -
-
-
Outfit Preview
- -
- -
-
ALL
- {% for cat in categories %} -
{{ cat.name|upper }}
- {% endfor %} -
- -
- {% for item in items %} -
- {{ item.name }} -
-
- {% empty %} -
-

No items in your wardrobe yet.

- Add Items -
- {% endfor %} -
-
- -
- - -
- - - -{% endblock %} - -{% block extra_js %} - -{% endblock %} \ No newline at end of file diff --git a/core/templates/core/outfits.html b/core/templates/core/outfits.html deleted file mode 100644 index 36b7cfa..0000000 --- a/core/templates/core/outfits.html +++ /dev/null @@ -1,158 +0,0 @@ -{% extends "base.html" %} - -{% block title %}My Outfits - New Style{% endblock %} - -{% block extra_css %} - -{% endblock %} - -{% block content %} -
-

COLLECTIONS

- -
- -
- {% for folder in folders %} -
- - {{ folder.name }} - {{ folder.outfits.count }} OUTFITS -
- {% empty %} -
No folders created yet.
- {% endfor %} -
- -
- -

UNCATEGORIZED FITS

- -
- {% for outfit in outfits %} -
-
- {% if outfit.items.exists %} - {{ outfit.name }} - {% else %} - - {% endif %} -
-
-

{{ outfit.name|default:"UNTITLED" }}

-
- {{ outfit.items.count }} ITEMS -
-
-
- {% empty %} -
-

No outfits found.

- CREATE NEW FIT -
- {% endfor %} -
- - - -{% endblock %} \ No newline at end of file diff --git a/core/templates/core/wardrobe.html b/core/templates/core/wardrobe.html deleted file mode 100644 index e1d42e7..0000000 --- a/core/templates/core/wardrobe.html +++ /dev/null @@ -1,164 +0,0 @@ -{% extends "base.html" %} - -{% block title %}{{ title }} - New Style{% endblock %} - -{% block extra_css %} - -{% endblock %} - -{% block content %} -
-

{{ title|upper }}

- -
- -
- {% for item in items %} -
-
- {% if item.image %} - {{ item.name }} - {% else %} -
- -
- {% endif %} -
-
-
- {% csrf_token %} - -
-
-
-

{{ item.name }}

-
- {{ item.category.name|default:"General" }} - {% if item.tags %} -
- {% for tag in item.tags.split|slice:":2" %} - {{ tag }} - {% endfor %} -
- {% endif %} -
-
-
- {% empty %} -
- -

Your {{ title|lower }} is empty.

- -
- {% endfor %} -
- - - -{% endblock %} \ No newline at end of file diff --git a/core/templates/registration/login.html b/core/templates/registration/login.html deleted file mode 100644 index 3cff058..0000000 --- a/core/templates/registration/login.html +++ /dev/null @@ -1,29 +0,0 @@ -{% extends "base.html" %} - -{% block title %}Login - New Style{% endblock %} - -{% block content %} -
-

LOGIN

-
-
-
- {% csrf_token %} -
- - -
-
- - -
- -
-
-

Don't have an account?

- SIGN UP -
-
-
-
-{% endblock %} diff --git a/core/templates/registration/signup.html b/core/templates/registration/signup.html deleted file mode 100644 index 5d68847..0000000 --- a/core/templates/registration/signup.html +++ /dev/null @@ -1,41 +0,0 @@ -{% extends "base.html" %} - -{% block title %}Sign Up - New Style{% endblock %} - -{% block content %} -
-

SIGN UP

-
-
-
- {% csrf_token %} - {% for field in form %} -
- - {{ field }} - {% if field.help_text %} -
{{ field.help_text }}
- {% endif %} - {% for error in field.errors %} -
{{ error }}
- {% endfor %} -
- {% endfor %} - -
-
-

Already have an account?

- LOG IN -
-
-
-
- - -{% endblock %} diff --git a/core/urls.py b/core/urls.py index 7c2f6c9..6299e3d 100644 --- a/core/urls.py +++ b/core/urls.py @@ -1,21 +1,7 @@ -from django.urls import path, include -from django.contrib.auth import views as auth_views -from . import views +from django.urls import path + +from .views import home urlpatterns = [ - path('', views.home, name='home'), - path('new-fit/', views.new_fit, name='new_fit'), - path('outfits/', views.outfits, name='outfits'), - path('wardrobe/', views.wardrobe, name='wardrobe'), - path('accessories/', views.accessories, name='accessories'), - path('add-item/', views.add_item, name='add_item'), - path('delete-item//', views.delete_item, name='delete_item'), - path('save-outfit/', views.save_outfit, name='save_outfit'), - path('schedule-outfit/', views.schedule_outfit, name='schedule_outfit'), - path('create-folder/', views.create_folder, name='create_folder'), - - # Auth - path('accounts/login/', auth_views.LoginView.as_view(template_name='registration/login.html'), name='login'), - path('accounts/logout/', auth_views.LogoutView.as_view(next_page='login'), name='logout'), - path('accounts/signup/', views.signup, name='signup'), -] \ No newline at end of file + path("", home, name="home"), +] diff --git a/core/views.py b/core/views.py index 84ccefd..c9aed12 100644 --- a/core/views.py +++ b/core/views.py @@ -1,167 +1,25 @@ import os -from datetime import date, timedelta -from django.shortcuts import render, get_object_or_404, redirect -from django.contrib.auth.decorators import login_required -from django.contrib.auth.forms import UserCreationForm -from django.contrib.auth import login -from django.db.models import Q -from .models import Item, Outfit, DailySchedule, Category, Folder -from .forms import ItemForm +import platform -def signup(request): - if request.method == 'POST': - form = UserCreationForm(request.POST) - if form.is_valid(): - user = form.save() - login(request, user) - return redirect('home') - else: - form = UserCreationForm() - return render(request, 'registration/signup.html', {'form': form}) +from django import get_version as django_version +from django.shortcuts import render +from django.utils import timezone -def get_weekly_schedule(user): - today = date.today() - start_of_week = today - timedelta(days=today.weekday()) - days = [] - for i in range(7): - day_date = start_of_week + timedelta(days=i) - schedule, _ = DailySchedule.objects.get_or_create(user=user, date=day_date) - days.append({ - 'date': day_date, - 'day_name': day_date.strftime('%A'), - 'schedule': schedule - }) - return days -@login_required def home(request): - """Render the landing screen with the weekly planner grid.""" - weekly_days = get_weekly_schedule(request.user) - total_items = Item.objects.filter(user=request.user).count() - - month = date.today().month - if month in [12, 1, 2]: - season = "Winter" - elif month in [3, 4, 5]: - season = "Spring" - elif month in [6, 7, 8]: - season = "Summer" - else: - season = "Autumn" + """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 = { - "weekly_days": weekly_days, - "total_items": total_items, - "current_season": season, "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) - -@login_required -def new_fit(request): - """View to create a new outfit on a model.""" - items = Item.objects.filter(user=request.user) - categories = Category.objects.all() - context = { - "title": "New Fit", - "items": items, - "categories": categories, - "total_items": items.count(), - } - return render(request, "core/new_fit.html", context) - -@login_required -def outfits(request): - """View all saved outfits and folders.""" - outfits = Outfit.objects.filter(user=request.user, folder__isnull=True) - folders = Folder.objects.filter(user=request.user) - context = { - "outfits": outfits, - "folders": folders, - "title": "Outfits", - "total_items": Item.objects.filter(user=request.user).count(), - } - return render(request, "core/outfits.html", context) - -@login_required -def wardrobe(request): - """Render the wardrobe items.""" - items = Item.objects.filter(user=request.user, item_type='wardrobe') - categories = Category.objects.all() - form = ItemForm(initial={'item_type': 'wardrobe'}) - context = { - "items": items, - "categories": categories, - "title": "Wardrobe", - "total_items": Item.objects.filter(user=request.user).count(), - "form": form, - } - return render(request, "core/wardrobe.html", context) - -@login_required -def accessories(request): - """Render the accessories items.""" - items = Item.objects.filter(user=request.user, item_type='accessory') - categories = Category.objects.all() - form = ItemForm(initial={'item_type': 'accessory'}) - context = { - "items": items, - "categories": categories, - "title": "Accessories", - "total_items": Item.objects.filter(user=request.user).count(), - "form": form, - } - return render(request, "core/wardrobe.html", context) - -@login_required -def add_item(request): - """Handle item creation.""" - if request.method == 'POST': - form = ItemForm(request.POST, request.FILES) - if form.is_valid(): - item = form.save(commit=False) - item.user = request.user - item.save() - if item.item_type == 'accessory': - return redirect('accessories') - return redirect('wardrobe') - return redirect('wardrobe') - -@login_required -def delete_item(request, pk): - item = get_object_or_404(Item, pk=pk, user=request.user) - item.delete() - return redirect(request.META.get('HTTP_REFERER', 'wardrobe')) - -@login_required -def save_outfit(request): - if request.method == 'POST': - name = request.POST.get('name', 'Untitled Outfit') - item_ids = request.POST.getlist('items') - outfit = Outfit.objects.create(user=request.user, name=name) - if item_ids: - outfit.items.add(*item_ids) - return redirect('outfits') - return redirect('new_fit') - -@login_required -def schedule_outfit(request): - if request.method == 'POST': - day_date = request.POST.get('date') - outfit_id = request.POST.get('outfit_id') - schedule = get_object_or_404(DailySchedule, user=request.user, date=day_date) - if outfit_id: - outfit = get_object_or_404(Outfit, pk=outfit_id, user=request.user) - schedule.outfit = outfit - else: - schedule.outfit = None - schedule.save() - return redirect('home') - -@login_required -def create_folder(request): - if request.method == 'POST': - name = request.POST.get('name') - if name: - Folder.objects.create(user=request.user, name=name) - return redirect('outfits') \ No newline at end of file
-
-
- {% if user.is_authenticated %} - - - {{ user.username }} - - {% endif %} -
-
-
- {% if user.is_authenticated %} -
- {% csrf_token %} - -
- {% else %} - - - - {% endif %} -
-
- - {% if user.is_authenticated %} - - {% endif %} - - {% block content %}{% endblock %} -