From 2edf16fae379bdd81d5b36d400ab85d3e698a3f4 Mon Sep 17 00:00:00 2001 From: saranshkotnala <66181092+saranshkotnala@users.noreply.github.com> Date: Sat, 17 Oct 2020 13:53:53 +0530 Subject: [PATCH 1/2] django bidding app --- Django/Bidding app/auctions/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 150 bytes .../auctions/__pycache__/admin.cpython-38.pyc | Bin 0 -> 325 bytes .../auctions/__pycache__/forms.cpython-38.pyc | Bin 0 -> 594 bytes .../__pycache__/models.cpython-38.pyc | Bin 0 -> 1973 bytes .../auctions/__pycache__/urls.cpython-38.pyc | Bin 0 -> 757 bytes .../auctions/__pycache__/views.cpython-38.pyc | Bin 0 -> 5265 bytes Django/Bidding app/auctions/admin.py | 7 + Django/Bidding app/auctions/apps.py | 5 + Django/Bidding app/auctions/forms.py | 7 + .../auctions/migrations/0001_initial.py | 85 ++++++++ .../auctions/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-38.pyc | Bin 0 -> 3530 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 161 bytes Django/Bidding app/auctions/models.py | 43 +++++ .../auctions/static/auctions/styles.css | 3 + .../auctions/templates/auctions/category.html | 9 + .../auctions/templates/auctions/index.html | 34 ++++ .../auctions/templates/auctions/layout.html | 69 +++++++ .../auctions/templates/auctions/list.html | 17 ++ .../auctions/templates/auctions/listing.html | 79 ++++++++ .../auctions/templates/auctions/login.html | 24 +++ .../auctions/templates/auctions/register.html | 30 +++ .../templates/auctions/watchlist.html | 34 ++++ Django/Bidding app/auctions/tests.py | 3 + Django/Bidding app/auctions/urls.py | 18 ++ Django/Bidding app/auctions/views.py | 182 ++++++++++++++++++ Django/Bidding app/commerce/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 150 bytes .../__pycache__/settings.cpython-38.pyc | Bin 0 -> 2344 bytes .../commerce/__pycache__/urls.cpython-38.pyc | Bin 0 -> 977 bytes .../commerce/__pycache__/wsgi.cpython-38.pyc | Bin 0 -> 555 bytes Django/Bidding app/commerce/asgi.py | 16 ++ Django/Bidding app/commerce/settings.py | 122 ++++++++++++ Django/Bidding app/commerce/urls.py | 22 +++ Django/Bidding app/commerce/wsgi.py | 16 ++ Django/Bidding app/db.sqlite3 | Bin 0 -> 184320 bytes Django/Bidding app/hag.html | 0 Django/Bidding app/manage.py | 21 ++ 39 files changed, 846 insertions(+) create mode 100644 Django/Bidding app/auctions/__init__.py create mode 100644 Django/Bidding app/auctions/__pycache__/__init__.cpython-38.pyc create mode 100644 Django/Bidding app/auctions/__pycache__/admin.cpython-38.pyc create mode 100644 Django/Bidding app/auctions/__pycache__/forms.cpython-38.pyc create mode 100644 Django/Bidding app/auctions/__pycache__/models.cpython-38.pyc create mode 100644 Django/Bidding app/auctions/__pycache__/urls.cpython-38.pyc create mode 100644 Django/Bidding app/auctions/__pycache__/views.cpython-38.pyc create mode 100644 Django/Bidding app/auctions/admin.py create mode 100644 Django/Bidding app/auctions/apps.py create mode 100644 Django/Bidding app/auctions/forms.py create mode 100644 Django/Bidding app/auctions/migrations/0001_initial.py create mode 100644 Django/Bidding app/auctions/migrations/__init__.py create mode 100644 Django/Bidding app/auctions/migrations/__pycache__/0001_initial.cpython-38.pyc create mode 100644 Django/Bidding app/auctions/migrations/__pycache__/__init__.cpython-38.pyc create mode 100644 Django/Bidding app/auctions/models.py create mode 100644 Django/Bidding app/auctions/static/auctions/styles.css create mode 100644 Django/Bidding app/auctions/templates/auctions/category.html create mode 100644 Django/Bidding app/auctions/templates/auctions/index.html create mode 100644 Django/Bidding app/auctions/templates/auctions/layout.html create mode 100644 Django/Bidding app/auctions/templates/auctions/list.html create mode 100644 Django/Bidding app/auctions/templates/auctions/listing.html create mode 100644 Django/Bidding app/auctions/templates/auctions/login.html create mode 100644 Django/Bidding app/auctions/templates/auctions/register.html create mode 100644 Django/Bidding app/auctions/templates/auctions/watchlist.html create mode 100644 Django/Bidding app/auctions/tests.py create mode 100644 Django/Bidding app/auctions/urls.py create mode 100644 Django/Bidding app/auctions/views.py create mode 100644 Django/Bidding app/commerce/__init__.py create mode 100644 Django/Bidding app/commerce/__pycache__/__init__.cpython-38.pyc create mode 100644 Django/Bidding app/commerce/__pycache__/settings.cpython-38.pyc create mode 100644 Django/Bidding app/commerce/__pycache__/urls.cpython-38.pyc create mode 100644 Django/Bidding app/commerce/__pycache__/wsgi.cpython-38.pyc create mode 100644 Django/Bidding app/commerce/asgi.py create mode 100644 Django/Bidding app/commerce/settings.py create mode 100644 Django/Bidding app/commerce/urls.py create mode 100644 Django/Bidding app/commerce/wsgi.py create mode 100644 Django/Bidding app/db.sqlite3 create mode 100644 Django/Bidding app/hag.html create mode 100644 Django/Bidding app/manage.py diff --git a/Django/Bidding app/auctions/__init__.py b/Django/Bidding app/auctions/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Django/Bidding app/auctions/__pycache__/__init__.cpython-38.pyc b/Django/Bidding app/auctions/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..94cc34998961992a8b3a7843c2650b9ec010210b GIT binary patch literal 150 zcmWIL<>g`kf@eY=@gVv!h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6w-*(xTqIJKxa zrZ}-EF)zj?Ke;qFHLs*NCb`(uASO9KH#fB?IW;D+G`S=*Kd(3@K0Y%qvm`!Vub}c4 ThfQvNN@-529mvqnK+FIDBTggz literal 0 HcmV?d00001 diff --git a/Django/Bidding app/auctions/__pycache__/admin.cpython-38.pyc b/Django/Bidding app/auctions/__pycache__/admin.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..413328aae1d25c37fc41f3387a0c0f9b65f88738 GIT binary patch literal 325 zcmYjM!Ait15KWq-TcqpBpXg=rB8Z5H>p?-hNG~NIH3=n4lSrmL_&0j=C;X6HJuUu$ zCnv?j4$PbPCS=}ByIvm=jGz1V`3viJ7Kg!5Tw}r=f+m`d#L_7>~R`tXcE14*6(RnEUg|aOx6#H-B_KfZE()`2_BoO zJJ!424`HK%pQ3$<1^!5-3)+kjIf^JUl)25pP9{~+3^>ljPZINu3;dpMFJucQf`mTy vUfu>ZFD6pK*{M|7GAbkcSxq*0kjsLb*SAz%qT4*0tGp~!2sJ%nHLd9%TU}A| literal 0 HcmV?d00001 diff --git a/Django/Bidding app/auctions/__pycache__/forms.cpython-38.pyc b/Django/Bidding app/auctions/__pycache__/forms.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2159cbcbf14cf6fb4819bf931e7ae3001c73ffb8 GIT binary patch literal 594 zcma)3%}N6?5KcDP?cY{=_6-)Kco9TI3W{FZUbL5GAuKzwRQ5-cT~MzT-^Ew(QF8Uv zSMcP_Rqo1<80sYR*9;RFOb#ifb&~?wYb2z6x Jx4J?edf$1kf;9jD literal 0 HcmV?d00001 diff --git a/Django/Bidding app/auctions/__pycache__/models.cpython-38.pyc b/Django/Bidding app/auctions/__pycache__/models.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3cd8271ffd6ff7b0325e212afb6eb75dab6bc9f2 GIT binary patch literal 1973 zcma)7TW=dh6yCen_BwV$L!mr?xEl$p5>%83K~kroh{g{j5z@-iYO^zS*4axsv#T_y zZ}6I55FwSv`~`l>yz-R4kSD$~>ySW$)V1d9oXgD4`OY`TyS-k=!1LhGpQDLq7=Mv+ z{c)hIVaNi48O+R#+zd^V=2m9qc4+IlojIYyoY4K=U@r51GnmKCU+vI?-eNvFE1I-3p~OfdfS{DbCQn7I*} z%m^*y>@bsA%s#O~mpRDXRSu=9T2E40rNvB{M+Af5SzK`z6>-idLr?jUo<@=CL=iBl zGmd!>MbGLuqo61fHom0#TXAu`Qfz9nK9e0?3)g68r8^G}@c7A(ueE_mO- z{5D^iugu@n`kjVj;ajW+gqK7QM^J8gRB&--sdiaJ;1sX8=)-YNm;mxl9zTyz(OI>> z1J&Kj;^N@^J90XLiYVTJP)<>2nQA5bWtwogd1k5><4@x{s}d9b%ZKI!!5Bk+2=T(0 z8>hHbc$=rBSz6j!I;Y0(9*$~FF3eR>!b+KPtF+3v>M|}9kseYJlrO7TRD1CH3Ft8^ z#W9ZRNS-~tDy>+-=Ts|-aFL?uT{-|2$}oTFFE}<@_$I@*#Q+{b)fCGlG>1ByrQqqT z_>nioR;}^+_IQ2ck#cI{YJ0pN3(YR^0T!wD4u4)XI;E>OI%F^OM^)IuC8a&0vdO7Y|#^XZAD=*1P$(ibHAmg1h=Z)ECP%Eg)F3Kb2kSadK z@@qh7wi6nf0W^`6q;D>pf$8HH=-I&1{#PhW9c7IcJ%G5P@Jk2e)FkE&eH$u+zH^UL zqa#8Sxx0%CZa+*}=%Q*|h&$LS^e~U}YBCINf?tdfqr5mTYxJcd6n(?QXO~N9A5Cc+ z``noBR|tI{LlOlk(PdMR?f+AJ4DV~D*x}uIcOIaFnfiu$d`YM5=#=}+1&z_J#?(L1 zO~Q`uB;bQ+k{3kCa4D&UfPdkf3?RknWA*y4oK#{ZG(UQtd?m+tU}O`Sd+_ pbfuKLMSoiQ3>tR5?@h;0{x?l8|CY9uOArB3({j24XSuiR{tcKS(K7%5 literal 0 HcmV?d00001 diff --git a/Django/Bidding app/auctions/__pycache__/urls.cpython-38.pyc b/Django/Bidding app/auctions/__pycache__/urls.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6ce8684a3ee3cf78a0f6d4d634837a871789ba16 GIT binary patch literal 757 zcmZwFyKdVs6b4|*vTRv5U()mfbm{0N$x;+C452_fcPYFG0t{7$kQGQ`KuU3=cj$xU zMT$NH*G}0xb?P}bV`QiV{nAGY6nVr=7Ta@{Yo`)L+2|48MAvFp@}g8Nm)grE&stug`ZG!z;Bs9y?W$~f9c%Zgv46ME z+I&Ym_R~{*e3ZNvcRbdU()HQETqs4k`TCl4Uia+~| zb`CB5BFD)VLf&7lRV!C0oZ(a3m*rghaFaEKxaef1q5lUb8~7I{aD vRB5i>U!{iy%ABWJm$#*8R7w-QxV_izx)#t?Jf=UX-eLrUz>ci{o`3!UVgb_m literal 0 HcmV?d00001 diff --git a/Django/Bidding app/auctions/__pycache__/views.cpython-38.pyc b/Django/Bidding app/auctions/__pycache__/views.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4e129172f24c27d995cb46a21ba1ad8716255981 GIT binary patch literal 5265 zcma)ANpBp-74GV7dKM0;(MGKv$#UXx9Lh0b#7G<^u`IikM41>xcfPKmj$RWR@kXugv3%(@Zd)>3q3o?VQy}GL2_ultj^+!uf zH4DFuFYa%Cdd{-`LzVfTjmj_a$6&WPU=}Nego(NB*t+17z3{P@zYxsyv7Mk~}XjAipdx z%1g+flb7Xl$lJ0luOPo7uimvf&wq&%S{=tUxd1IWwjB?Qk1QMNjxf!4 z20GeSv3_z(sZ4cj(|B9!-4CODHyh-UIW=GVFp{x~dNj{h(LhEDrHYCkM=Fm{tlr6F zl-$l#`lX=NUE_X~N6J**i*p?hwvF>q)yeL#r(=lldJH*zvbLks#JF@?MaTR~v_H4Q%C3rXNWwVXRCktD z13jjaZS^7J-1raTL_>Nmy<4@Y&yPOA8*;To6{njds>!A8NE^Sqy9-Q^r`Zti407F7 z8hbI$e!Qy!4D9%X)}vvRYvU%g7Z{0U+*n7csr7~mpwbL=2F;&a>P2KO~uq18+QzqrH4>_lfcN=ykj#rx#k{jHn4$1fnIH zqG>l#Td~zk=vjc?MT3Wjq3@#r&|#_%ZMA`tkoGyi%_RpVTSF-bGU*;VV+Rmh53A~3 z?V!~;u!W^v?Md%I90)+@15&^zg96e)t!O#0OE9bJ#{J;^yY~ul2fN)o-^-Nj*xaCA z#%_4S`!jsmq6&N~X_V*P?P&kXJA=pFB$n-oTC}?Zc|B9@$qUyy72~Io-pQo;0lk!% zNja2MD5+Aykh$s_l?nc0`HNH{WQwGNlBw|~Hc9dqP|sJ9Sfb|CAmXMIAZ^&bur2$) zfvc{gZ$aRskhC-l{1gfrB0qp_XrXNh!I9`X_Bx-u<0t}Xw#|+xc6e+{^@3t}PqboA zvn+tGUO~RFKG`{)mDm3V3RA%U_Dz6un+xaxG1S3B$sIW(_n`yWp$zi??_bp5izAN| zWaK<^#@@&~@}F74x^E4xxt6Xxtf@Z<)N$I$+$t%DZ~YF|{aZ^1P$Z8Psj6$TRw@#Y zovKZJy+DzT)Qi$?oG@6X(aQ!8VwHA@3--@UY~;F%wqbseV!cs6#F_U`e^4r0-cE

6Wx)z8+%Y4rkE2052FX|2SHf;48 zMlT>wS~q3+KcF&2{;C!SFmuKPyiPn^aISW=+xPk~U$pF12p&cclWz(22HJZ>FOwgINc6C|85By_D#)!ukWT4nA!c%* zaHq#w`aZi{w{)tubl_%5+@F+=ms`lx`t`9tf@?)-sowyDE9s6akDf|zTp83xcE36H zsjQc=CV@v#2AHwJE1(5t?W=$46EN!vas0?11*7T+4F0LlPI=Pf9q(c1TqWmh!=n*e z>LikTw}Fsq;AwhZ;wjq3MQI>T^-^U<79gSBUGnVKuhLUph^yW z2Cb>?kqz@3E>jOVYefXDE>S{nRX30rA5It1l)6eS%hcjw2{e#RcWQ-+evjJiSQ{}6 z?Y%^Op9Zr7M=+KT6CFCeRI4|s`4|}ovaD1e$7B<;& z*Ew1$(EB;oge+LbGm*~>=`HjlD3Y=Wk06vZdmNc&zLV{3PLb%84)q0$R_{^5Z&(zV zqIV7P{^!pt5jEGAXbT$pcZUjVRR_*@#kKAG>_&VB~U? zT7~)irj!G>zYMbtO|x0aNw1BQM1z75pGUP* zDYTlU&tQ-$D^l`8vngaerpM|I+Q?0m0Zt2iH;X3&IGmPU6Fh2x@kni_s{0u#UxUcj z9+Y*avQT4YwE(d6xzC;|Y1zl&M^z#a89AHaGNg4t)*yESkPwqnc%Z%cc^CyJMRVY| z9E2_I@$n3kzdqA=Cao}dH0>Esn+yuSg53?- zddFitjEF;zLI%Ys7_oI616uwNPw8=5;v#6I0lx!}<6Ncyk47xWpJ-$%eC#|sxzfu@ zoNE(QaOCpYyy@AT;%xU2m@#NmrZavo$?`}R5duS2>{7jex2umRS!6Ne@r)z%eU)rE=_3Zt=l@XkosqfbRn4yANPW6>wg)sA)DZ<~7<8zL-pSjd$3@w-X^x z%-zac>xvj`F65@~AKRIF!t@qGG;oQgek;LUTV;c|mz&D%ZoY#!-BjPs(nv85k%`AJEo5r0u@8NzP4YDD9=LjaN zvpK8N*c$U{;ogX5JN3C>kwKpY3T($5HnwTvlv366G_fF3<6sH(GwT08i1hau_jf!w ztwjE<4e!>RBh&J7PUF@)SItS;?+&)JHC$)3inrG2qte`+m0|-^Eyu_$zG#?wS>M6; zBt@pecgAp~Y=&D_x;Mnv4ARZ%=%Gq-zW#=dav%lWxvJ41Kcx>$dBJ#W9xR$7Vk*XQ z*!>c%cAXNsZ1TN><6w?z*oCu`D5#W7mrX*^Y3FQ+t%>i~!5dh3m_#=OMzA%X0_D*S bhyI{HCs+wi1zvC=Xa=i6HCRUO1^)j4GeBJK literal 0 HcmV?d00001 diff --git a/Django/Bidding app/auctions/admin.py b/Django/Bidding app/auctions/admin.py new file mode 100644 index 0000000..86821a5 --- /dev/null +++ b/Django/Bidding app/auctions/admin.py @@ -0,0 +1,7 @@ +from django.contrib import admin +from .models import Listing, Bid, Comments +# Register your models here. + +admin.site.register(Listing) +admin.site.register(Bid) +admin.site.register(Comments) diff --git a/Django/Bidding app/auctions/apps.py b/Django/Bidding app/auctions/apps.py new file mode 100644 index 0000000..8ed8571 --- /dev/null +++ b/Django/Bidding app/auctions/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class AuctionsConfig(AppConfig): + name = 'auctions' diff --git a/Django/Bidding app/auctions/forms.py b/Django/Bidding app/auctions/forms.py new file mode 100644 index 0000000..10454cf --- /dev/null +++ b/Django/Bidding app/auctions/forms.py @@ -0,0 +1,7 @@ +from .models import Listing +from django.forms import ModelForm + +class ListingForm(ModelForm): + class Meta: + model = Listing + exclude = ['closed', 'date', 'user'] diff --git a/Django/Bidding app/auctions/migrations/0001_initial.py b/Django/Bidding app/auctions/migrations/0001_initial.py new file mode 100644 index 0000000..1c9a71e --- /dev/null +++ b/Django/Bidding app/auctions/migrations/0001_initial.py @@ -0,0 +1,85 @@ +# Generated by Django 3.0.8 on 2020-09-08 08:38 + +import datetime +from django.conf import settings +import django.contrib.auth.models +import django.contrib.auth.validators +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('auth', '0011_update_proxy_permissions'), + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('password', models.CharField(max_length=128, verbose_name='password')), + ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), + ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), + ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')), + ('first_name', models.CharField(blank=True, max_length=30, verbose_name='first name')), + ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')), + ('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')), + ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), + ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), + ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), + ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')), + ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')), + ], + options={ + 'verbose_name': 'user', + 'verbose_name_plural': 'users', + 'abstract': False, + }, + managers=[ + ('objects', django.contrib.auth.models.UserManager()), + ], + ), + migrations.CreateModel( + name='Listing', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=20)), + ('description', models.TextField()), + ('startbid', models.IntegerField()), + ('image_link', models.URLField(blank=True)), + ('category', models.CharField(blank=True, choices=[('Electronics', 'Electronics'), ('Fashion', 'Fashion'), ('Homedecor', 'Homedecor'), ('Automobiles', 'Automobiles'), ('Sports equipment', 'Sports equipment'), ('Music equipment', 'Music equipment'), ('Books', 'Books'), ('Miscallenous', 'Miscallenous')], max_length=63, null=True)), + ('closed', models.BooleanField(default=False)), + ('date', models.DateTimeField(default=datetime.datetime.now)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='owner', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='Comments', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('comment', models.TextField()), + ('d', models.DateTimeField(default=datetime.datetime.now)), + ('commenter', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='commenterr', to=settings.AUTH_USER_MODEL)), + ('rlist', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='currentcomment', to='auctions.Listing')), + ], + ), + migrations.CreateModel( + name='Bid', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('amount', models.IntegerField()), + ('bid', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bidamt', to='auctions.Listing')), + ('bidder', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bider', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.AddField( + model_name='user', + name='watchlist', + field=models.ManyToManyField(related_name='w', to='auctions.Listing'), + ), + ] diff --git a/Django/Bidding app/auctions/migrations/__init__.py b/Django/Bidding app/auctions/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Django/Bidding app/auctions/migrations/__pycache__/0001_initial.cpython-38.pyc b/Django/Bidding app/auctions/migrations/__pycache__/0001_initial.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7358f01b605104d7b5a51a1dd8cb2a962e730d43 GIT binary patch literal 3530 zcmZu!Npl;=6~+t(E5XIoMp28$mXipw1yMdvrlzOg>$mmWy0JAmSufysu=GU` zpD7gnu7Q(355Qf#vWgnCCf6NbY;_3^#SjSFym<=Re6vSi)Ezg zPX5jTxQkc*(=8NOq3uwi?UK_jlG}CK9xL_BR3s1Ds^s7)QJE_HUdN>>a5bt?mFoL0 z;0eHWL(`zi{UR_^+D33p(+s^~Ftdi|6rJV{ouRYjuttBfKh>XpIrCMa>(DHn+b@H2 z&d@n@p62O-;k=k*&eEkEa~YU7pzlrcbIe=7Xnk+fm0aID2IJ5V=!ZGxN5Isfb+&)1 zf10jR)7X9u*fWszF1<(BsYTc5hOuKI$KN#gAJb1PzB>u3pF-2EzZB_b`5r1S&wf?t zz-#pLee1Vhyw-2;LuQRWpbz&Q?DRIPygaA*=p)SL%T~e zkiv`wLy^AN3x-S#xRj=hye-LuayhLj_rXfjQw?yXK_nRHNlgp|AB18rc*^!v4WvAb z`IxE3b0&6D$$}&tFjXCfQtqaL4*rPBGld$y2x69Wv!0j)O4Z{~Wx!N?KxjUTTt$-4=xk$%<-GYnk%ddcsF(huXK>%6^SlOU8o;eck%Ph=B5>`}*b;41csalW4!yscXGHXm#YciWG zj}rcD#Kz4@q3N0xf3r zFlT)H9I-)|Qz3JwcesGpwe<&=K{2iygs&0JqL@8mHzBH-5b3qCnHn-xVuO&!2j6P; zNi+9DA^{UrRmUj{JDu_SCt|eQV{o(3zP5gf!bAt#=Sh~@;Dt2ci7$D^TH}V1kOxB5 zAQB$p&)Jy0R_0;oC4wB2zr*~@W-6lWTh5lhl}Hw|C{Goh$P7{O(~ge=gXyybluyCsv4J1kCdQ2ANf@{f`P z`PpUJ_wp3ySb_ort%p>xX7iplu5h*hoADa@Nr#NbL*bg-z?kM>G-RLV6iS$ zTZyxW5Hb~2YZBK*MwkfCXhA2de|%+Q$Rgh1(f`#@2ibX4Wv%hF(fs(RX^f4WlN_p~ zC8Lh4o>M2ALokd-B8*iv+>x11e^p6$`iPE1v+<09S$P97Q{Sx3QC>isv5yV-Bj$MHBGGQ z)DUUHBPl-A;#^f(3uO=OP~5g~?S497#G+J)k1S?l5nXYR?(i6OcgNtqp4k|t0u`%k zd^li9CO){1FrF1u80xhhTCV@$CCaz*xT*H9mUC{HJn!dW64z!u@YGh~1 z!I_cIaSGIrrb3lO49}~nXe0!9@|E#SI6`^i{?$4ROmPW5FNXtNPpYT`P{t4rGV>*f zEdj=-wi{+q&q#H4Vc4;eMO^IkWzM9lF<6yMN<3;_QPsepgFw}T0A!<>VcrOWXQMFI z=>w?36Q1E@QVn85mJmxK4$l?!t|yjFgIL!JgucG2nvUg~PB~RuMoYHS$rX5WlMk2$ z8;DiR!o)&l>W4`;)s91$`Hm=SuU^p7=C+VY5Wbb46Q3V8VO3w%tf~3oO`JlxH4o4%fU{6_>&e4>rc*%6RQ0t~FdTEA z;+)2{Kviw8OA}RDUfft-Tv-*k4;R$*;@0NM0IVd%ON? zLA=mA)Wg@GEPt@A?ULIP=U1}5l13wwN86FSwXkhcLqu%*Fg3Q1Z|U0$xP1h9bXvnb zQG&n*Uik+MRo5%J-+3j^aoy9-j5CYpsu}fc);a6UIdlJVXIux*H(q(>JNF;nyrrIU z>UgG{cks?S7ys>k>rL5}x`v(k{{T}z#LPPv{|mSV7*FFH?{CJEW`g`k0yZ&^co6*I zQ=C|om>1)cpIn-onpaXBlU!_S5R;sro10pcoEno@np~2ZpI01{o0(pe2w}#@XXa&= Z#K-FuRNmsS$<0qG%}KQbng1Dx831tgC&d5& literal 0 HcmV?d00001 diff --git a/Django/Bidding app/auctions/models.py b/Django/Bidding app/auctions/models.py new file mode 100644 index 0000000..84a89db --- /dev/null +++ b/Django/Bidding app/auctions/models.py @@ -0,0 +1,43 @@ + +from django.contrib.auth.models import AbstractUser +from django.db import models +import datetime + +category_choice =( +('Electronics', 'Electronics'), +('Fashion','Fashion'), +('Homedecor', 'Homedecor'), +('Automobiles', 'Automobiles'), +('Sports equipment', 'Sports equipment'), +('Music equipment', 'Music equipment'), +('Books', 'Books'), +('Miscallenous', 'Miscallenous') +) + +class User(AbstractUser, ): + watchlist = models.ManyToManyField('Listing', related_name="w") + + +class Listing(models.Model): + user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="owner") + title = models.CharField(max_length=20) + description = models.TextField() + startbid = models.IntegerField() + image_link = models.URLField( blank = True) + category = models.CharField(max_length=63, blank=True, null=True, choices=category_choice) + closed =models.BooleanField(default=False) + date = models.DateTimeField(default=datetime.datetime.now) + + def __str__(self): + return f"{self.id}:{self.title}{self.description}{self.startbid}{self.category}" + +class Bid(models.Model): + amount = models.IntegerField() + bidder = models.ForeignKey(User,on_delete=models.CASCADE, related_name="bider") + bid = models.ForeignKey(Listing, on_delete = models.CASCADE, related_name= "bidamt") + +class Comments(models.Model): + comment = models.TextField() + commenter = models.ForeignKey(User,on_delete=models.CASCADE, related_name="commenterr") + d = models.DateTimeField(default=datetime.datetime.now) + rlist = models.ForeignKey(Listing, on_delete = models.CASCADE, related_name="currentcomment") diff --git a/Django/Bidding app/auctions/static/auctions/styles.css b/Django/Bidding app/auctions/static/auctions/styles.css new file mode 100644 index 0000000..d61a8dd --- /dev/null +++ b/Django/Bidding app/auctions/static/auctions/styles.css @@ -0,0 +1,3 @@ +body { + padding: 10px; +} diff --git a/Django/Bidding app/auctions/templates/auctions/category.html b/Django/Bidding app/auctions/templates/auctions/category.html new file mode 100644 index 0000000..e68433d --- /dev/null +++ b/Django/Bidding app/auctions/templates/auctions/category.html @@ -0,0 +1,9 @@ +{% extends "auctions/layout.html" %} + +{% block body %} + +{% for i in clist %} + +{% endfor %} + +{% endblock %} diff --git a/Django/Bidding app/auctions/templates/auctions/index.html b/Django/Bidding app/auctions/templates/auctions/index.html new file mode 100644 index 0000000..6914ce7 --- /dev/null +++ b/Django/Bidding app/auctions/templates/auctions/index.html @@ -0,0 +1,34 @@ +{% extends "auctions/layout.html" %} + +{% block body %} +

Active Listings

+ + {% if present == 0 and user.is_authenticated %} +

No such listing

+ {% endif %} +
    + {% for i,a in List %} +
    + ... +
    +
    {{i.title}}
    +

      +
    • + {{i.description}} +
    • +
    • + CurrentPrice:{{a}} +
    • +

      + Created on {{i.date}} +

    + View Listing +
    +
    + {% endfor %} + +
+ + + TODO +{% endblock %} diff --git a/Django/Bidding app/auctions/templates/auctions/layout.html b/Django/Bidding app/auctions/templates/auctions/layout.html new file mode 100644 index 0000000..0ee8cfe --- /dev/null +++ b/Django/Bidding app/auctions/templates/auctions/layout.html @@ -0,0 +1,69 @@ +{% load static %} + + + + + {% block title %}Auctions{% endblock %} + + + + + + +
+ +

Auctions

+
+ {% if user.is_authenticated %} + Signed in as {{ user.username }}. + {% else %} + Not signed in. + {% endif %} +
+
+ +
+ {% block body %} + {% endblock %} + + diff --git a/Django/Bidding app/auctions/templates/auctions/list.html b/Django/Bidding app/auctions/templates/auctions/list.html new file mode 100644 index 0000000..0fe201d --- /dev/null +++ b/Django/Bidding app/auctions/templates/auctions/list.html @@ -0,0 +1,17 @@ +{% extends "auctions/layout.html" %} +{% block body %} +
+ {% if error %} + + {% endif %} +
+ +
+ {% csrf_token %} + {{form.as_p}} + +
+ +{% endblock %} diff --git a/Django/Bidding app/auctions/templates/auctions/listing.html b/Django/Bidding app/auctions/templates/auctions/listing.html new file mode 100644 index 0000000..ada4407 --- /dev/null +++ b/Django/Bidding app/auctions/templates/auctions/listing.html @@ -0,0 +1,79 @@ +{% extends "auctions/layout.html" %} + +{% block body %} +

{{listing.title}}

+ {% if wlist %} + + {% else %} + + {% endif %} +
+ {{listing.title}} +
+ created on {{listing.date}} +



+
+ {{listing.description}} +
+ {% if not listing.closed %} +
+ {% if amount == listing.startbid %} + Current bid:NO BID + {% else %} + Current bid: {{amount}} + {% endif %} +
+ Startbid: {{listing.startbid}} + +
+
+
+ {% csrf_token %} + + +
+
+
+

+ {% if listing in own %} + + {% endif %} +

+
+ {% csrf_token %} + < + +
+
+



+

Comments

+

+ {% for c in comments %} + +
+
{{c.commenter.username}}
+ {{c.d}} +
+

{{c.comment}}

+
+ {% endfor %} + {% else %} + {% if r %} +

Congratulations! You have won this auction

+ {% endif %} + +
+
+ {% for c in comments %} + +
+
{{c.commmenter.username}}
+ {{c.d}} +
+

{{c.comment}}

+
+ {% endfor %} + {% endif %} +{% endblock %} diff --git a/Django/Bidding app/auctions/templates/auctions/login.html b/Django/Bidding app/auctions/templates/auctions/login.html new file mode 100644 index 0000000..67624a4 --- /dev/null +++ b/Django/Bidding app/auctions/templates/auctions/login.html @@ -0,0 +1,24 @@ +{% extends "auctions/layout.html" %} + +{% block body %} + +

Login

+ + {% if message %} +
{{ message }}
+ {% endif %} + +
+ {% csrf_token %} +
+ +
+
+ +
+ +
+ + Don't have an account? Register here. + +{% endblock %} \ No newline at end of file diff --git a/Django/Bidding app/auctions/templates/auctions/register.html b/Django/Bidding app/auctions/templates/auctions/register.html new file mode 100644 index 0000000..47e956f --- /dev/null +++ b/Django/Bidding app/auctions/templates/auctions/register.html @@ -0,0 +1,30 @@ +{% extends "auctions/layout.html" %} + +{% block body %} + +

Register

+ + {% if message %} +
{{ message }}
+ {% endif %} + +
+ {% csrf_token %} +
+ +
+
+ +
+
+ +
+
+ +
+ +
+ + Already have an account? Log In here. + +{% endblock %} \ No newline at end of file diff --git a/Django/Bidding app/auctions/templates/auctions/watchlist.html b/Django/Bidding app/auctions/templates/auctions/watchlist.html new file mode 100644 index 0000000..2e9d48f --- /dev/null +++ b/Django/Bidding app/auctions/templates/auctions/watchlist.html @@ -0,0 +1,34 @@ +{% extends "auctions/layout.html" %} + +{% block body %} +

Watchlist

+ + {% if present == 0 and user.is_authenticated %} +

Watchlist is empty 😫

+ {% endif %} +
    + {% for i,a in List %} +
    + ... +
    +
    {{i.title}}
    +

      +
    • + {{i.description}} +
    • +
    • + CurrentPrice:{{a}} +
    • +

      + Created on {{i.date}} +

    + View Listing +
    +
    + {% endfor %} + +
+ + + TODO + {% endblock %} diff --git a/Django/Bidding app/auctions/tests.py b/Django/Bidding app/auctions/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/Django/Bidding app/auctions/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/Django/Bidding app/auctions/urls.py b/Django/Bidding app/auctions/urls.py new file mode 100644 index 0000000..f2bfd88 --- /dev/null +++ b/Django/Bidding app/auctions/urls.py @@ -0,0 +1,18 @@ +from django.urls import path + +from . import views + +urlpatterns = [ + path("", views.index, name="index"), + path("login", views.login_view, name="login"), + path("logout", views.logout_view, name="logout"), + path("register", views.register, name="register"), + path("createlist", views.createlist, name="createlist"), + path("listview/", views.listview, name="listview"), + path("watchlist//", views.watchlist, name="watchlist"), + path("show_watchlist", views.show_watchlist, name="show_watchlist"), + path("bid/", views.bid, name="bid"), + path("comment/", views.comment, name="comment"), + path("close/", views.close, name="close"), + path("category/", views.category, name="category") +] diff --git a/Django/Bidding app/auctions/views.py b/Django/Bidding app/auctions/views.py new file mode 100644 index 0000000..0494a4a --- /dev/null +++ b/Django/Bidding app/auctions/views.py @@ -0,0 +1,182 @@ +from django.contrib.auth import authenticate, login, logout +from django.db import IntegrityError +from django.http import HttpResponse, HttpResponseRedirect +from django.shortcuts import render +from django.urls import reverse +from django.forms import ModelForm +from .models import User, Listing, Bid, Comments +from .forms import ListingForm + + +def index(request): + if( User.objects.filter(username=request.user.username).exists()): + list = Listing.objects.all() + amt=[] + for item in list: + if(Bid.objects.filter(bid=item).exists()): + currentbid = Bid.objects.get(bid=item) + amt.append(currentbid.amount) + else: + amt.append(item.startbid) + List= zip(list,amt) + return render(request, "auctions/index.html", {'List':List}) + else: + return render(request, "auctions/index.html", {'present':0, 'amt':" "}) + + +def login_view(request): + if request.method == "POST": + + # Attempt to sign user in + username = request.POST["username"] + password = request.POST["password"] + user = authenticate(request, username=username, password=password) + + # Check if authentication successful + if user is not None: + login(request, user) + return HttpResponseRedirect(reverse("index")) + else: + return render(request, "auctions/login.html", { + "message": "Invalid username and/or password." + }) + else: + return render(request, "auctions/login.html") + + +def logout_view(request): + logout(request) + return HttpResponseRedirect(reverse("index")) + + +def register(request): + if request.method == "POST": + username = request.POST["username"] + email = request.POST["email"] + + # Ensure password matches confirmation + password = request.POST["password"] + confirmation = request.POST["confirmation"] + if password != confirmation: + return render(request, "auctions/register.html", { + "message": "Passwords must match." + }) + + # Attempt to create new user + try: + user = User.objects.create_user(username, email, password) + user.save() + except IntegrityError: + return render(request, "auctions/register.html", { + "message": "Username already taken." + }) + login(request, user) + return HttpResponseRedirect(reverse("index")) + else: + return render(request, "auctions/register.html") + + +def createlist(request): + if request.method == "GET": + form = ListingForm() + return render(request, "auctions/list.html", {'form':form, 'error':False}) + else: + l = Listing(user=User.objects.get(username=request.user.username)) + form = ListingForm(request.POST, instance=l) + if form.is_valid(): + form.save() + else: + form = ListingForm() + return render(request, "auctions/list.html", {'form':form, 'error':True}) + return index(request) + +def listview(request,item): + it = Listing.objects.get(id=item) + u = User.objects.get(username=request.user.username) + wl = User.objects.get(username=request.user.username).watchlist.all() + if(Bid.objects.filter(bid=it).exists()): + currentbid = Bid.objects.get(bid=it) + amt = currentbid.amount + if(u.id == currentbid.bidder.id): + result = True + else: + result = False + else: + amt = it.startbid + result = False + cmt = Comments.objects.filter(rlist=it) + + own = u.owner.all() + + + if it in wl: + return render(request, 'auctions/listing.html' ,{'listing':it, 'wlist':True, 'amount':amt, 'comments':cmt, 'own':own, 'r':result}) + else: + return render(request, 'auctions/listing.html' ,{'listing':it, 'wlist':False, 'amount':amt, 'comments':cmt, 'own':own, 'r':result}) + +def watchlist(request,list,remove): + if remove==0: + user = User.objects.get(username=request.user.username) + user.watchlist.add(Listing.objects.get(id=list)) + else: + user = User.objects.get(username=request.user.username) + user.watchlist.remove(Listing.objects.get(id=list)) + return show_watchlist(request) + +def show_watchlist(request): + user = User.objects.get(username=request.user.username) + list = user.watchlist.all() + amt=[] + for item in list: + if(Bid.objects.filter(bid=item).exists()): + currentbid = Bid.objects.get(bid=item) + amt.append(currentbid.amount) + else: + amt = item.startbid + if(len(list) == 0): + return render(request, "auctions/watchlist.html", {'present':0, 'amt':" "}) + else: + List= zip(list,amt) + return render(request, "auctions/watchlist.html", {'List':List}) +def bid(request, i): + userr = User.objects.get(username=request.user.username) + if (Bid.objects.filter(bid=Listing.objects.get(id=i)).exists()): + currentbid = Bid.objects.get(bid=Listing.objects.get(id=i)) + currentbid.amount = request.POST['quantity'] + currentbid.bidder = userr + currentbid.save() + return listview(request, i) + + else: + b = Bid(bid=Listing.objects.get(id=i),bidder=userr,amount=request.POST['quantity']) + b.save() + return listview(request, i) + +def comment(request,li): + c = Comments(rlist=Listing.objects.get(id=li), commenter=User.objects.get(username=request.user.username), comment=request.POST['name']) + c.save() + return listview(request,li) + +def close(request,list): + c = Listing.objects.get(id=list) + c.closed = True + c.save() + return listview(request,list) + +def category(request,cat): + if cat == " ": + return render(request, "auctions/category.html", {'clist':['Electronics','Fashion','Homedecor','Automobiles','Sports equipment','Music equipment','Books','Miscallenous']}) + else: + if(Listing.objects.filter(category=cat).exists()): + l = Listing.objects.filter(category=cat) + amt=[] + for item in l: + if(Bid.objects.filter(bid=item).exists()): + currentbid = Bid.objects.get(bid=item) + amt.append(currentbid.amount) + else: + amt.append(item.startbid) + List= zip(l,amt) + return render(request, "auctions/index.html", {'List':List}) + else: + return render(request, "auctions/index.html", {'present':0, 'amt':" "}) diff --git a/Django/Bidding app/commerce/__init__.py b/Django/Bidding app/commerce/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Django/Bidding app/commerce/__pycache__/__init__.cpython-38.pyc b/Django/Bidding app/commerce/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a45762b364646405e8e3ceaa22c5d42075cd9555 GIT binary patch literal 150 zcmWIL<>g`kf@eY=@gVv!h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6w-*(xTqIJKxa zrZ}-EF)zj?Ke;qFHLs*NCb`(uASO9KH#fB?ITgW(kI&4@EQycTE2zB1VUwGmQks)$ L2Qu_C5HkP(AKfG3 literal 0 HcmV?d00001 diff --git a/Django/Bidding app/commerce/__pycache__/settings.cpython-38.pyc b/Django/Bidding app/commerce/__pycache__/settings.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d55144b3132c2af69ccd4d0495b5af0f15fe3514 GIT binary patch literal 2344 zcmb7F+iu%N5T#^Vk`*g)?A(*KblY6i)Kn6uiIEm*7>Tik=wgUe+!6)|inEedkw}@l ztZjZv9-7DgO`rK%pg@11K#Cygkdkac4p5gAN6XncGqba2md#u)E8z9#@|L-^C{e+PqiC*&8xhW}<`L~JaHc~KWq(L+?9l=HOFlz4(%9>|d{2IW=ojd8;Ce)&4*DNhoVt#LKi;Jnk@m^Am;lLk zIUlkog#x%XlSeTo8DL5U;uO$ffxAO$v%)0f!pJ@E5~=O?`%<4WF1hXF6xVb*w4K9^*Begv z!Tq~?R{rKbTW@z)_jDs;`F6By7F-yuOtxKzd$c9TRSZ^UwLb3#*JqRwggBfZ4hah` z&rCAHSR7z>Vt^A?2NBn15gd2Ij_S{Xwej450`$qgGdLk!}i=KN%$An(N5L`0qbVnb($!C|*&rKV|xOCKn4!H=T!q?^rcz$Gn>Y&Msn7 zsA+I@RJyeLT&K<#_iGxQRVsV^*%mf;+QLPTI&oT7D<^<`kA5*~9+e!QHX#5ksSb ze!_E9=wN-u_^61V08HlcVwire6kn>fk|CDL4K2(l+uLS5O4qmba=oSnSC8to&pK4L zhC{4!yoF&JNZa!J{D{%eIxZjE>r+nFgDfh?<9sqqskO~=O%27GQdNW8q#NZXBc7MW zz7Do#7828FXfd|$dSK$&K_QMFLlhqMuFr`^2efZRZSrbl;d;T-(|W2>hYtKfg*YAF zJ;widTKuSMw#PXhJ9u_l2Q?oLdTO8aFi)H{pBZyay%=N)c*JA-6!KTYv}xk$Y?@)x zWuZ88L^ll0gfz)pDs+QFoMv8ZI{Kb=_<>D#d#3MYy1=)$NL+t6I3U zqivQW`%1Z}M7#;bo=cr@p`_?a6kH3>DNTLLY-(!5tkz3vCA<pHS9S5a!4O=VLxi)e{)%2m}g>PVXm;?45?joN5bxqq(~rXrng;L>yqU5wKEP4Fb- zQY`-YzW8J}q8Hm`mS;J;CD+DsJDly>?7Mrr6M7#HCZ9BUco=4W7`Wi~$y5AD3+w=e zxR{x{krwB~q?k%3rtWv*nW?u#@|~C!#aNR((!WoBOuiRCic4ZT(k*_#aT>=0>ctcC LZ*c{qjPBIG7iSo~ literal 0 HcmV?d00001 diff --git a/Django/Bidding app/commerce/__pycache__/urls.cpython-38.pyc b/Django/Bidding app/commerce/__pycache__/urls.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..87e9c266d91e97fb6bf475deb58f918c9447b4c0 GIT binary patch literal 977 zcma)5QLEE16i&PDZg!iB??T?X!fdaK2t`GiUhW0)LETFk^kz-Abu>v$QuW@~{TlyL zUj@Ox;DeZC9Tq{jftHiQ$#=f*JIP`)@qu1H?wx1%djNblo9^oC%}f1B^TQwo*uie; zP&aiQ6Zgs<^-_=a)4l^pAA7{zo$LmCSI2$g;gh|ycQ}g(uqp|X1WG~@AL_MLs**_@W1hvCp1j4o86w<2ODr7lcmJN0=5Ybeln2*LcSI>l2%g8*n{AwH>vzXWxal znn9N7o0Dbf?Ut<8s6??6`XYm7)KMVx`vJl;X-^i4G@jAbj5@Ra2E@n|ncuIc^JKY@ zM98H?0j+;_>6K~m*j<`VWfG#-kq^?w>NgizyAOh CTQ73} literal 0 HcmV?d00001 diff --git a/Django/Bidding app/commerce/__pycache__/wsgi.cpython-38.pyc b/Django/Bidding app/commerce/__pycache__/wsgi.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e68c70eb9e03db267fb0c3489585c2ebeb497609 GIT binary patch literal 555 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 @}vl!T1e1z9e`$*0ucmL01T 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 Date: Sat, 17 Oct 2020 14:03:01 +0530 Subject: [PATCH 2/2] Django web app biddiing --- .../__pycache__/__init__.cpython-38.pyc | Bin 150 -> 0 bytes .../auctions/__pycache__/admin.cpython-38.pyc | Bin 325 -> 0 bytes .../auctions/__pycache__/forms.cpython-38.pyc | Bin 594 -> 0 bytes .../__pycache__/models.cpython-38.pyc | Bin 1973 -> 0 bytes .../auctions/__pycache__/urls.cpython-38.pyc | Bin 757 -> 0 bytes .../auctions/__pycache__/views.cpython-38.pyc | Bin 5265 -> 0 bytes .../auctions/migrations/0001_initial.py | 85 ------------------ .../__pycache__/0001_initial.cpython-38.pyc | Bin 3530 -> 0 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 161 -> 0 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 150 -> 0 bytes .../__pycache__/settings.cpython-38.pyc | Bin 2344 -> 0 bytes .../commerce/__pycache__/urls.cpython-38.pyc | Bin 977 -> 0 bytes .../commerce/__pycache__/wsgi.cpython-38.pyc | Bin 555 -> 0 bytes Django/Bidding app/commerce/settings.py | 2 +- Django/Bidding app/hag.html | 0 15 files changed, 1 insertion(+), 86 deletions(-) delete mode 100644 Django/Bidding app/auctions/__pycache__/__init__.cpython-38.pyc delete mode 100644 Django/Bidding app/auctions/__pycache__/admin.cpython-38.pyc delete mode 100644 Django/Bidding app/auctions/__pycache__/forms.cpython-38.pyc delete mode 100644 Django/Bidding app/auctions/__pycache__/models.cpython-38.pyc delete mode 100644 Django/Bidding app/auctions/__pycache__/urls.cpython-38.pyc delete mode 100644 Django/Bidding app/auctions/__pycache__/views.cpython-38.pyc delete mode 100644 Django/Bidding app/auctions/migrations/0001_initial.py delete mode 100644 Django/Bidding app/auctions/migrations/__pycache__/0001_initial.cpython-38.pyc delete mode 100644 Django/Bidding app/auctions/migrations/__pycache__/__init__.cpython-38.pyc delete mode 100644 Django/Bidding app/commerce/__pycache__/__init__.cpython-38.pyc delete mode 100644 Django/Bidding app/commerce/__pycache__/settings.cpython-38.pyc delete mode 100644 Django/Bidding app/commerce/__pycache__/urls.cpython-38.pyc delete mode 100644 Django/Bidding app/commerce/__pycache__/wsgi.cpython-38.pyc delete mode 100644 Django/Bidding app/hag.html diff --git a/Django/Bidding app/auctions/__pycache__/__init__.cpython-38.pyc b/Django/Bidding app/auctions/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 94cc34998961992a8b3a7843c2650b9ec010210b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150 zcmWIL<>g`kf@eY=@gVv!h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6w-*(xTqIJKxa zrZ}-EF)zj?Ke;qFHLs*NCb`(uASO9KH#fB?IW;D+G`S=*Kd(3@K0Y%qvm`!Vub}c4 ThfQvNN@-529mvqnK+FIDBTggz diff --git a/Django/Bidding app/auctions/__pycache__/admin.cpython-38.pyc b/Django/Bidding app/auctions/__pycache__/admin.cpython-38.pyc deleted file mode 100644 index 413328aae1d25c37fc41f3387a0c0f9b65f88738..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 zcmYjM!Ait15KWq-TcqpBpXg=rB8Z5H>p?-hNG~NIH3=n4lSrmL_&0j=C;X6HJuUu$ zCnv?j4$PbPCS=}ByIvm=jGz1V`3viJ7Kg!5Tw}r=f+m`d#L_7>~R`tXcE14*6(RnEUg|aOx6#H-B_KfZE()`2_BoO zJJ!424`HK%pQ3$<1^!5-3)+kjIf^JUl)25pP9{~+3^>ljPZINu3;dpMFJucQf`mTy vUfu>ZFD6pK*{M|7GAbkcSxq*0kjsLb*SAz%qT4*0tGp~!2sJ%nHLd9%TU}A| diff --git a/Django/Bidding app/auctions/__pycache__/forms.cpython-38.pyc b/Django/Bidding app/auctions/__pycache__/forms.cpython-38.pyc deleted file mode 100644 index 2159cbcbf14cf6fb4819bf931e7ae3001c73ffb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594 zcma)3%}N6?5KcDP?cY{=_6-)Kco9TI3W{FZUbL5GAuKzwRQ5-cT~MzT-^Ew(QF8Uv zSMcP_Rqo1<80sYR*9;RFOb#ifb&~?wYb2z6x Jx4J?edf$1kf;9jD diff --git a/Django/Bidding app/auctions/__pycache__/models.cpython-38.pyc b/Django/Bidding app/auctions/__pycache__/models.cpython-38.pyc deleted file mode 100644 index 3cd8271ffd6ff7b0325e212afb6eb75dab6bc9f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1973 zcma)7TW=dh6yCen_BwV$L!mr?xEl$p5>%83K~kroh{g{j5z@-iYO^zS*4axsv#T_y zZ}6I55FwSv`~`l>yz-R4kSD$~>ySW$)V1d9oXgD4`OY`TyS-k=!1LhGpQDLq7=Mv+ z{c)hIVaNi48O+R#+zd^V=2m9qc4+IlojIYyoY4K=U@r51GnmKCU+vI?-eNvFE1I-3p~OfdfS{DbCQn7I*} z%m^*y>@bsA%s#O~mpRDXRSu=9T2E40rNvB{M+Af5SzK`z6>-idLr?jUo<@=CL=iBl zGmd!>MbGLuqo61fHom0#TXAu`Qfz9nK9e0?3)g68r8^G}@c7A(ueE_mO- z{5D^iugu@n`kjVj;ajW+gqK7QM^J8gRB&--sdiaJ;1sX8=)-YNm;mxl9zTyz(OI>> z1J&Kj;^N@^J90XLiYVTJP)<>2nQA5bWtwogd1k5><4@x{s}d9b%ZKI!!5Bk+2=T(0 z8>hHbc$=rBSz6j!I;Y0(9*$~FF3eR>!b+KPtF+3v>M|}9kseYJlrO7TRD1CH3Ft8^ z#W9ZRNS-~tDy>+-=Ts|-aFL?uT{-|2$}oTFFE}<@_$I@*#Q+{b)fCGlG>1ByrQqqT z_>nioR;}^+_IQ2ck#cI{YJ0pN3(YR^0T!wD4u4)XI;E>OI%F^OM^)IuC8a&0vdO7Y|#^XZAD=*1P$(ibHAmg1h=Z)ECP%Eg)F3Kb2kSadK z@@qh7wi6nf0W^`6q;D>pf$8HH=-I&1{#PhW9c7IcJ%G5P@Jk2e)FkE&eH$u+zH^UL zqa#8Sxx0%CZa+*}=%Q*|h&$LS^e~U}YBCINf?tdfqr5mTYxJcd6n(?QXO~N9A5Cc+ z``noBR|tI{LlOlk(PdMR?f+AJ4DV~D*x}uIcOIaFnfiu$d`YM5=#=}+1&z_J#?(L1 zO~Q`uB;bQ+k{3kCa4D&UfPdkf3?RknWA*y4oK#{ZG(UQtd?m+tU}O`Sd+_ pbfuKLMSoiQ3>tR5?@h;0{x?l8|CY9uOArB3({j24XSuiR{tcKS(K7%5 diff --git a/Django/Bidding app/auctions/__pycache__/urls.cpython-38.pyc b/Django/Bidding app/auctions/__pycache__/urls.cpython-38.pyc deleted file mode 100644 index 6ce8684a3ee3cf78a0f6d4d634837a871789ba16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 757 zcmZwFyKdVs6b4|*vTRv5U()mfbm{0N$x;+C452_fcPYFG0t{7$kQGQ`KuU3=cj$xU zMT$NH*G}0xb?P}bV`QiV{nAGY6nVr=7Ta@{Yo`)L+2|48MAvFp@}g8Nm)grE&stug`ZG!z;Bs9y?W$~f9c%Zgv46ME z+I&Ym_R~{*e3ZNvcRbdU()HQETqs4k`TCl4Uia+~| zb`CB5BFD)VLf&7lRV!C0oZ(a3m*rghaFaEKxaef1q5lUb8~7I{aD vRB5i>U!{iy%ABWJm$#*8R7w-QxV_izx)#t?Jf=UX-eLrUz>ci{o`3!UVgb_m diff --git a/Django/Bidding app/auctions/__pycache__/views.cpython-38.pyc b/Django/Bidding app/auctions/__pycache__/views.cpython-38.pyc deleted file mode 100644 index 4e129172f24c27d995cb46a21ba1ad8716255981..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5265 zcma)ANpBp-74GV7dKM0;(MGKv$#UXx9Lh0b#7G<^u`IikM41>xcfPKmj$RWR@kXugv3%(@Zd)>3q3o?VQy}GL2_ultj^+!uf zH4DFuFYa%Cdd{-`LzVfTjmj_a$6&WPU=}Nego(NB*t+17z3{P@zYxsyv7Mk~}XjAipdx z%1g+flb7Xl$lJ0luOPo7uimvf&wq&%S{=tUxd1IWwjB?Qk1QMNjxf!4 z20GeSv3_z(sZ4cj(|B9!-4CODHyh-UIW=GVFp{x~dNj{h(LhEDrHYCkM=Fm{tlr6F zl-$l#`lX=NUE_X~N6J**i*p?hwvF>q)yeL#r(=lldJH*zvbLks#JF@?MaTR~v_H4Q%C3rXNWwVXRCktD z13jjaZS^7J-1raTL_>Nmy<4@Y&yPOA8*;To6{njds>!A8NE^Sqy9-Q^r`Zti407F7 z8hbI$e!Qy!4D9%X)}vvRYvU%g7Z{0U+*n7csr7~mpwbL=2F;&a>P2KO~uq18+QzqrH4>_lfcN=ykj#rx#k{jHn4$1fnIH zqG>l#Td~zk=vjc?MT3Wjq3@#r&|#_%ZMA`tkoGyi%_RpVTSF-bGU*;VV+Rmh53A~3 z?V!~;u!W^v?Md%I90)+@15&^zg96e)t!O#0OE9bJ#{J;^yY~ul2fN)o-^-Nj*xaCA z#%_4S`!jsmq6&N~X_V*P?P&kXJA=pFB$n-oTC}?Zc|B9@$qUyy72~Io-pQo;0lk!% zNja2MD5+Aykh$s_l?nc0`HNH{WQwGNlBw|~Hc9dqP|sJ9Sfb|CAmXMIAZ^&bur2$) zfvc{gZ$aRskhC-l{1gfrB0qp_XrXNh!I9`X_Bx-u<0t}Xw#|+xc6e+{^@3t}PqboA zvn+tGUO~RFKG`{)mDm3V3RA%U_Dz6un+xaxG1S3B$sIW(_n`yWp$zi??_bp5izAN| zWaK<^#@@&~@}F74x^E4xxt6Xxtf@Z<)N$I$+$t%DZ~YF|{aZ^1P$Z8Psj6$TRw@#Y zovKZJy+DzT)Qi$?oG@6X(aQ!8VwHA@3--@UY~;F%wqbseV!cs6#F_U`e^4r0-cE

6Wx)z8+%Y4rkE2052FX|2SHf;48 zMlT>wS~q3+KcF&2{;C!SFmuKPyiPn^aISW=+xPk~U$pF12p&cclWz(22HJZ>FOwgINc6C|85By_D#)!ukWT4nA!c%* zaHq#w`aZi{w{)tubl_%5+@F+=ms`lx`t`9tf@?)-sowyDE9s6akDf|zTp83xcE36H zsjQc=CV@v#2AHwJE1(5t?W=$46EN!vas0?11*7T+4F0LlPI=Pf9q(c1TqWmh!=n*e z>LikTw}Fsq;AwhZ;wjq3MQI>T^-^U<79gSBUGnVKuhLUph^yW z2Cb>?kqz@3E>jOVYefXDE>S{nRX30rA5It1l)6eS%hcjw2{e#RcWQ-+evjJiSQ{}6 z?Y%^Op9Zr7M=+KT6CFCeRI4|s`4|}ovaD1e$7B<;& z*Ew1$(EB;oge+LbGm*~>=`HjlD3Y=Wk06vZdmNc&zLV{3PLb%84)q0$R_{^5Z&(zV zqIV7P{^!pt5jEGAXbT$pcZUjVRR_*@#kKAG>_&VB~U? zT7~)irj!G>zYMbtO|x0aNw1BQM1z75pGUP* zDYTlU&tQ-$D^l`8vngaerpM|I+Q?0m0Zt2iH;X3&IGmPU6Fh2x@kni_s{0u#UxUcj z9+Y*avQT4YwE(d6xzC;|Y1zl&M^z#a89AHaGNg4t)*yESkPwqnc%Z%cc^CyJMRVY| z9E2_I@$n3kzdqA=Cao}dH0>Esn+yuSg53?- zddFitjEF;zLI%Ys7_oI616uwNPw8=5;v#6I0lx!}<6Ncyk47xWpJ-$%eC#|sxzfu@ zoNE(QaOCpYyy@AT;%xU2m@#NmrZavo$?`}R5duS2>{7jex2umRS!6Ne@r)z%eU)rE=_3Zt=l@XkosqfbRn4yANPW6>wg)sA)DZ<~7<8zL-pSjd$3@w-X^x z%-zac>xvj`F65@~AKRIF!t@qGG;oQgek;LUTV;c|mz&D%ZoY#!-BjPs(nv85k%`AJEo5r0u@8NzP4YDD9=LjaN zvpK8N*c$U{;ogX5JN3C>kwKpY3T($5HnwTvlv366G_fF3<6sH(GwT08i1hau_jf!w ztwjE<4e!>RBh&J7PUF@)SItS;?+&)JHC$)3inrG2qte`+m0|-^Eyu_$zG#?wS>M6; zBt@pecgAp~Y=&D_x;Mnv4ARZ%=%Gq-zW#=dav%lWxvJ41Kcx>$dBJ#W9xR$7Vk*XQ z*!>c%cAXNsZ1TN><6w?z*oCu`D5#W7mrX*^Y3FQ+t%>i~!5dh3m_#=OMzA%X0_D*S bhyI{HCs+wi1zvC=Xa=i6HCRUO1^)j4GeBJK diff --git a/Django/Bidding app/auctions/migrations/0001_initial.py b/Django/Bidding app/auctions/migrations/0001_initial.py deleted file mode 100644 index 1c9a71e..0000000 --- a/Django/Bidding app/auctions/migrations/0001_initial.py +++ /dev/null @@ -1,85 +0,0 @@ -# Generated by Django 3.0.8 on 2020-09-08 08:38 - -import datetime -from django.conf import settings -import django.contrib.auth.models -import django.contrib.auth.validators -from django.db import migrations, models -import django.db.models.deletion -import django.utils.timezone - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('auth', '0011_update_proxy_permissions'), - ] - - operations = [ - migrations.CreateModel( - name='User', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('password', models.CharField(max_length=128, verbose_name='password')), - ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), - ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), - ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')), - ('first_name', models.CharField(blank=True, max_length=30, verbose_name='first name')), - ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')), - ('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')), - ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), - ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), - ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), - ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')), - ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')), - ], - options={ - 'verbose_name': 'user', - 'verbose_name_plural': 'users', - 'abstract': False, - }, - managers=[ - ('objects', django.contrib.auth.models.UserManager()), - ], - ), - migrations.CreateModel( - name='Listing', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('title', models.CharField(max_length=20)), - ('description', models.TextField()), - ('startbid', models.IntegerField()), - ('image_link', models.URLField(blank=True)), - ('category', models.CharField(blank=True, choices=[('Electronics', 'Electronics'), ('Fashion', 'Fashion'), ('Homedecor', 'Homedecor'), ('Automobiles', 'Automobiles'), ('Sports equipment', 'Sports equipment'), ('Music equipment', 'Music equipment'), ('Books', 'Books'), ('Miscallenous', 'Miscallenous')], max_length=63, null=True)), - ('closed', models.BooleanField(default=False)), - ('date', models.DateTimeField(default=datetime.datetime.now)), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='owner', to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.CreateModel( - name='Comments', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('comment', models.TextField()), - ('d', models.DateTimeField(default=datetime.datetime.now)), - ('commenter', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='commenterr', to=settings.AUTH_USER_MODEL)), - ('rlist', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='currentcomment', to='auctions.Listing')), - ], - ), - migrations.CreateModel( - name='Bid', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('amount', models.IntegerField()), - ('bid', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bidamt', to='auctions.Listing')), - ('bidder', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bider', to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.AddField( - model_name='user', - name='watchlist', - field=models.ManyToManyField(related_name='w', to='auctions.Listing'), - ), - ] diff --git a/Django/Bidding app/auctions/migrations/__pycache__/0001_initial.cpython-38.pyc b/Django/Bidding app/auctions/migrations/__pycache__/0001_initial.cpython-38.pyc deleted file mode 100644 index 7358f01b605104d7b5a51a1dd8cb2a962e730d43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3530 zcmZu!Npl;=6~+t(E5XIoMp28$mXipw1yMdvrlzOg>$mmWy0JAmSufysu=GU` zpD7gnu7Q(355Qf#vWgnCCf6NbY;_3^#SjSFym<=Re6vSi)Ezg zPX5jTxQkc*(=8NOq3uwi?UK_jlG}CK9xL_BR3s1Ds^s7)QJE_HUdN>>a5bt?mFoL0 z;0eHWL(`zi{UR_^+D33p(+s^~Ftdi|6rJV{ouRYjuttBfKh>XpIrCMa>(DHn+b@H2 z&d@n@p62O-;k=k*&eEkEa~YU7pzlrcbIe=7Xnk+fm0aID2IJ5V=!ZGxN5Isfb+&)1 zf10jR)7X9u*fWszF1<(BsYTc5hOuKI$KN#gAJb1PzB>u3pF-2EzZB_b`5r1S&wf?t zz-#pLee1Vhyw-2;LuQRWpbz&Q?DRIPygaA*=p)SL%T~e zkiv`wLy^AN3x-S#xRj=hye-LuayhLj_rXfjQw?yXK_nRHNlgp|AB18rc*^!v4WvAb z`IxE3b0&6D$$}&tFjXCfQtqaL4*rPBGld$y2x69Wv!0j)O4Z{~Wx!N?KxjUTTt$-4=xk$%<-GYnk%ddcsF(huXK>%6^SlOU8o;eck%Ph=B5>`}*b;41csalW4!yscXGHXm#YciWG zj}rcD#Kz4@q3N0xf3r zFlT)H9I-)|Qz3JwcesGpwe<&=K{2iygs&0JqL@8mHzBH-5b3qCnHn-xVuO&!2j6P; zNi+9DA^{UrRmUj{JDu_SCt|eQV{o(3zP5gf!bAt#=Sh~@;Dt2ci7$D^TH}V1kOxB5 zAQB$p&)Jy0R_0;oC4wB2zr*~@W-6lWTh5lhl}Hw|C{Goh$P7{O(~ge=gXyybluyCsv4J1kCdQ2ANf@{f`P z`PpUJ_wp3ySb_ort%p>xX7iplu5h*hoADa@Nr#NbL*bg-z?kM>G-RLV6iS$ zTZyxW5Hb~2YZBK*MwkfCXhA2de|%+Q$Rgh1(f`#@2ibX4Wv%hF(fs(RX^f4WlN_p~ zC8Lh4o>M2ALokd-B8*iv+>x11e^p6$`iPE1v+<09S$P97Q{Sx3QC>isv5yV-Bj$MHBGGQ z)DUUHBPl-A;#^f(3uO=OP~5g~?S497#G+J)k1S?l5nXYR?(i6OcgNtqp4k|t0u`%k zd^li9CO){1FrF1u80xhhTCV@$CCaz*xT*H9mUC{HJn!dW64z!u@YGh~1 z!I_cIaSGIrrb3lO49}~nXe0!9@|E#SI6`^i{?$4ROmPW5FNXtNPpYT`P{t4rGV>*f zEdj=-wi{+q&q#H4Vc4;eMO^IkWzM9lF<6yMN<3;_QPsepgFw}T0A!<>VcrOWXQMFI z=>w?36Q1E@QVn85mJmxK4$l?!t|yjFgIL!JgucG2nvUg~PB~RuMoYHS$rX5WlMk2$ z8;DiR!o)&l>W4`;)s91$`Hm=SuU^p7=C+VY5Wbb46Q3V8VO3w%tf~3oO`JlxH4o4%fU{6_>&e4>rc*%6RQ0t~FdTEA z;+)2{Kviw8OA}RDUfft-Tv-*k4;R$*;@0NM0IVd%ON? zLA=mA)Wg@GEPt@A?ULIP=U1}5l13wwN86FSwXkhcLqu%*Fg3Q1Z|U0$xP1h9bXvnb zQG&n*Uik+MRo5%J-+3j^aoy9-j5CYpsu}fc);a6UIdlJVXIux*H(q(>JNF;nyrrIU z>UgG{cks?S7ys>k>rL5}x`v(k{{T}z#LPPv{|mSV7*FFH?{CJEW`g`k0yZ&^co6*I zQ=C|om>1)cpIn-onpaXBlU!_S5R;sro10pcoEno@np~2ZpI01{o0(pe2w}#@XXa&= Z#K-FuRNmsS$<0qG%}KQbng1Dx831tgC&d5& diff --git a/Django/Bidding app/commerce/__pycache__/__init__.cpython-38.pyc b/Django/Bidding app/commerce/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index a45762b364646405e8e3ceaa22c5d42075cd9555..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150 zcmWIL<>g`kf@eY=@gVv!h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6w-*(xTqIJKxa zrZ}-EF)zj?Ke;qFHLs*NCb`(uASO9KH#fB?ITgW(kI&4@EQycTE2zB1VUwGmQks)$ L2Qu_C5HkP(AKfG3 diff --git a/Django/Bidding app/commerce/__pycache__/settings.cpython-38.pyc b/Django/Bidding app/commerce/__pycache__/settings.cpython-38.pyc deleted file mode 100644 index d55144b3132c2af69ccd4d0495b5af0f15fe3514..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2344 zcmb7F+iu%N5T#^Vk`*g)?A(*KblY6i)Kn6uiIEm*7>Tik=wgUe+!6)|inEedkw}@l ztZjZv9-7DgO`rK%pg@11K#Cygkdkac4p5gAN6XncGqba2md#u)E8z9#@|L-^C{e+PqiC*&8xhW}<`L~JaHc~KWq(L+?9l=HOFlz4(%9>|d{2IW=ojd8;Ce)&4*DNhoVt#LKi;Jnk@m^Am;lLk zIUlkog#x%XlSeTo8DL5U;uO$ffxAO$v%)0f!pJ@E5~=O?`%<4WF1hXF6xVb*w4K9^*Begv z!Tq~?R{rKbTW@z)_jDs;`F6By7F-yuOtxKzd$c9TRSZ^UwLb3#*JqRwggBfZ4hah` z&rCAHSR7z>Vt^A?2NBn15gd2Ij_S{Xwej450`$qgGdLk!}i=KN%$An(N5L`0qbVnb($!C|*&rKV|xOCKn4!H=T!q?^rcz$Gn>Y&Msn7 zsA+I@RJyeLT&K<#_iGxQRVsV^*%mf;+QLPTI&oT7D<^<`kA5*~9+e!QHX#5ksSb ze!_E9=wN-u_^61V08HlcVwire6kn>fk|CDL4K2(l+uLS5O4qmba=oSnSC8to&pK4L zhC{4!yoF&JNZa!J{D{%eIxZjE>r+nFgDfh?<9sqqskO~=O%27GQdNW8q#NZXBc7MW zz7Do#7828FXfd|$dSK$&K_QMFLlhqMuFr`^2efZRZSrbl;d;T-(|W2>hYtKfg*YAF zJ;widTKuSMw#PXhJ9u_l2Q?oLdTO8aFi)H{pBZyay%=N)c*JA-6!KTYv}xk$Y?@)x zWuZ88L^ll0gfz)pDs+QFoMv8ZI{Kb=_<>D#d#3MYy1=)$NL+t6I3U zqivQW`%1Z}M7#;bo=cr@p`_?a6kH3>DNTLLY-(!5tkz3vCA<pHS9S5a!4O=VLxi)e{)%2m}g>PVXm;?45?joN5bxqq(~rXrng;L>yqU5wKEP4Fb- zQY`-YzW8J}q8Hm`mS;J;CD+DsJDly>?7Mrr6M7#HCZ9BUco=4W7`Wi~$y5AD3+w=e zxR{x{krwB~q?k%3rtWv*nW?u#@|~C!#aNR((!WoBOuiRCic4ZT(k*_#aT>=0>ctcC LZ*c{qjPBIG7iSo~ diff --git a/Django/Bidding app/commerce/__pycache__/urls.cpython-38.pyc b/Django/Bidding app/commerce/__pycache__/urls.cpython-38.pyc deleted file mode 100644 index 87e9c266d91e97fb6bf475deb58f918c9447b4c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 977 zcma)5QLEE16i&PDZg!iB??T?X!fdaK2t`GiUhW0)LETFk^kz-Abu>v$QuW@~{TlyL zUj@Ox;DeZC9Tq{jftHiQ$#=f*JIP`)@qu1H?wx1%djNblo9^oC%}f1B^TQwo*uie; zP&aiQ6Zgs<^-_=a)4l^pAA7{zo$LmCSI2$g;gh|ycQ}g(uqp|X1WG~@AL_MLs**_@W1hvCp1j4o86w<2ODr7lcmJN0=5Ybeln2*LcSI>l2%g8*n{AwH>vzXWxal znn9N7o0Dbf?Ut<8s6??6`XYm7)KMVx`vJl;X-^i4G@jAbj5@Ra2E@n|ncuIc^JKY@ zM98H?0j+;_>6K~m*j<`VWfG#-kq^?w>NgizyAOh CTQ73} diff --git a/Django/Bidding app/commerce/__pycache__/wsgi.cpython-38.pyc b/Django/Bidding app/commerce/__pycache__/wsgi.cpython-38.pyc deleted file mode 100644 index e68c70eb9e03db267fb0c3489585c2ebeb497609..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 555 zcmYjPQHv8X5YDE(Yh6825ufu~(A|QFa2%r8vsSeC&?`b&*v8Fto03hIB<*?k>XZLM zAN@y?S3&SE_~dL$u>+aRWSIHBnauR$Bqk`oAH2=KMuhxooI`1&^AeBiqY`9BL?oz+ zW)a>kMXT1V6%mM5?Qch-EsnlZ^jcrY>{!qV=^fwvj6Y6>BUTu_kR@9fi)K}UEr8Y5 ztf25o9FIJM&$V&jm|p_hWpJhVCk2c<##v>=TEPAr(Ak4j^87U%S&Z6{c{BSaDsNJtriYf=-_%{d8%r zyh#Pr%3N2VeR}0enZ|!`9%S5$!ow1L-n``pG{U37yI14kMLs#dyc~^(ll;TQVEX?2 z=Kj9@#DVuxm#)_dojgYlc^;^7;ogo(QeXo~Q`b^N3LVfJX^jpsCJI>awesQi0pt&2 zo3Grezt3NvW>W{&WsX~}vw