From a2de8faaa296bd0b1a9c0fb1e3afb439e872b0a1 Mon Sep 17 00:00:00 2001 From: bot50 Date: Sun, 25 Oct 2020 18:09:41 +0000 Subject: [PATCH] Priyatham-sai-chand-web50/projects/2020/x/commerce@20201025T180941.090333020Z --- .vscode/settings.json | 4 + auctions/__init__.py | 0 auctions/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 141 bytes auctions/__pycache__/admin.cpython-37.pyc | Bin 0 -> 364 bytes auctions/__pycache__/models.cpython-37.pyc | Bin 0 -> 2391 bytes auctions/__pycache__/urls.cpython-37.pyc | Bin 0 -> 814 bytes auctions/__pycache__/views.cpython-37.pyc | Bin 0 -> 5715 bytes auctions/admin.py | 9 + auctions/apps.py | 5 + auctions/migrations/0001_initial.py | 82 +++++++ .../migrations/0002_auctionlisting_closed.py | 18 ++ auctions/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-37.pyc | Bin 0 -> 3549 bytes .../0002_auctionlisting_closed.cpython-37.pyc | Bin 0 -> 576 bytes ...e_auctionlisting_date_added.cpython-37.pyc | Bin 0 -> 527 bytes ...3_auctionlisting_date_added.cpython-37.pyc | Bin 0 -> 723 bytes .../__pycache__/0004_comment.cpython-37.pyc | Bin 0 -> 1007 bytes .../0005_auto_20201018_2304.cpython-37.pyc | Bin 0 -> 716 bytes .../0006_auto_20201019_1109.cpython-37.pyc | Bin 0 -> 947 bytes .../0007_auto_20201019_1723.cpython-37.pyc | Bin 0 -> 1288 bytes .../0008_auto_20201019_1725.cpython-37.pyc | Bin 0 -> 646 bytes .../0009_auto_20201019_1740.cpython-37.pyc | Bin 0 -> 773 bytes .../0010_auto_20201019_1744.cpython-37.pyc | Bin 0 -> 764 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 152 bytes auctions/models.py | 46 ++++ auctions/static/auctions/styles.css | 3 + auctions/templates/auctions/all_listings.html | 89 +++++++ auctions/templates/auctions/category.html | 88 +++++++ .../templates/auctions/category_listing.html | 19 ++ .../templates/auctions/create_listing.html | 34 +++ auctions/templates/auctions/index.html | 72 ++++++ auctions/templates/auctions/layout.html | 62 +++++ auctions/templates/auctions/listing.html | 97 ++++++++ auctions/templates/auctions/login.html | 24 ++ auctions/templates/auctions/register.html | 30 +++ auctions/templates/auctions/watchlist.html | 85 +++++++ auctions/tests.py | 3 + auctions/urls.py | 20 ++ auctions/views.py | 227 ++++++++++++++++++ commerce/__init__.py | 0 commerce/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 141 bytes commerce/__pycache__/settings.cpython-37.pyc | Bin 0 -> 2301 bytes commerce/__pycache__/urls.cpython-37.pyc | Bin 0 -> 966 bytes commerce/__pycache__/wsgi.cpython-37.pyc | Bin 0 -> 546 bytes commerce/asgi.py | 16 ++ commerce/settings.py | 122 ++++++++++ commerce/urls.py | 22 ++ commerce/wsgi.py | 16 ++ db.sqlite3 | Bin 0 -> 253952 bytes google | Bin 0 -> 15903 bytes google_9q82OQA | Bin 0 -> 15903 bytes image_google | Bin 0 -> 15903 bytes image_google_sTknGkm | Bin 0 -> 15903 bytes manage.py | 21 ++ 54 files changed, 1214 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 auctions/__init__.py create mode 100644 auctions/__pycache__/__init__.cpython-37.pyc create mode 100644 auctions/__pycache__/admin.cpython-37.pyc create mode 100644 auctions/__pycache__/models.cpython-37.pyc create mode 100644 auctions/__pycache__/urls.cpython-37.pyc create mode 100644 auctions/__pycache__/views.cpython-37.pyc create mode 100644 auctions/admin.py create mode 100644 auctions/apps.py create mode 100644 auctions/migrations/0001_initial.py create mode 100644 auctions/migrations/0002_auctionlisting_closed.py create mode 100644 auctions/migrations/__init__.py create mode 100644 auctions/migrations/__pycache__/0001_initial.cpython-37.pyc create mode 100644 auctions/migrations/__pycache__/0002_auctionlisting_closed.cpython-37.pyc create mode 100644 auctions/migrations/__pycache__/0002_remove_auctionlisting_date_added.cpython-37.pyc create mode 100644 auctions/migrations/__pycache__/0003_auctionlisting_date_added.cpython-37.pyc create mode 100644 auctions/migrations/__pycache__/0004_comment.cpython-37.pyc create mode 100644 auctions/migrations/__pycache__/0005_auto_20201018_2304.cpython-37.pyc create mode 100644 auctions/migrations/__pycache__/0006_auto_20201019_1109.cpython-37.pyc create mode 100644 auctions/migrations/__pycache__/0007_auto_20201019_1723.cpython-37.pyc create mode 100644 auctions/migrations/__pycache__/0008_auto_20201019_1725.cpython-37.pyc create mode 100644 auctions/migrations/__pycache__/0009_auto_20201019_1740.cpython-37.pyc create mode 100644 auctions/migrations/__pycache__/0010_auto_20201019_1744.cpython-37.pyc create mode 100644 auctions/migrations/__pycache__/__init__.cpython-37.pyc create mode 100644 auctions/models.py create mode 100644 auctions/static/auctions/styles.css create mode 100644 auctions/templates/auctions/all_listings.html create mode 100644 auctions/templates/auctions/category.html create mode 100644 auctions/templates/auctions/category_listing.html create mode 100644 auctions/templates/auctions/create_listing.html create mode 100644 auctions/templates/auctions/index.html create mode 100644 auctions/templates/auctions/layout.html create mode 100644 auctions/templates/auctions/listing.html create mode 100644 auctions/templates/auctions/login.html create mode 100644 auctions/templates/auctions/register.html create mode 100644 auctions/templates/auctions/watchlist.html create mode 100644 auctions/tests.py create mode 100644 auctions/urls.py create mode 100644 auctions/views.py create mode 100644 commerce/__init__.py create mode 100644 commerce/__pycache__/__init__.cpython-37.pyc create mode 100644 commerce/__pycache__/settings.cpython-37.pyc create mode 100644 commerce/__pycache__/urls.cpython-37.pyc create mode 100644 commerce/__pycache__/wsgi.cpython-37.pyc create mode 100644 commerce/asgi.py create mode 100644 commerce/settings.py create mode 100644 commerce/urls.py create mode 100644 commerce/wsgi.py create mode 100644 db.sqlite3 create mode 100644 google create mode 100644 google_9q82OQA create mode 100644 image_google create mode 100644 image_google_sTknGkm create mode 100644 manage.py diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..f514ed3 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "python.pythonPath": "C:\\ProgramData\\Anaconda3\\python.exe", + "python.dataScience.jupyterServerURI": "local" +} \ No newline at end of file diff --git a/auctions/__init__.py b/auctions/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/auctions/__pycache__/__init__.cpython-37.pyc b/auctions/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..73420462a6caf2a6cdc4cb93ea604b24391236c8 GIT binary patch literal 141 zcmZ?b<>g`kf_HcQ;z0Cc5CH>>K!yVl7qb9~6oz01O-8?!3`HPe1o6wv*(xTqIJKxa zCMhpDBQeG$zdSD|KQW~^COJPhH?=4^H72n%xg;|`uQ(TZl OX-=vg$h^-$%m4t$+am@5 literal 0 HcmV?d00001 diff --git a/auctions/__pycache__/admin.cpython-37.pyc b/auctions/__pycache__/admin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bdfb581390bba6a4e00d4de9bad9e736f6079be4 GIT binary patch literal 364 zcmYk0&q@O^5XO_upIvp^lP|HCUc8BjwjRZccnJaBZbD7jB$8|qAHr7%)hV=J%xv+I4UqU^G7=(KEifuh{zojkpy>I~dgy*|&` OV+~T{8XuFaHU0&p09&X4 literal 0 HcmV?d00001 diff --git a/auctions/__pycache__/models.cpython-37.pyc b/auctions/__pycache__/models.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d3d8c8d39ee88bbe9fdf4e1728046b3a8a88bd86 GIT binary patch literal 2391 zcmaJ@U2hvj6x~nn+Fsjf+D1@56a+08wT?g)5)rDJCJjimL82}Xt4OQ$&cxniy<=w9 zq>gxkzEfVzeIm} zhVd6omXCwMT{Ja3-9Op2TS>)0)J9L?gV;iMI=ak*8c~Ybze~_vo&Bw#AbsQJTB*Rqot^+S0#ZZvkO?k$` z=Gpmw7&3r~7B6mZZ|;*rYJZd`lX!ne9Os#cnc7dpbjoGI_v6Y_wO_sXV78D11~p|t z_@)Kfz!b5N3upcMjb;Bv#nK%;P>}ley2Vu!T{ZH3%Wh0&NRyo|$0><1TBn z0OOw4BfP8ws};;HA;ev*tYUnb^|aL$w!$twHNvZG6=A0O8+oM=tsCsD@paWN^|Gnr0fxrmPV0(@(VJObf( z!A~hWPATNe9V{KEg(|y@C)kojvn)=yO8)@``lfsXmM3>6MKM#G8ym;R#{-#)5s&A^ zVvvZz{AdH4#$0X8B$$*Gk)B4mD53)~&)Hy{9>4*Q@q>7t6@5#eSbE7sq_~E117`_r zIF4e*b`uj9(nEb4Z5vH}3h|?HXgo*GqBqf7=&ic9>)xq*_qp*a<)6KGVr{O!FmHnO zZjlxlFI@yC;ibd4N=k2*CdFLx(oc{fV<8u1i(y2ba0cHT#j}HRrppfeD7`2`GDi{R zsV1*so~&I=#X)Vd*I$!9%w&@Ug+5$aUKQ0LsB*2jJ&C2xGWkBt%GR!sJRRp>^D0wH zZ+q*}_SVk*(wS542Rjv9)s_$F`0KRKfBfx(N_T^FACj)KgLfLHQ(i56M7jVB%Xpk? zRoO@~p*WKt)1I@$u156En)#@vh9XM(mecB*D`wXW@YB-L78la@te!oxE9 zgQ^-Tnx{2Bv$c+DT$9_swSG6kHZ%d1UP|4n;D%k+1gtFtg9=Mt0Jv&^dMB@uqvT}R zA#F-Ek79)-((3ggDE%HL7ib2iS2Ux9)C2>?h+YTQnt}VQy%X=cTEDe^UG?qKqxy<+ zt8tP8Y{8j*bT0)?$BcqWAS^l3tDQb4NAEx6&{U8&=`4z#yhY+O5>yNIU1f8~pA;2p z&PcF@{DhVW)7PVS8>{PRiWumdtN8h5U`f)y8na!jyo_1(4MM5Z*l|M5XATOk#_O=b z>BHxv?2@KkqZQO>IrmbgP=x#t_XVQs*G{mMe9hz;%n)DQT-XXL#0IESo!dR>$1Cb5cgm>sM50N+M zv-sLx@(Mk5%sN$9YK{2g-+u&lc9&h;*1qfK2)K+R) z1SVkfNo}XLMW_W+YF|ykf!Q}3X^!N8Ysf>IfoI4^nuBjBKyo246e4*L8j6s7hz!L@ z0mOzDBP|UjNFf{^V{lYeO%P7VuJ26{kyh^@VI+KjNQ~jisj7MYnyl z_Tbzwx|511hc!TNb+{>Ns_cSu6{6&v$&NLZR1R+|)~Fdi+P+h+pcRIwP~NWS%B{{* zvr^EaqslK)t5z^7hqamCou121oFV19#6^0HCD{#wzTo*^`72X#pWd;K(+f2>=J4jv z*Zz?1cpOaBr}sjeHp4Tn(*gCz@@-0d@3GLYW G-}M{QvFIEC literal 0 HcmV?d00001 diff --git a/auctions/__pycache__/views.cpython-37.pyc b/auctions/__pycache__/views.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..13fd5fd94d5a9d2bfa096836852a921ebe797894 GIT binary patch literal 5715 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 literal 0 HcmV?d00001 diff --git a/auctions/admin.py b/auctions/admin.py new file mode 100644 index 0000000..796f3d3 --- /dev/null +++ b/auctions/admin.py @@ -0,0 +1,9 @@ +from django.contrib import admin +from .models import User +from .models import AuctionListing,Comment,Bids + +# Register your models here. +admin.site.register(User) +admin.site.register(AuctionListing) +admin.site.register(Comment) +admin.site.register(Bids) diff --git a/auctions/apps.py b/auctions/apps.py new file mode 100644 index 0000000..8ed8571 --- /dev/null +++ b/auctions/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class AuctionsConfig(AppConfig): + name = 'auctions' diff --git a/auctions/migrations/0001_initial.py b/auctions/migrations/0001_initial.py new file mode 100644 index 0000000..e063ad8 --- /dev/null +++ b/auctions/migrations/0001_initial.py @@ -0,0 +1,82 @@ +# Generated by Django 3.0.8 on 2020-10-19 17:27 + +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='AuctionListing', + fields=[ + ('title', models.CharField(max_length=64, primary_key=True, serialize=False)), + ('price', models.DecimalField(decimal_places=2, max_digits=10)), + ('desc', models.CharField(max_length=1000)), + ('picture', models.URLField(default='https://www.riobeauty.co.uk/images/product_image_not_found.gif')), + ('category', models.CharField(choices=[('Fashion', 'Fashion'), ('Electronics', 'Electronics'), ('Home', 'Home'), ('Sports', 'Sports'), ('Toys', 'Toys'), ('Automobile', 'Automobile'), ('Books', 'Books'), ('Videogames', 'Videogames'), ('Other', 'Other')], max_length=64)), + ('date_added', models.DateTimeField(auto_now_add=True)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='Comment', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('body', models.TextField()), + ('date_added', models.DateTimeField(auto_now_add=True)), + ('listing', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comments', to='auctions.AuctionListing')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='commited_user', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='Bids', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('bid_value', models.DecimalField(decimal_places=2, max_digits=10)), + ('listing', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bidding_listing', to='auctions.AuctionListing')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bidding_user', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.AddField( + model_name='user', + name='watchlist', + field=models.ManyToManyField(blank=True, related_name='watchlists', to='auctions.AuctionListing'), + ), + ] diff --git a/auctions/migrations/0002_auctionlisting_closed.py b/auctions/migrations/0002_auctionlisting_closed.py new file mode 100644 index 0000000..4d544ab --- /dev/null +++ b/auctions/migrations/0002_auctionlisting_closed.py @@ -0,0 +1,18 @@ +# Generated by Django 3.0.8 on 2020-10-21 11:57 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('auctions', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='auctionlisting', + name='closed', + field=models.BooleanField(default=False), + ), + ] diff --git a/auctions/migrations/__init__.py b/auctions/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/auctions/migrations/__pycache__/0001_initial.cpython-37.pyc b/auctions/migrations/__pycache__/0001_initial.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1fe3eb0271a3f32193cc3f841e0b20ecf115284d GIT binary patch literal 3549 zcmZ`+%X=HQ5$Ezvih4x0tUyU){@+oRkL00fF$VUf(DkB z$y2|tz3Q4%56-dwOOHL_+Dr8>^w6(A083d;UGfu%84P9y^P3q!cjo8oIeg;39|hOX z<#PWt#OzbVWF3F%DF(`s7w3jv+w;skALrWz`&+cXg}5{x##Q-O-CGN_V=Z;8rOIVyJZR0Xd_HL6nmC=YrL zblu7{X#S`G&H^}d*s(}U^q%D`+dXIKEcfUft&qnWgZaV2VDa_Rx4E82%XI#zjGY&( zoJSYw5?!`C-_JNJbS2|l1?N53`+)q6^C39K-ZlCtv-dsA@#y>XgN*Y-aO$wSJUBBr zOV_DseZK+jIq3SBKB1e`q8qeo{aDNRw=Dlh^kc{G%|q%Zu=MF)3-r_M43*a_-{!iA z8vX3Z#qH^VLM=REzAzMwCy<#j8uL3fTkoO=`01=^x*OYPXTyL6Af zqF>Q{dO#295k2l1jZf_EUqiyg{Hc|{3F;!exiqK@E)U*kR|Z#U*U0rMw0D%ZSnj_Q z%V(_e`UB%Vy{+*#Z)>FA((kBk&+#2w^m}W~uJuYM)(+lj?GMm;ItJgh^7a3<5}dM9 z%&hpp;*Zd1@C&iCb5x+{sL(65KO{n3FkO2%tARaKL@^wv{q~i$wOhA>@rc5d1tTe5 zO@a}VL#~u9mEyi)Qs+7C==@h(&7y8#mk1)sAWwR3B>6Culi)d<=o&+u$ltV>mg6z3G!Jrg$%bH_A`@VTyq(-z@q4Q2AjT`=`$1AM&&>#;MOp_iE3FdFe!x$hD@oj$CO+FTP~U5f{pP@U;~(i zR9VowTq5em`{S#SnAR=BH;iUME}v|-5Y;S1W^HPxR!o=JFy!&^f6VrIJNH8(2^VzL z;FN~l?)0-$7#;Q*!Yoa!U7VsYF<|>VNreM1q#;jy#Z%UrHmrsW2wj6pM2Np+Q}#}s zGw2mSj>+#ZKXsW3lzq3eYskJJ7N*<^60G^>LNQ&s;o6#w3eToG>xg%b9#p^8O^98XXni6<`9hH zu?%Bf4Ld3|>8~rIGXOdY&8BD_EO$AJNnv5+?(ga_OpxJH>4l9k(m^B-P*4C)mr|58 zJ6^}hVa?|LoI$5yLQz7qir6vk_uR30o}dve5Y9IYV|WopOyQM)#^fqZ7m2Be|EmB& z&#Kau5s%WbWYaJDX*yE3S62@Y4_lIp4nqtktw^-S&sU)j)whaXN^mZ)WRQq7=pv`6 z)#F|0GdZKH5s>K#Ie{mYoly0068WX`Y;N16s1ym0lw5bb;yp2Ba>Ehj-I0)~l6SJT zJuy*o(-HLzH0hz}@R-Rh$12?s;<=LBnZPqnO!QF9O73I=k4;_5yN;?veSu&pcksH+ zeiSw%ysO+5kch(o9JpQ+NnlHd$s2aJT*HsNg+W&~#c;?HWNAmxL|5VrsA}Z+YI;6& z5USSOSOUNMM$L6I7`=Ml>_Jzcz@(Ed-r-1!T8C4B&NgOx5mQ1I1T!Oz8NAfOnVO`ujqbz@x_#Zg4{deWqv(>&z(>t%x*Aw^5a@akKx`Z{%o{=QVjRXMTR~NL z!c$y?xzcu8$7Hy!ZQ=%S)A=o=#vUIsM>c?7 z%)-P`Wg3J@Pv}Y{l2r1JESnfzHrg)iBVnL?9}zO{Je&1=UEemH+9@cFQy!y3r!X)T z3DX6jsTUuH$z)HM(TU9&Eg(&;>Bg2T6}ME~fBL}9>N`R*T%h;y0?1QGS6vqs39#ST z-Q3vPmZswL;>P~oyMJDBCs!JC)5YuWzk{w0y-f0FjqcL}_?y>%^Hr;bf3mq!;*m@TKPH3Oo3 nE?csww`QPQ2j7I)%?@E-S3h@|{e?+cWqN1BtKz$4#=?IAO2b#L literal 0 HcmV?d00001 diff --git a/auctions/migrations/__pycache__/0002_auctionlisting_closed.cpython-37.pyc b/auctions/migrations/__pycache__/0002_auctionlisting_closed.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a78b3981084846b935cb8ef3096d71be34598ce1 GIT binary patch literal 576 zcmY*W%}OLO5KcNhJw3xH9`ptFu+Xr`tVa>iS<#bTWG_uah+XBFA)Sn!8N{=D9T0p9 zUny5lzJez!Jr1%JQq*6nzOORb+8Q#F$&Y9G!Wnyu&PGx)PU!ldq<{f8tl=eZk}~1! zf$COXMM;T2WWg9Qya<1IHBu*kwR8-U}XY) z%1eRitQVVOHtRzQy%mRSB`A|apGM?iaJlJCgL1X3*JDQG@%XpYRxh+NVf!m?v|ngD z4OwlRM>sEd=mXxWrCAh$U`A-tss=;a>E5kI16Rc$qZQE|O`J2RY!?bcH^;BFys~ze3Oe<1{pYay>#_CKjjiug zb><$daSD7@yQaam#%jZ}`rd3sj1T1hMCF?2{`|3x9~k%S;~(cDOH-cE>Ec&K8U`>^ gcIx)wrbFK0?ULWX*47@q5Bbr02gi|?k5qTWCo-;_p8x;= literal 0 HcmV?d00001 diff --git a/auctions/migrations/__pycache__/0002_remove_auctionlisting_date_added.cpython-37.pyc b/auctions/migrations/__pycache__/0002_remove_auctionlisting_date_added.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d727c804da521b4120691ff1b374f34d567c2a8a GIT binary patch literal 527 zcmY*Vu};G<5Veyuq@hLd3v5}c!iW$;fMB8nh$Tc=ZtfHuB~FP`5HpPMA^eh8CVqj5 zOWLU7qiaP%g_nfisw&}y8;*`?t695BVu#(4|vnvJ;xbF;H`lsz*XREoIRTwH@FBHK0xvn%W@~cKZg)>KQK;7GT3_foqpvtlp*b4t^ibkCHos zwMphWeU!;X^`eVPf=SY5U|tk4nhWp{P53@!ycx_?awTYnN{FDNR5SxW4Cc nhj;8Oa_tausk3SV^X|zVzj@rM+M`7q9It$zw0fqsH*)^~yswY$ literal 0 HcmV?d00001 diff --git a/auctions/migrations/__pycache__/0003_auctionlisting_date_added.cpython-37.pyc b/auctions/migrations/__pycache__/0003_auctionlisting_date_added.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fd96d766cb7d4761be4c9dff106b8f34257bb327 GIT binary patch literal 723 zcmZ`%y>8S%5Z<-dKA*Wm5mFjbQ@A;uK%zhhB@l&*Gz1}8mR1|jpSa2!B{(*|M_OdFPF=d5&f>e%aeeypI(_rkZ?-Ru808x-msSEybbbz zdp&5vT)buwg80TjAg`mZVID#7mSxc|%3)dH(ze=ks;`W;E^ZBAV=qhZn`lPDDLwm? z7_yuL%LCvWo`)!EssNa=tH&YwxnW&-Mb$qm5 zuOG_}Tk{F!-r7{Quk=QO>d6Lx;O_tHa_PZ$MfDbH=#A9o)`z{7GE{rZ2f?jhxm?9cmG z&x&^h&=%La{Gf_+bE_Mpz!s%xTkJ|KrX?1K3l_A_C;#8$YWunKKaD@BT@XvcSO^}_ z_kfR{EOzr9-W6Pr(~UFb$9v;A!)h9#JN9^e#RKx4bV4?lJm2l`g?Nk79<1*PFw;~R0&QMLJdg@h!!N8UaUwf$1@E!{s~@(l3wYN zyaOD06&_))oOlIJ%z6_lvC^()cER~r{f#6!o^qq(=v=-%GoZPj3e6OkPa|_ zrAEdA#*}TQW@ZIeW(RidTWKS3UKn6QIG>B2 zDg7*-mthqbxsXm)0H)$ir1G|_O~w&zaZLvr0Rtm2fz4T9p`A3q1Ph&{Nr;3A4m8*H zg$XV?-`wv8Ssq0_iur3sUW+^*TS+@{l1{P%ZRo(x+M>wre~~WkCS4tyH(+mV65<~0 zQy;gace*7_9k}5#(){lq92`968#j%G>XAcOArAo%WOG<#8RnHVW0)LE^VO(l%XYY| z3Lce6c_3ShGS0$s#XsOmdIHNhOyet*?N3Pl~dpDS&4Mnr28XQ*BOxF|86=dVd82a+(K7t(~8bn8B7oJj4#*>Er#m!>MZJ2;=b zH(^|CNm;>FJ;Fjn@6es%%g}m$v9C!*Xn!ndWWgvmJJi)zO|STbg)3D)I|W)7#v@tX4-0 pa`)e5U;iQfZIk5##am(BbfB$AbSK@X`W>DrrG-OBn{}CM{RO5&ExP~! literal 0 HcmV?d00001 diff --git a/auctions/migrations/__pycache__/0005_auto_20201018_2304.cpython-37.pyc b/auctions/migrations/__pycache__/0005_auto_20201018_2304.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3d2de5c6962cee008e6a0b80aeb38e467efb72ec GIT binary patch literal 716 zcmYLG&2G~`5Z)i#v6B>fh9~f)azl|2LRAYba3BS>$;DV&Ii79m)ZPtVhpG}cIFh&E z!Yl2S6R*IDStn6Pn$O>^XXode*L!#jHzNcfKr2$ylv2l8 z#cH1N+Dko3-Vxy7{UG2;zVN^E)Cd2H#KB*DM`CJ2BipuAa}zV$ugiIpx20Cb2DJuR znZkwbEJAXEZjKQoNhy$&0iDy7OK;%=bEVb{c>q3e*;|AV;5SYus||<8iL;C)(lW7FUS3r_;%MF}*s!6yuL) z=O1ieFXdMA-=ukhF&+H-^yXzY#o0|ZQ^if5o#{JO=^RYfNz)WE+ewx^tSv+Fo{N0d zYB5Si$zgK%LX4gzM+eLM#>d<}bhD2T^1$;bqXBcsX!rLb4(tFHxti;PLaXbhYdPB9 gz^og(o30Cg=yt=NVqP1*+Q@h81Ts#EA>HTy0rf`05C8xG literal 0 HcmV?d00001 diff --git a/auctions/migrations/__pycache__/0006_auto_20201019_1109.cpython-37.pyc b/auctions/migrations/__pycache__/0006_auto_20201019_1109.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..034785cf345065a0cd4d6488b191f187a7ece663 GIT binary patch literal 947 zcmY*YOK;Oa5cVsM?WFHVIC7y)q6nd;g_Z*?h!zf(C2Ql^I!f9^vBe+zsguF3zb9MVh06ipl4dH z2YPMNYemNps|Yjb}}8W+u2Zg>n()p~r(3v|$OBVFgxU z4c1{JabXj-W`;s0X3&CdEUqKnvqe={qC+NeRbbHZeg9cRCMApZ{5`+t_g+MM`~Fk8 zJcnedDAOX5?hPs9p|UE9idIyRoJy;f6G8dqZD(=uZokg(z7Fr2vN6a=aV^`NW~8K0 z2OA~pn%u!ga2JJaT%|Mv>BI<07@uOU<_Qr)Y$jht0NSm$8I4QMiZm8{tv<8fv7GYt z+ORLijF*CM%zc+^D)?q?cztA=vq73szEvMJju^WZe7mx4TVGP3?C~iw6Aui`-1txq zDd!zT-W}G#&3MStmL?j-syRLiyBE`N@p$3=1cx{u&mYXkLDcK{2fO1b zSAU6(TRcMHn6_o$Scv9YM=7 z$z#zsq?aWz56h&;g|xE*C=>4@6}KH-RNmk#{y{;tKnE=_K#%pnq*mGj159eCZB-HM zwE^vQ<9EPCzk^;6I^eI(&5R3O*ufbOXIjvMU3jv#<_7GcuLJvV08iHj+FzmV({8$x z+G#J{g+t8p_1eT4=Zl$V^hvtc%*7TwUmLL*?87&R_*>~-ZQ&tSC#<3d>EUoVd`ZHp zEXeWjcsLr4UXjsg_)6|&Q@T8bgT)i4Z#h|)B zO0qDf;%LDOzzU=`NnVs>UQ{^@;$(h<<=a5#VZ};mlRV5Q`jl+V6UsnZ zm7rX@%dm{@)J~-LNfi%=TNHzF1Lv~YD<*8sSeV~SpHmi=6q?LNSxD<`0zw)ITu9^R zN#BxwjXmO2#mUZsPOMrX`Sw$ZW?1e|wu?TAi zXoRa7S+Fpo0#Sv35J=*r6tcbLv4?8`2_+i`Zq_Ywg79fc`95ai2PmY!jZ+Nt4X(OR z+BGZUUH?Ejq}~f5(jx@vs~APyC*=1kWQsy%0bS4>XdWe0a8qUQ#th3`C~~>FPSUx3 ze_5NdcNONVn?lLP(K)MGxl(5%-7)q^}>>$CCXoGY?qZ+v_66S=)Ue^0J{ot$4vuUOE{#rs?1Cm2(U|9(3=o!%mNF`ebn zT{xW-%bXPj*-=j}D SKQw3eTAhxtQTSNjG5-hE+=TW3 literal 0 HcmV?d00001 diff --git a/auctions/migrations/__pycache__/0008_auto_20201019_1725.cpython-37.pyc b/auctions/migrations/__pycache__/0008_auto_20201019_1725.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e2bb23042e0bbec448e2c3a04c0a911c5679a38e GIT binary patch literal 646 zcmZWn&5qMB5VqsAO)D000PzM$kx-fzp@kJ%EkA+_tPp4~Q6wwPOtUFT9PC8Za^M2j zJ_ygjOCVo4@d}(6r(5lTu{@eT&(Al0adb3eL_fdoJo{C*h2)c|Z&p@QT$u z;kB1|oV{V-f%wiqAm4~@A`#$!WZ~!!#j?<|v$`yF)|IL;c3dmK%H+;Zc5o?HClh*qjiZDoQG2z$iXh9ok>Y? zeT5|7lJaw(RW8HQ~&#MmgYnMd}X9zAnyd6|KQ!QTO`-ADbiI?3Rnl43Bz%0ti?osjS$l z?AW%*B>@|pp9CCkEu0@t?0|bs#=RTllCiDBs>md33Q;TVRRVaaQsdgK5h^o0$_P$k z3rK8(m07XF-9^tl&b>t+Tb0f&gQ-p6_=)YNbs(gLN-bcw!XJwt>mx+;VA~M#JniEG({u5cP7L~CHGqN zb@09bE*@U8imQKsVZLs1F6BNlZ)V-)ewvFSv`fl2laKu#_je*(A3=B*7^i|2L&a z(cy9}%`f!uDAQ}-@m$xkakuuXv8w}EusRcmFmJPNGi{x>S#{cdys!PIUH#8YLCTbQ G;QR&HFwk27 literal 0 HcmV?d00001 diff --git a/auctions/migrations/__pycache__/0010_auto_20201019_1744.cpython-37.pyc b/auctions/migrations/__pycache__/0010_auto_20201019_1744.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..13a0c25803a952c81e9c3c77abc2c8d3d8e6c694 GIT binary patch literal 764 zcmZWnOK;RL5OyA$O|p+JCvI><+DnzKDxo5Twk;Gc6r=)&D3ayPm?YaIUhJ%3PaMj1 ze+YlcS5Ey4oERrr^?)sp=9~HKdHG^82??&~Zcl&Og#0n!uv}D@c+@i#K)@P+8(pMsN~a zKw=xL%!(cEt_S9E?yZO5!T>xNf)4?NFoJOwzyzjy8;{eYQ>8 z(DCCaiq0t8HiDi+C($BWoYBSe(@0NyN?E9;s59-Stl^oEJG?%;Vk*bXrH{EG9=$1f z+DK6ssgglwbKi-IOVd0gcsCm%8zo1*?~~XmIqpDsj=?LjDoQR*(MTU$2yv_Av?qKi zfQyV(T*;%J@S(}Mlru#4%g!`Rb5W#RVPn}3TJkz;^0|Y^w3gO*Tf40sd@Xnh*YiO8 zw6#;JLrRgiEjj9AO22JcX}AUf-|!lEofa4#e*n?pdD(DzWnPhvF$9-6>#z>RhWAtb zP2>~ww&L%{%NNOK#idGCb(*u}wfJ6_f`Lj>QDL7_o*YJ!Jba8K!h!rhoYUjYPMXi> z;Zdf=zT>&BW#ew`*K=0~ux528j$zei-DcW4AF}GSr+8ocFT46*nSzulbLRX5=&a0+ literal 0 HcmV?d00001 diff --git a/auctions/migrations/__pycache__/__init__.cpython-37.pyc b/auctions/migrations/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..72625fe45c12792a61abe00a3d3dfe8f1c30c2a4 GIT binary patch literal 152 zcmZ?b<>g`kg2z@p@n9N6zyKqV;Q++NEI=ZKA(%mv(QhR~5l9$8{Bm@*iU}=FEh>&l z%1h2jjB&{?&&$bAOeu~@&d<$FElN&}Ni0n+$;{6yj>*kTFG_?kAll Listings + {% if Listings %} + + {% else %} +
+
+
+
+

Seems to be no listings in this Auction!!

+
+ {% endif %} + +{% endblock %} \ No newline at end of file diff --git a/auctions/templates/auctions/category.html b/auctions/templates/auctions/category.html new file mode 100644 index 0000000..c8e873f --- /dev/null +++ b/auctions/templates/auctions/category.html @@ -0,0 +1,88 @@ +{% extends "auctions/layout.html"%} + +{% block body %} +

Listings under category "{{ cat_name }}"

+ {% if listings %} + + + {% else %} +
+
+
+
+

Seems to be no listings in this category

+
+ {% endif %} +{% endblock %} \ No newline at end of file diff --git a/auctions/templates/auctions/category_listing.html b/auctions/templates/auctions/category_listing.html new file mode 100644 index 0000000..7d9f73e --- /dev/null +++ b/auctions/templates/auctions/category_listing.html @@ -0,0 +1,19 @@ +{% extends "auctions/layout.html" %} + +{% block body %} +
+
+

Categories

+

Select category to browse through listings

+
+
+
+ + Select any one of the following + + {% for cat in categories %} + {{cat}} + {% endfor %} +
+ +{% endblock %} diff --git a/auctions/templates/auctions/create_listing.html b/auctions/templates/auctions/create_listing.html new file mode 100644 index 0000000..9001e5a --- /dev/null +++ b/auctions/templates/auctions/create_listing.html @@ -0,0 +1,34 @@ +{% extends "auctions/layout.html" %} + +{% block body %} + +

Create Listing

+ + +
+ {% csrf_token %} +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ + +{% endblock %} \ No newline at end of file diff --git a/auctions/templates/auctions/index.html b/auctions/templates/auctions/index.html new file mode 100644 index 0000000..92b019c --- /dev/null +++ b/auctions/templates/auctions/index.html @@ -0,0 +1,72 @@ +{% extends "auctions/layout.html" %} + +{% block body %} +

Active Listings

+ {% if Listings %} + + {% else %} +
+
+
+
+

Seems to be no listings in this Auction!!

+
+ {% endif %} + +{% endblock %} \ No newline at end of file diff --git a/auctions/templates/auctions/layout.html b/auctions/templates/auctions/layout.html new file mode 100644 index 0000000..b249f50 --- /dev/null +++ b/auctions/templates/auctions/layout.html @@ -0,0 +1,62 @@ +{% 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/auctions/templates/auctions/listing.html b/auctions/templates/auctions/listing.html new file mode 100644 index 0000000..4efb3b3 --- /dev/null +++ b/auctions/templates/auctions/listing.html @@ -0,0 +1,97 @@ + +{% extends "auctions/layout.html" %} + +{% block body %} +

Listing : {{ Listing.title}}

+ +
+ {% if user.username|stringformat:"s" == Listing.user|stringformat:"s" %} + + Close this Listing + {% endif %} +
+ {% csrf_token %} + {% if user not in Listing.watchlists.all %} + + {% else %} + + {% endif %} + +
+
+ + +
+ +

{{Listing.desc}}

+ + {% if Listing.closed %} +
+

This listing is CLOSED

+
+

This Listing is won by @{{bids.user}} for ${{bids.bid_value}}

+ {% else %} +

${{bids.bid_value}} by @{{bids.user}}

+ +
+ {% if user.is_authenticated and user != Listing.user %} +
+ {% csrf_token %} + {{ bid_form }} + +
+ +
+ {% elif user.is_authenticated and user == Listing.user%} +
You can't bid on your own Listing
+ {% else %} +
+ Log In to bid on this Listing + {% endif %} + {% endif %} +
+
+

Comments ...

+ + {% if not Listing.comments.all %} + No comments Yet.... +
+
+
+ + {% else %} + {% for comment in Listing.comments.all %} + {{comment.user}} - {{comment.date_added}} +
+ {{ comment.body }} +
+
+ {% endfor %} + + + {% endif %} + {% if not Listing.closed%} +
Add comment
+

+

+ {% csrf_token %} + +
+ +
+

+ {% elif not user.is_authenticated %} +
+
+ Log In to comment on this listing + + {% else %} +
+
+ The Listing is CLOSED for comments + {% endif %} + + + + +{% endblock %} \ No newline at end of file diff --git a/auctions/templates/auctions/login.html b/auctions/templates/auctions/login.html new file mode 100644 index 0000000..67624a4 --- /dev/null +++ b/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/auctions/templates/auctions/register.html b/auctions/templates/auctions/register.html new file mode 100644 index 0000000..47e956f --- /dev/null +++ b/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/auctions/templates/auctions/watchlist.html b/auctions/templates/auctions/watchlist.html new file mode 100644 index 0000000..18b77b2 --- /dev/null +++ b/auctions/templates/auctions/watchlist.html @@ -0,0 +1,85 @@ +{% extends "auctions/layout.html" %} + +{% block body %} +

WatchList

+ {% if Watchlistings %} + + {% else %} +

There seems to be no listing you are watching !! +

+ {% endif %} + +{% endblock %} \ No newline at end of file diff --git a/auctions/tests.py b/auctions/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/auctions/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/auctions/urls.py b/auctions/urls.py new file mode 100644 index 0000000..1df1157 --- /dev/null +++ b/auctions/urls.py @@ -0,0 +1,20 @@ +from django.urls import path + +from . import views + +urlpatterns = [ + path("", views.index, name="index"), + path("all",views.all_listings,name="all_listings"), + path("login", views.login_view, name="login"), + path("logout", views.logout_view, name="logout"), + path("register", views.register, name="register"), + path("watchlist", views.watchlist, name="watchlist"), + path("create", views.create, name="create"), + path("categories", views.category, name="categories"), + path("category/",views.category,name="individual_categories"), + path("listing/",views.listing,name="listing"), + path("category/listing/",views.listing,name="listing"), + path("watch/",views.watch,name="watch"), + path("bid/",views.bid,name="bid"), + path("close/",views.close_bid,name="close_bid"), +] diff --git a/auctions/views.py b/auctions/views.py new file mode 100644 index 0000000..817f0ac --- /dev/null +++ b/auctions/views.py @@ -0,0 +1,227 @@ +from django.contrib.auth import authenticate, login, logout +from django.db import IntegrityError +from django.http import HttpResponseRedirect +from django.shortcuts import render +from django.urls import reverse +from django import forms +from .models import User,AuctionListing,Comment,Bids + + +categories = ['Fashion','Electronics','Home','Sports','Toys','Automobile','Books','Videogames', 'Other'] + +class BidForm(forms.Form): + bid_value = 0.00 + + def __init__(self, bid_value,*args,**kwargs ): + super().__init__(*args,**kwargs) + self.bid_value = bid_value + 1 + self.fields['bid'].widget.attrs['min'] = self.bid_value + + bid = forms.DecimalField(decimal_places=2) + +def watch(request,title): + """ + Used to assign watchlist and unwatch for a user + + """ + if request.method =="POST": + listing_obj = AuctionListing.objects.get(title=title) + if request.user in listing_obj.watchlists.all(): + request.user.watchlist.remove(listing_obj) + else: + request.user.watchlist.add(listing_obj) + previous_url = request.POST.get('previous','/') + + return HttpResponseRedirect(previous_url) + +def watchlist(request): + """ + Used to display the page Watchlist + + """ + listings = request.user.watchlist.all() + + return render(request,"auctions/watchlist.html",{ + "Watchlistings": listings + }) + +def index(request): + """ + Used to Display the homepage + """ + listings = AuctionListing.objects.all() + + return render(request, "auctions/index.html",{ + "Listings":listings, + + }) +def all_listings(request): + """ + Used to display all the listings + """ + listings = AuctionListing.objects.all() + + return render(request,"auctions/all_listings.html",{ + "Listings":listings + }) + +def listing(request,title): + """ + Used to display the listing page and commenting + + """ + listing_obj = AuctionListing.objects.get(pk = title) + bids = Bids.objects.get(listing = listing_obj) + if request.method == "POST": + body = request.POST["comment_body"] + comment = Comment(user=request.user,listing=listing_obj,body = body) + comment.save() + + return render(request,"auctions/listing.html",{ + "Listing": listing_obj, + "bids" : bids, + "bid_form":BidForm(bids.bid_value) + }) + +def category(request,cat_name = None): + """ + Used to dispaly the category page + """ + if( cat_name != None): + if cat_name.capitalize() in categories: + + listings = AuctionListing.objects.filter(category=cat_name.capitalize()) + print(listings) + + return render(request, "auctions/category.html",{ + "listings":listings, + "cat_name": cat_name + + }) + + else: + return render(request,"auctions/category_listing.html",{ + "categories": categories + }) + +def login_view(request): + """ + Used to authenticate a user + + """ + 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): + """ + Used to log out a user + """ + logout(request) + return HttpResponseRedirect(reverse("index")) + + +def register(request): + """ + Used to register a user + """ + + 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 create(request): + """ + Used to create a Listing + """ + if request.method == "POST": + title = request.POST["title"] + desc = request.POST["desc"] + starting_bid = request.POST["starting_bid"] + photo_url = request.POST["photo"] + + # alternate photo to display + if photo_url == "": + photo_url = "https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/No_image_available_600_x_450.svg/1280px-No_image_available_600_x_450.svg.png" + category_value = request.POST["category"] + listing_obj = AuctionListing(title = title, desc = desc, user = request.user,price = starting_bid, picture = photo_url,category=category_value) + listing_obj.save() + bid_obj = Bids(bid_value = starting_bid, listing = listing_obj, user = request.user) + bid_obj.save() + return render(request,"auctions/index.html",{ + "Listings" : AuctionListing.objects.all() + }) + else: + return render(request,"auctions/create_listing.html",{ + "categories":categories + }) +def bid(request, title): + """ + Used to bid on a listing + """ + listing_value = AuctionListing.objects.get(title=title) + bid_obj = Bids.objects.get(listing = listing_value) + form = BidForm(bid_obj.bid_value,request.POST) + if form.is_valid(): + new_bid_value = form.cleaned_data["bid"] + bid_obj.bid_value = float("{0:.2f}".format(new_bid_value)) + bid_obj.user = request.user + bid_obj.save() + + return render(request,"auctions/listing.html",{ + "Listing": listing_value, + "bids" : bid_obj, + "bid_form":BidForm(bid_obj.bid_value) + }) +def close_bid(request,title): + """ + Used to end the listing and declare a winner + """ + listing_value = AuctionListing.objects.get(title=title) + listing_value.closed = True + listing_value.save() + + # get a hidden input to return back to same page + + previous_url = request.POST.get('previous','/') + return HttpResponseRedirect(previous_url) + + + + diff --git a/commerce/__init__.py b/commerce/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/commerce/__pycache__/__init__.cpython-37.pyc b/commerce/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..497af4142c453cfc1f5008abfe6665476efef008 GIT binary patch literal 141 zcmZ?b<>g`kf=_q+;z0Cc5CH>>K!yVl7qb9~6oz01O-8?!3`HPe1o6wv*(xTqIJKxa zCMhpDBQeG$zdSD|KQW~^COJPhH?=4^6~Ty)&&hr(-o*q=B-LQg;vQg%{LlH?%uTY7F5$kNATH1rIl^(+W_u9wi4VF@yjg&ZtH z9xn8hze{bv@B?heP67L>zhUfLL70=XZ%iJd+a;JE!6U zh(Vhs45=eBZhCxT`9Sm;x)CQ{x1`6?Q$)W(r$g5xB6ZOJ(B#y0MEvqT#fa1<-(dnI z-{*Y9UY1JWT1*H0$ z{Mod9!v0Szk96k({f#_GG=itkM{IkrVR?g|_nvP(vyMB*&Wrc=J6oss9(JA6?RVQw z|LK!Q$7b=~3ES%SH;y$uXZlvOZ5FJLcP3e`!#&!O;wlDL7PUU_2e%iL5rjCLpN7h~;~fpGxXPsGqF`&lX)x zf=hFFb*!616+aCUam{t4a{Tijrp)U~WtiK6jVN>hfz_i{W_oW}-c;=8aNAYRT;R@5Xl6=o*L22TKli|q5&XPKa zCk{-RFID0u(1@&j6-tMIp@Y$mO?6qoNCyYD*1s^8UUNOWEeWR&6%a;O1GqPFRmh z=4gafj*l?R0_mE*&CeJOomu(Vu}wMI3i7C&$i-BcQ5w6|h7t-5xvm6-X*Wu3Mm#Tz zeI4vAY$T@9$Ykuq^}xWpgF+lVhR8hXU7r(`4ykQMZE`TSaJ}Hwc|FysLx=vbMw}k+ z&+tE-7eDTr{Yj292d~fTpyA_1PpwZqED>kZXL`D=m4jRfuXt>qQt@V(H4MC+4I@ms zEEGm2@8e-m&q2nAS+m1pP0lc)OT{qs+>Wd&(Yc0sRVlX=&3LQ)6fRYio%U{6kZZN( zp;9sSnyRLTtJQ|8p$Zj91~tsrtCdPkIh0#UxYBAiHKX0Cm79$>;j*UG_iM7IsNuy! zb+;PX*Q#YX;!P+FTx!W_kv2KR8`USdF^0*OZBAuq=)-()Vj?()*;fctl zc>3pg`Q=eWFLu;%tiE|vaZeoEHGv&XnLQJx|7OzYG|YWJbiudDs|)Cg9pEISa_Ku+ qAuXhYOe#4W8DS=;l9{wHeosxcs~I61$?JlU&7`A|&!La;$ovb^HVQ!i literal 0 HcmV?d00001 diff --git a/commerce/__pycache__/urls.cpython-37.pyc b/commerce/__pycache__/urls.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bb63353ba8b4839a226ad7f826884d4fed627125 GIT binary patch literal 966 zcma)5!H&}~5OvaIThcA?14zELkxBx~tpWrTR;+~f0PLlz=(@4nq>AleJ1o1`eht4A zapT05BPYggDk>zTwG?YI8ozn(js0pch!Ct_-_Jii=pgjN{_Ix>!3+4b-6)zN>QTS+ zxIgnf8+XbM4`u-mXQ78!NCW0?jyBz`4{^u>dbIVn{@S1QX!iq(d*ri^P$oHNDr5NK z{X0CBVpXhbMNA<@6n)GYzN}SQ5o4GV`VyCgHdx8pFl`TLY$X0tuq&P5Q>ieQis3@6 zq~Z<&S0y8wVa?bi!mx5pNq|VoMEWFolp0wTnNDqS3hi|o zz4=NwVChM8T8qrG+qHF|j}!coQcMIccqNsYV7yY2V}89LRn;aB>QCBwCm94BD1@UR zHXjX#<5pKLIU8d^ID0m<@i302CDHof5`@tM)c>)NCTGeLNt{u8I&T5XvA-o7Tb~fU zupp!OA4X>)D{ESaHJIS~S!o#zbMMcYGX?_{7>})GqZqGRDB_;d_#8?bw-e zYqrZ$u2V2@-)U$Q4tE&G(NDO$DE69=P+o}GZ@O(=6IknSj$A%%(9M9^hq4cb)q1g?|ErimvPK-gC76N7hn+&(%%Mnpt{ zs%RA9-B7e_j2aPvXx{v>C7NREC&jGsjf}Ph9g@!W-9!9k*z2?0=&3B&)L0D55^N5v zvStpsPvW@m8QfIHfn$CKY~8_?;#Ue7cZ{>rh-(FV3KpQ)f?K&NXcVwep_OH*Al0Y&-l1&mRcDu+<3$PKd3p9>Nd2G*IRzuMi^JSCT-Il`kX!j DL@KPg literal 0 HcmV?d00001 diff --git a/commerce/asgi.py b/commerce/asgi.py new file mode 100644 index 0000000..5594f23 --- /dev/null +++ b/commerce/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for commerce project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/3.0/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'commerce.settings') + +application = get_asgi_application() diff --git a/commerce/settings.py b/commerce/settings.py new file mode 100644 index 0000000..016409a --- /dev/null +++ b/commerce/settings.py @@ -0,0 +1,122 @@ +""" +Django settings for commerce project. + +Generated by 'django-admin startproject' using Django 3.0.2. + +For more information on this file, see +https://docs.djangoproject.com/en/3.0/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/3.0/ref/settings/ +""" + +import os + +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = '6ps8j!crjgrxt34cqbqn7x&b3y%(fny8k8nh21+qa)%ws3fh!q' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'auctions', + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'commerce.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'commerce.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/3.0/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), + } +} + +AUTH_USER_MODEL = 'auctions.User' + +# Password validation +# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/3.0/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/3.0/howto/static-files/ + +STATIC_URL = '/static/' diff --git a/commerce/urls.py b/commerce/urls.py new file mode 100644 index 0000000..2f7a9e0 --- /dev/null +++ b/commerce/urls.py @@ -0,0 +1,22 @@ +"""commerce URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/3.0/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import include, path + +urlpatterns = [ + path("admin/", admin.site.urls), + path("", include("auctions.urls")) +] \ No newline at end of file diff --git a/commerce/wsgi.py b/commerce/wsgi.py new file mode 100644 index 0000000..054e015 --- /dev/null +++ b/commerce/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for commerce project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/3.0/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'commerce.settings') + +application = get_wsgi_application() diff --git a/db.sqlite3 b/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..3b1d6793e757471dab2cb0b2d78755107171235d GIT binary patch literal 253952 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 literal 0 HcmV?d00001 diff --git a/google b/google new file mode 100644 index 0000000000000000000000000000000000000000..492f44c27eb2d402e0dd3446b4d38192e75874c4 GIT binary patch literal 15903 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�ZkvUe1M)ErGJS$u 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 literal 0 HcmV?d00001 diff --git a/google_9q82OQA b/google_9q82OQA new file mode 100644 index 0000000000000000000000000000000000000000..492f44c27eb2d402e0dd3446b4d38192e75874c4 GIT binary patch literal 15903 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�ZkvUe1M)ErGJS$u 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 literal 0 HcmV?d00001 diff --git a/image_google b/image_google new file mode 100644 index 0000000000000000000000000000000000000000..492f44c27eb2d402e0dd3446b4d38192e75874c4 GIT binary patch literal 15903 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�ZkvUe1M)ErGJS$u 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 literal 0 HcmV?d00001 diff --git a/image_google_sTknGkm b/image_google_sTknGkm new file mode 100644 index 0000000000000000000000000000000000000000..492f44c27eb2d402e0dd3446b4d38192e75874c4 GIT binary patch literal 15903 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�ZkvUe1M)ErGJS$u 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 literal 0 HcmV?d00001 diff --git a/manage.py b/manage.py new file mode 100644 index 0000000..bea064a --- /dev/null +++ b/manage.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'commerce.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main()