From af31b7de2cd7625cbf36e75ec9c1845800619dba Mon Sep 17 00:00:00 2001 From: bot50 Date: Mon, 19 Oct 2020 14:02:53 +0000 Subject: [PATCH] Priyatham-sai-chand-web50/projects/2020/x/commerce@20201019T140253.498383380Z --- .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 -> 335 bytes auctions/__pycache__/models.cpython-37.pyc | Bin 0 -> 2207 bytes auctions/__pycache__/urls.cpython-37.pyc | Bin 0 -> 685 bytes auctions/__pycache__/views.cpython-37.pyc | Bin 0 -> 4042 bytes auctions/admin.py | 8 + auctions/apps.py | 5 + auctions/migrations/0001_initial.py | 63 ++++++++ .../0002_remove_auctionlisting_date_added.py | 17 ++ .../0003_auctionlisting_date_added.py | 20 +++ auctions/migrations/0004_comment.py | 25 +++ .../migrations/0005_auto_20201018_2304.py | 23 +++ .../migrations/0006_auto_20201019_1109.py | 27 ++++ .../migrations/0007_auto_20201019_1723.py | 34 ++++ .../migrations/0008_auto_20201019_1725.py | 18 +++ .../migrations/0009_auto_20201019_1740.py | 18 +++ .../migrations/0010_auto_20201019_1744.py | 18 +++ auctions/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-37.pyc | Bin 0 -> 2931 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 | 43 +++++ auctions/static/auctions/styles.css | 3 + auctions/templates/auctions/category.html | 58 +++++++ .../templates/auctions/category_listing.html | 19 +++ .../templates/auctions/create_listing.html | 34 ++++ auctions/templates/auctions/index.html | 54 +++++++ auctions/templates/auctions/layout.html | 49 ++++++ auctions/templates/auctions/listing.html | 48 ++++++ auctions/templates/auctions/login.html | 24 +++ auctions/templates/auctions/register.html | 30 ++++ auctions/templates/auctions/watchlist.html | 46 ++++++ auctions/tests.py | 3 + auctions/urls.py | 17 ++ auctions/views.py | 149 ++++++++++++++++++ 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 -> 245760 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 +++ 60 files changed, 1054 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_remove_auctionlisting_date_added.py create mode 100644 auctions/migrations/0003_auctionlisting_date_added.py create mode 100644 auctions/migrations/0004_comment.py create mode 100644 auctions/migrations/0005_auto_20201018_2304.py create mode 100644 auctions/migrations/0006_auto_20201019_1109.py create mode 100644 auctions/migrations/0007_auto_20201019_1723.py create mode 100644 auctions/migrations/0008_auto_20201019_1725.py create mode 100644 auctions/migrations/0009_auto_20201019_1740.py create mode 100644 auctions/migrations/0010_auto_20201019_1744.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_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/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..dfd5cc25962a4ac56a779c84df76ed9bf9f4e71d GIT binary patch literal 335 zcmYjM%}N6?7)&s4B8n5fOi6-xG@0ZhmoE5IvJ!Y-H$E4sMS{YRD 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..42b56e07e0b74230cee619a141cf558355770afa GIT binary patch literal 2207 zcmaJ?OK;mo5av^S=;bJB5TvgZZQ7_vWV8rcASi-3cG3b(T%b{UAPf)`cP-JTNOhNr zBcr$E>R%8PXpj9%d+nwE3pw?hCFR6LPzjvfnVsDoe&5XSezzMM_}zGM5`W_v#^0o@ ze-0-1@W=@SGnknhb2Bncnp?Rww^b|GG?aa*AVNBL>xfoD{2ZN%CRFa~1_>=l^Ah z4qUW&eS7=P9t9-#CPg|+_IApnA}mv(IIIC-W@K~cz-=J0q82od`;Y;1Ppl}!tj$`)5VVf=1ve*V)Wy8V+N^_lU)upM z>%waT+66$|!^(j5*~UvFy2vg7>VY6yh5_L89wu@Iv_+3BmTEu9d0L6G$Wkf#waxjV z#QSd4O6$p@6qOVgnzeDcl44LR;nuP$=j9~Jxwu%H-1}vDD8;45;g^i@atb!2c&~Bz zshV*iE<-!L2Qfwv;XHXB=e(F!Gu2**Y@Uc!e8^YGv7jtsBpI*xDOJQN!MxtVvT0UH z)nh!xmONhMNy=sR4`?5n;tD*E@6M`fA@6K%9vvNxL{?6CvaD94v>YuDH?e8T<>o>l zd(tY_YFw06yk9O0HkxMp2*6`}KUwD0(9$O=FP)VcuAzFsStT|c#R+4niTmhBV;j#l z9{DxIZ^nV~3T2AX#Aso(n$d1Xry1Q>#_v>e_U^HD=h|!YCKBDPvMT4w1uiL94&yRa z-Xcq@rQpg>Q54fstW?M_qd+)AXpZFh{+r|$UBschI7a=(@%t1R0cn`Wm(N$=c?H|EMCig2pTbRr4@<$bY4Ibki$i(aTTiyPb{;5aN#)+z zsoAQxd`8D#r+xm@pC8q>&&l=$*}6M;r*Sst^}-EW_>#m~)z&k5JDuWam4>9`^erds znHy%$?BEY+>GgA!dDf~PVZ*vIsa0_ovPBIG&C1gjpV`_*?JMB+AK{-y)P|))U6rb` z?xj(W1)wj)OHBXd82axR^a&~-Y|tLa2S zDp4BkTbB*oXYC$)*X6Za*RIQ^u#R^w@FZ&(|4(0%%4}9Fy%~2wh~{_(*JWuW%4l|Ntx!G1N?pBjO_2` z>@HT`=B)m_pbKj5II-q42fbADb-}B; literal 0 HcmV?d00001 diff --git a/auctions/__pycache__/urls.cpython-37.pyc b/auctions/__pycache__/urls.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5933254f2ec6e94f53bd75f3f2b898a542fa4053 GIT binary patch literal 685 zcmZvaO>WdM6vyq!B$LU%?}hHKs(aY zic$g-h`LE1RS_ke!jwl>Q-~qCkC0|aG0Xy`NC~8Y=14P`2g;CA$O9Efb0`9pNEwuY z79$-5dV!R~VW5|P(GsbE%;pL@&L& zmtXHcoz!0p*QWj|n+>Z!tF7!515-Du@40Sx&4$JbB~9&XJHEbi>1nTEz?S{Fm^UcJ Kq=**u-|IK-P{a8E 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..3539517aac63691ed35554797c152edc00a8d1da GIT binary patch literal 4042 zcma)9TW=f372er9DTvCz)q85p<=t@jHspd!psh> zilF);qi+WKTA(PT#{m6B^U#+*`7iXT-gmh~?h%zh1YKE_r36AiaG%dDJ5EVm;&cOr+8%+B20i#*eJGCvQZAP=L^jNPn} zH>0NMd)ZRnidv@cXUlmzYNH?UFncRsiB|Fp(S>|9T7|5^n|z74_%d(vxA+Rb&~HR* zpIUsCuf4SRnrIK!kDcfuU*{KJTG1tbiC@P3GQYyF;(mo+2S9zEwvQE(yA3#51&Zb`z zo3M!$gEV-MZQ=ONPRaqGTZwE}H!z4_B-u!OYsni}{qGO%-`OTes_mVkx0h@`C=ZIP zOn9~3BS>UVY$r8V)%J^298}%mp$_9XEm9T7%k);G3L9UTDcPOPzNQ(uga!(N zlEuR;=>ecdo))z#TXe!WE`VDc>t-D1B_CzfZ^iL9qa>?mMZiuQEesK=_Qmbi1wju|ZBZfW<6r_aA6I;vC=Wl}Kp zkDZqGbD{Q1E(uBVImxHrLiz#b~O-X>cGV$vBeS_B%?- zpON&8c!qQDLv|b2RKF(aN3uER2+KL1PcR_;20)OrDbo-Xz`#4iDehdgjvVEo?@#QB z!`)ZTkvnluf>VoGDg^o-$IKM{V7%7cz>k+b*dHjH5twHW_vO2ISJX1DU8s1cmX3w|H8wg!Ui-UgrVt;zA&jhQq@5b+k7(t2 z#QYT|eu1kZpSRo)uCr>8wOPvpzBE5~BFa~Dk`6E+r#FFd8$CEYXo+Nl9ud@52#`oV zwxOp3np*n}`GkVQ#5uMBx2rtv)dA7K>{De@leTEql4JXMow^!ZhEF=A5J>S~hr^_* z4oZn+CO?5P@*XwhRpT@FHHAd&z5%jumGs5<_TvH>FXbDvtu~T^ZHYi!TnZ6eoyd%kWO4PwfapJR_|9Sy>&LmX~9AzBJnEk{0pe2z4QS$d@* zGCiVzwV^0es1T+}#NIN;g~O6%&eZF$TC+D)S*pt^qst%gKt)ekEM)Q_?(=t>v33P`5sq32GVi3_)TLJZ&wRz19-;Cd$>v0~z!I!E5bBu{32Z511? zrGovY{4+xk13PBVHfl!v&IGoJXPDDaP2QX`$E=(4WU1zfVTATXo}`%}hDMAlc2k)r zROT&srxbnULLm)FBprHu@rx<5s*QY9sSP~S+v|=mQ&~jR+ek7g5`MU$l6_HhYa=Wz zP=Y*9lgLNE2OT#1aP1i=4Y$1b#U^Wp=KE|rKp{YC|O^u=dg3jE~lmFY$F87g@?(zUeC&v$Aeh;Q2 z16!z+K!l0M8?XE$f8w9GCO;u>(Z>ejuumDQHZNr}`utGS0Kk33+4i}at4=JYj&ZrD zdb(AqL{d2uqneGp;a;iAt?}JGd?8eKHa8Cr4!SZecLcsM4!gawJKEnw;n^3}=1`)t z?5Wrct5s1#aI>o*ui4Rh#tBr~Itc2GCIkw>*( z)9_DNUr}hVT*DW`8mfbv>=J^3&sH1+{->Cy?}fMZ8XqJ@zXWhdD(Oy_zSQJdP^2KD z8`Cv>$52}@O~+&cNdd+1JX)EGt37--^+u{Pfpoqa+E=Dt)qcIOuIqi2{{l0{p$tN% zs30`7OCLd|d^h!JT{lt=FqMJ9!bDaR;tc)G$rhk7L6V9z9ez}QXWXUeYdmTl-a{Tl W|8?gQTMfc6q^sS$7_Nt2c=bQ!N}E;y literal 0 HcmV?d00001 diff --git a/auctions/admin.py b/auctions/admin.py new file mode 100644 index 0000000..3fac663 --- /dev/null +++ b/auctions/admin.py @@ -0,0 +1,8 @@ +from django.contrib import admin +from .models import User +from .models import AuctionListing,Comment + +# Register your models here. +admin.site.register(User) +admin.site.register(AuctionListing) +admin.site.register(Comment) 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..42b85b1 --- /dev/null +++ b/auctions/migrations/0001_initial.py @@ -0,0 +1,63 @@ +# Generated by Django 3.0.8 on 2020-10-18 16:09 + +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(null=True)), + ('category', models.CharField(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.AddField( + model_name='user', + name='watchlist', + field=models.ManyToManyField(blank=True, related_name='watchlist', to='auctions.AuctionListing'), + ), + ] diff --git a/auctions/migrations/0002_remove_auctionlisting_date_added.py b/auctions/migrations/0002_remove_auctionlisting_date_added.py new file mode 100644 index 0000000..1a79224 --- /dev/null +++ b/auctions/migrations/0002_remove_auctionlisting_date_added.py @@ -0,0 +1,17 @@ +# Generated by Django 3.0.8 on 2020-10-18 16:16 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('auctions', '0001_initial'), + ] + + operations = [ + migrations.RemoveField( + model_name='auctionlisting', + name='date_added', + ), + ] diff --git a/auctions/migrations/0003_auctionlisting_date_added.py b/auctions/migrations/0003_auctionlisting_date_added.py new file mode 100644 index 0000000..c762cb7 --- /dev/null +++ b/auctions/migrations/0003_auctionlisting_date_added.py @@ -0,0 +1,20 @@ +# Generated by Django 3.0.8 on 2020-10-18 16:18 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('auctions', '0002_remove_auctionlisting_date_added'), + ] + + operations = [ + migrations.AddField( + model_name='auctionlisting', + name='date_added', + field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now), + preserve_default=False, + ), + ] diff --git a/auctions/migrations/0004_comment.py b/auctions/migrations/0004_comment.py new file mode 100644 index 0000000..87da767 --- /dev/null +++ b/auctions/migrations/0004_comment.py @@ -0,0 +1,25 @@ +# Generated by Django 3.0.8 on 2020-10-18 16:42 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('auctions', '0003_auctionlisting_date_added'), + ] + + operations = [ + 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)), + ], + ), + ] diff --git a/auctions/migrations/0005_auto_20201018_2304.py b/auctions/migrations/0005_auto_20201018_2304.py new file mode 100644 index 0000000..de1ed5d --- /dev/null +++ b/auctions/migrations/0005_auto_20201018_2304.py @@ -0,0 +1,23 @@ +# Generated by Django 3.0.8 on 2020-10-18 17:34 + +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('auctions', '0004_comment'), + ] + + operations = [ + migrations.RemoveField( + model_name='user', + name='watchlist', + ), + migrations.AddField( + model_name='auctionlisting', + name='watchlist', + field=models.ManyToManyField(blank=True, related_name='watchlist', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/auctions/migrations/0006_auto_20201019_1109.py b/auctions/migrations/0006_auto_20201019_1109.py new file mode 100644 index 0000000..c2c5bae --- /dev/null +++ b/auctions/migrations/0006_auto_20201019_1109.py @@ -0,0 +1,27 @@ +# Generated by Django 3.0.8 on 2020-10-19 05:39 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('auctions', '0005_auto_20201018_2304'), + ] + + operations = [ + migrations.RemoveField( + model_name='auctionlisting', + name='watchlist', + ), + migrations.AddField( + model_name='user', + name='watchlist', + field=models.ManyToManyField(blank=True, related_name='watchlist', to='auctions.AuctionListing'), + ), + migrations.AlterField( + model_name='auctionlisting', + name='category', + field=models.CharField(choices=[('Fashion', 'Fashion'), ('Electronics', 'Electronics'), ('Home', 'Home'), ('Sports', 'Sports'), ('Toys', 'Toys'), ('Automobile', 'Automobile'), ('Books', 'Books'), ('Video Games', 'Video Games'), ('Other', 'Other')], max_length=64), + ), + ] diff --git a/auctions/migrations/0007_auto_20201019_1723.py b/auctions/migrations/0007_auto_20201019_1723.py new file mode 100644 index 0000000..1f886f3 --- /dev/null +++ b/auctions/migrations/0007_auto_20201019_1723.py @@ -0,0 +1,34 @@ +# Generated by Django 3.0.8 on 2020-10-19 11:53 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('auctions', '0006_auto_20201019_1109'), + ] + + operations = [ + migrations.AlterField( + model_name='auctionlisting', + name='picture', + field=models.URLField(default='https://www.riobeauty.co.uk/images/product_image_not_found.gif', null=True), + ), + migrations.AlterField( + model_name='user', + name='watchlist', + field=models.ManyToManyField(blank=True, related_name='watchlists', to='auctions.AuctionListing'), + ), + 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)), + ], + ), + ] diff --git a/auctions/migrations/0008_auto_20201019_1725.py b/auctions/migrations/0008_auto_20201019_1725.py new file mode 100644 index 0000000..973a35c --- /dev/null +++ b/auctions/migrations/0008_auto_20201019_1725.py @@ -0,0 +1,18 @@ +# Generated by Django 3.0.8 on 2020-10-19 11:55 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('auctions', '0007_auto_20201019_1723'), + ] + + operations = [ + migrations.AlterField( + model_name='auctionlisting', + name='picture', + field=models.URLField(default='https://www.riobeauty.co.uk/images/product_image_not_found.gif'), + ), + ] diff --git a/auctions/migrations/0009_auto_20201019_1740.py b/auctions/migrations/0009_auto_20201019_1740.py new file mode 100644 index 0000000..e521cb9 --- /dev/null +++ b/auctions/migrations/0009_auto_20201019_1740.py @@ -0,0 +1,18 @@ +# Generated by Django 3.0.8 on 2020-10-19 12:10 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('auctions', '0008_auto_20201019_1725'), + ] + + operations = [ + migrations.AlterField( + model_name='auctionlisting', + name='category', + field=models.CharField(choices=[('Fashion', 'Fashion'), ('Electronics', 'Electronics'), ('Home', 'Home'), ('Sports', 'Sports'), ('Toys', 'Toys'), ('Automobile', 'Automobile'), ('Books', 'Books'), ('Video-Games', 'Video-Games'), ('Other', 'Other')], max_length=64), + ), + ] diff --git a/auctions/migrations/0010_auto_20201019_1744.py b/auctions/migrations/0010_auto_20201019_1744.py new file mode 100644 index 0000000..bc1b26b --- /dev/null +++ b/auctions/migrations/0010_auto_20201019_1744.py @@ -0,0 +1,18 @@ +# Generated by Django 3.0.8 on 2020-10-19 12:14 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('auctions', '0009_auto_20201019_1740'), + ] + + operations = [ + migrations.AlterField( + model_name='auctionlisting', + name='category', + field=models.CharField(choices=[('Fashion', 'Fashion'), ('Electronics', 'Electronics'), ('Home', 'Home'), ('Sports', 'Sports'), ('Toys', 'Toys'), ('Automobile', 'Automobile'), ('Books', 'Books'), ('Videogames', 'Videogames'), ('Other', 'Other')], max_length=64), + ), + ] 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..f117439e7bb53547d5e0e032fbfcb7daa7a29acf GIT binary patch literal 2931 zcmZuz&2!tv6(;}^{1EjK*_LHHc95hWrV~R_(lj4UQ^}&_d`Nc2mU`f52D8LllFNWt zdKa)voI2AU%WF?PB*&im|LnDwYNmfd51qW-1!ZL#Vz}6S`}TeQ-dj9cUT#(J_s`K^ zqs`SyWbGgkP1EUn8Z3TGz+d z#@FFKbd2o}ka`1Uy$A2ZLkQskY#BSYOZtwXe*hm^`fwS!euJ7m`nw0eEq$nezwtw5 zfKh{w=QeJiz^8b=37?s`{m%IDIZ|%I@8JvhgVDTeIQHPt+(EzhakYuuU9&nUPusmi zTmN=}#S92Hh_7>XsHF9aczJ_n$Xzs!B+#7nm z0G=RTo~q{Y0vjiYlq$)yQSa{d_Rda}Pl04KnhO4E7EP&`Fewd$s;80)be5B$l_$WF&JmGDm&Iw_PgPFhy%* zkc~)&1CxQ?3PwZ*BuRoR{siYN8}U2~=&NbMVwNSd0Bu77SU-4_PQqgCQg|RUlI0Su zr~@64JjqmZM3ZTh(N~!@rlB<%C;dESFLGLR_N;cT$y&5vL1Qp%Fhk``W-=@epV1dN z6BNQ==cDZ)9uYy}j0zcW5e(=#6=86MwT+bb17Jgzp+hMIyIbMbds`2;qJXE#EWG%e zj;gO#s1RI46DlPcQYki&EY|d}X=3~mbAxH-LY6@vFo99m)?eI1j-q7g2ou`Zp2F0gWa&$hT7-pekZQ~S^R3|%N zX~u2x2uxTSNS4vCXd4M-B2*JaVuaXBTF{@Bxk$alBqtE`X^>f@VwMAYG7L^rNfR2E zP+_UeFe?Ec1lTO8ZluT=^E|~ADc>GaOQt@?oTU^Bvk2^>T5o4m18Y%<42s^*3YT-po zS9ADS>+kqBcRK&7Eoh=k)mGyAVueV>sx`oM5fR4vH7)3B^%w6xpVF8OSp1V38X!6^ zt1K*5jplDJn?_;eTs@&`S~Av=)pPA?bBLx%E=Zypq%SiKe^uxGF=j_%v#A;b{Q;v1 zNZgp(d#y1cDI#1*wX&BZ9C&(!1%-)IwG2y|UhJahsLf!1NoS|6Ls7$K71IkB=NJ0g z#zwRP=--4SXa$L>#M=`aldUvW1uA3qZx0zABTCh$EY5O4aeYk-Y{VGZAr~{%GVnm; zQ@{(^_Q;fY86urnvq63PnI!jrGy;`+_PH74>jTv?f z^tGav_D#tgYXw4o#Hi*T_WVPg1l8QfCS|9~UG)BhO{iVAA90>glG>FIW0DTJs>eLd z1nUc58-GVj+dNHKjKWXL&iThhTT-n9-At^2TAr~4n@ENV3Z7EsVLa99F-d19T#uG* zNlU?{hJ$K%Z8q&z*n&>mCRV3bnd-dh%s- z`uyNobo{h?aHJZ00Hp|yw}}0$`bR|&?TjA&d$9l6nKnV5^;7KMXI*}tCY*pgi}_?i zMNH2YSv`CGWp=iWw{BGCAe_!b4P|Md$}SEKx9a)Ts^hxXoi%42pZjLivvp^~*>rAu zuH!nsx8Z57b>vzppFmUaF%mmV*tbj`LQKQJI(hpwMJFaS)oVW##Z%PYyZ3VpukQ}k zEcc;r@M0ly>yj8+S>Ynay&L70Nocspr!nw#AnmM=`c>m|3)(L<8l|q>w$s38O^@D> DW)7Sf 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_?kListings 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..2a4aa48 --- /dev/null +++ b/auctions/templates/auctions/index.html @@ -0,0 +1,54 @@ +{% extends "auctions/layout.html" %} + +{% block body %} +

Active Listings

+ + +{% 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..c9a147e --- /dev/null +++ b/auctions/templates/auctions/layout.html @@ -0,0 +1,49 @@ +{% 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..821fd39 --- /dev/null +++ b/auctions/templates/auctions/listing.html @@ -0,0 +1,48 @@ + +{% extends "auctions/layout.html" %} + +{% block body %} +

Listing : {{ Listing.title}}

+ + +
+ +

{{Listing.desc}}

+ + +

${{Listing.price}}

+ bids so far +
+ +
+ +

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 user.is_authenticated %} +
add comment..
+

+

+ {% csrf_token %} + + +
+

+ {% else %} +
+
+ Log In to comment on this listing + {% 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..dce261d --- /dev/null +++ b/auctions/templates/auctions/watchlist.html @@ -0,0 +1,46 @@ +{% extends "auctions/layout.html" %} + +{% block body %} +

WatchList

+ + +{% 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..e3bb470 --- /dev/null +++ b/auctions/urls.py @@ -0,0 +1,17 @@ +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("watchlist", views.watchlist, name="wishlist"), + 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="watchlist"), +] diff --git a/auctions/views.py b/auctions/views.py new file mode 100644 index 0000000..06802ff --- /dev/null +++ b/auctions/views.py @@ -0,0 +1,149 @@ +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 import forms +from .models import User,AuctionListing,Comment + + +categories = ['Fashion','Electronics','Home','Sports','Toys','Automobile','Books','Videogames', 'Other'] +class Bid_Form(forms.Form): + bid = 0.0 + def __init__(self,bid_value): + self.bid = bid_value + + bid_value = forms.DecimalField(decimal_places=2,min_value= bid + 1) + +def watch(request,title): + if request.method =="POST": + listing = AuctionListing.objects.get(title=title) + if request.user in listing.watchlists.all(): + request.user.watchlist.remove(listing) + else: + request.user.watchlist.add(listing) + return HttpResponseRedirect(reverse("index")) +def watchlist(request): + listings = request.user.watchlist.all() + + return render(request,"auctions/watchlist.html",{ + "Watchlistings": listings + }) + +def index(request): + listings = AuctionListing.objects.all() + + return render(request, "auctions/index.html",{ + "Listings":listings, + + }) + +def listing(request,title): + """ + docstring + """ + listings = AuctionListing.objects.get(pk = title) + if request.method == "POST": + body = request.POST["comment_body"] + comment = Comment(user=request.user,listing=listings,body = body) + comment.save() + + return render(request,"auctions/listing.html",{ + "Listing": listings + }) + +def category(request,cat_name = None): + """ + docstring + """ + 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): + 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 create(request): + """ + docstring + """ + if request.method == "POST": + title = request.POST["title"] + desc = request.POST["desc"] + starting_bid = request.POST["starting_bid"] + photo_url = request.POST["photo"] + if photo_url == None: + photo_url = "https://www.riobeauty.co.uk/images/product_image_not_found.gif" + category = request.POST["category"] + obj = AuctionListing(title = title, desc = desc, user = request.user,price = starting_bid, picture = photo_url,category=category) + obj.save() + return render(request,"auctions/index.html",{ + "Listings" : AuctionListing.objects.all() + }) + else: + return render(request,"auctions/create_listing.html",{ + "categories":categories + }) + + + 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..fb3d5a206bc69c25091be46b46f7f959bf403fc0 GIT binary patch literal 245760 zcmeI5d2k!qo!`*}KoBH>rVa|yXgGqvp(qSVun#mYjWoldAPr|IQlhAlC}#?808O$f z92@`?$#G4x;Ee6sBz87QC7WxLs+?ODr#7x6W#`x}m+jgdrE=}J#+)zAV^W;nbGxy$S3sc-}}Aq@AD4y>jt~8Uz^oyT5!2sDXO)g>=h z|Hu4s-w%EN#Fz0M>;GE+U+TZzf41+teSfP@>l^9)cJD9rzTP|J{cZ0rcyD=od%o23 z>7KbBzvtIIpZ3fVH+X>n2!H?xfWRY2;KH!mF?4Q9-N@DSa;Yi^qL5KHYUPY1NaVek z%!u)5lx|Fj%#A=Fl0NbW9AO54f{DLEF2CgRbUc;R$=`NXdB zl430{rW7R=O-2&3kdUGmg6-wwyUWXM<>iztM&gNBEG}I*)m}ciHsx*Eq;lh7*EMjT7M!gDv~S@k@6!J{z5d9D;JAesn)EN6p9hz zDUm=I6H!GtE1A4n(=uv4ujTD-#6(I-Mud1g78hnu5;r%k zZlp{_E0*t)k_Yo9h$$%(BGCKVf@s_rFqa^YNlHw6L zo=8gZ3xW3Xlx%A_NEty8;!XWxknoffDN&3_QX-~AFC1$xFWJhAq&tv*=5Qe8<0&PY z62wR{7AF*^21)rTE5v4#7`>vJsp++XW_3Y2hmaDK2yq;XNz+G(3tKx-3AT3FsA`px zT5NM7vSB60B+?QWj_ezUAd@)6=CBZC76%cLj7UN(At~}agrchoXd>PjZJTGn$~ zwUaA3kyM1_)BtgHx#>!3xoUQB(x}93Cl_KO5tm~EPh60ZX{gypzY* zxMF%B(|4h!RWd7;^2U0GwsNMZZe$q5-wq8z*2N1WU+oX|O(IiVdTQ&6k5 zgE$gpAsH1e^%6(dO-E!hZ#go%-8}>eqLhp&uX>4}*G)fUQfGedss)|!DOakjPiU1& zxsoZ8UZ$>e>JCu?nRHZTs)snE6DEZ$#K!CtmJyJ4P-~S-Df}=EshapP>!HRP1gKIg&^SQG$Xao<`a| z?IS@ZA2Cr`N%;7mcX;^$C;xBx-{p7s&+topnV;q-_yPa-AHf4SNCp8A009sH0T2KI z5C8!X009sH0ZM?Zb}#Hp;$*+`9A}=h%CIv&n`$k$O3x%8I@;@;XzeskL3SVYIwyOY zMa&bEM?J(gzowQ}=$SQg4v(I6JASCgIok3--Mf#toMR-bwrV-QHO~K*V{n&FpWAtw zR75P<>8wG{Ice5V)K@AhyJj)mD0bLhI^cB5rmgj~LSHYj>*G&2_;2zz_!s#T{22cR z|9$>n^Z$YWJNzf@POt?6AOHd&00JNY0w4eaAOHd&00NI4fkUpL!RAUmtLLkIM_ofF zn>ofZzt@&Y%<|;xX5N#op>WgE{%xb4LD$ewbDw##z{A{_-w!hW?|#}fGR#@O9AJ6x z_PYiH#7}LNoeOXsaSfhko2@S{I1jr5q$+yu!Tjn_*8qviYo4p1ryuC||NHpk4*p&K zzmUHH_&oo&`A_ic{38DX{~XE23j{y_1V8`;KmY_l00ck)1V8`;9%}*veJ;n)pt(|} z>;EIYB+Oa4FOzwDR%r~LiCANjuR z`-<;h_!qyJ0&|FZw@_x~Jmj28%i00@8p2!H?xfB*=9 z00$|IKn;E*u8b9RXhPl4HR?x^DJ7~^WBPX{?zDeE4dCu?RhPXa@7X)e$ zKJ4N~xL)SMSWlfj>f*v&ui?eW9BpJ8j*QGR%zH2OW#o)7cV1Hwy`K9lE9q^CqM5^u z%$6>i8Dj3dhBTUU`h<&Meeb%sGeY1-OQ!2Iz7(f?lwFcnSn;8;n2uD z#$a?)e@4#WF&8(%xebNQn++Ug5xJWpn>&s)b~JT1cN}H`xEoTNxrYW^+-c6m+_S6V z15CclaLls!Mwa1{W%*ejbWvw)+sB+cnVZ&XxLzZ+qJQ4ZcpgUr~vWn^h)bvGt0+t+J%HsuruNPS^YS4pQ08bIDy=1t~)AF&d3U>Gl6E{tq4e zACl+tefzyN3rc|i2!H?xfB*=900@8p2!H?xfB*qPxB}FL7wNmypuS_3j{y_1V8`;KmY_l00ck)1V8`;9y9^BljHiv zSvtnj=U5u1Y42HrG);SgEIq~2XIMH!Q_s^ZJ;~CiSbBn{ z-N#uPVCgZI4${ldYGk$XzChZDbG?rOUd&9InLS7(ms~SvWIHML2009sH0T2KI5C8!X009sH0T6hQ1nA%Yk9#jU`0w&x=Klfz30~!6e4qb+ z`2U^%)Bcb8WB%j5ANqd7_s@MF_bvK{`+wB`oBf~Zf2aSW{m=Iw?)zTf7yJHl-|fEP z-XHY-dhb8({je^-|tLLlJYAHxJf^;J|M)nSm_2spKR@0jM8=DP_=NcCDvCS(ji^e9icq&XRhDQ3- ze7@;`yl4ADXUV>iiC$Jac`$WRE7h6;jO{a{#3n5E8X7ECh78m0OvBDlVzD#C7&*Za zVmCb2OZ8Zcs3c=E^ej{5HJRk~(n?bm!9uss471w2Ei$H63l6gjHSAh^OuH5$niD)t z?1sm@1|`$T07W;&AhD3o_b^rJMy{rpO9j1Jvx+magGRn`iWG@Y^%x>|7c#WA7kj2r z%+S2Mm?6Eb*yIo?CZ6k|A?z+gBWWw}?9-&c=%mNm`mO$FG)DF8Nn$l7dyF8=Y}z1( zd^79pQw>W)x0y{X4aH_w=mfDGneb4lW*#-8BF*j4ac0xa)K#@=mGEx%0%QA3fY^k^ zZbO^J%8+K-9c$Pb$}DzrKsUE5wuiBNHw|Y}3M!*|709Yz%!(8$%h}e%eQDPK~;#q^1EC!#2+Llf7fI zlc`wODn;Giu&u1|K4Li;cN%(HJE&|!R4a45w_$B4Ywe)chP+nh885L8i%zPsl}k;j z&{ob!53w5+yO`QSd4)7~WxI)uWCU4G*h9?5lrBT6)zA>yGVN}d8al0}hRUYtu$!2U zOm`)%c6d*XGJzXatXp&fzgbmbu%I#0;K2HSrHTnfB*=900@8p2!H?xfB*=900`I!`1=03 z;}G`|2mh@9>;7)vx!$zrC!QaJQLH$1JJ6{SSD+2cvyE2z~Pz3-}C3I+3O zO{?iejg1DfPp@XG8>Dm6z8?x^%jJT#B+V_UMa|+{5n8^3H|A!p-AEHR%X)>>VKxTwCfzzkCdeLY%GW1xNA?uYZ@bH{sXu6+m?IK%bSAx~f>$<>89tC)Td)}+mzO0aD`YlG`Wu}i z=r8;r*$lPYWAJ`c=>g66!pe%FskFlsa48M%JzMd(lS*?&Mk^xr8#ADgKoR_mKpbiCG9fRs%xWDH{ zJROSB)@f=Ak!YAK63UFn6Od(YC&>nIhmsw#-1ec{!NTb6_qP&h>1!R-warBh)tz^T zuXc6QIeUpkVjRd;wKq1jQci2zblM_l+j*AGc;lpGxW2@B0+W;6j%uY-)K@AheSApO zh`g22W%C=_wg0_xu^t{;=3ml|`^?T{FF{(+J0Ao3T(gb=ZiqZvhJW4vIp06)|4zTV z*Wta<^Ti&o=PMq?{e`YS=DzRd9FvZB$c*Hg<-Tx`iRtmM`DxB)B#lXnJz>Un3gk$~ zL2g?p-RopY!?`(a?XH4$Fmpvu+Q0cx7~b*7HhNEE+-$SmGp79}2RUXj{F?zEtPXnA@~IrDmT>bR}4+tqM$jh?Yc1Ew+4d~!GYjlz3n#a;&=76eZY{Sg-dS87zyi*Z8f$3@P zojV=6u}xBQgLSgz7S-_VejVCo`Ox)hLtSffYJEn=EN4)H9mkKoFpaII*9uzb9)l@d zKRWISTn}^gr1i+pc(znV+gjHvT85o`QI%Xwip6B(5WsvumA!Y^cXljqJEAkZP`#GA zLg8~`-GTY=UTfU8T15Nyse0@=PaquTc1EoSIYw1>+h^?E#lDlOGD+Ogwp+~+wX7$t zr=rQ{lW9+osi9y^+p1Yl#93qPbQWtM>{(ABLnK}6EU9gQl*vW2IW3`O+ohenhqS%?>@Bga zL@4}D*Qh5jF~NPZv2<@&(7runC^9ZYwC|=AI-cU+@6rQ3ds!}J=$Y9LXDLbdC}-ES zT#bEhHTnj*n9<6vXzS$ct$F@eYFjE855+2yC(o%X#D9C|Y6sH#;H4xVnCj;Ea~aENeL_x~vKND?M>vVYT}{Xh23e za?I*^h8(>gA`SJz{lsDel35m#QZ^@%<9l}E)_P#lPV=}CUi%5${mL}w%YACS-@wTT zvUwwoIy~eFEGb+)-2nt!?o=CVDB6Ltnzl?%Rjc;4Y*+>MYr(x7b<*FkrTve+YjnNf z)1JUhqH=0)m1d{N7+=mA8w``KS(vrFOo|Bu{?1%g2U1V8`;KmY_l00ck) z1V8`;K;XU!VEupJ$WQ?_%qJ7hC_k*!tha z*8eWH{&%tUzsu(%B>TIa4&LGK^Y!%~>pRwa+Iza^*Lt>ldOU8j11}H&0T2Lz$CW_+ z&mHe|Obza=e1zjTNsxpIk^CfsqLdPqlpsbFMMwzot!#OV{-%PGB18mXT(6B*gKF@u zp4ZC375cE;)mm-6nwp#}X`9suwT+M`NKR^{iH+*y=K6&3=&Z?&^+H+AS0}4_O{-2y zlae4NCq-%U7AbLEtLR$w*30RI`N-P($_vYS?Yx+jgb`_4Br3*VqqWh>s^eCvVoD)u zuvc70W^)L24#fwdD< z>5lR7ODcI&F10s}Ksr)Hjwh9*(rB6zLvPU-#PjoDidZPKibm@pvq%C~7so zymvd^RBO3a`shd2kgl$UqkH)jQZn(G6q1T~pFZnv9U)|nyd4n# zOi?+OOuTUCeC$l|d@JKj^?Xc}w#e_9&GW*U)$?0dMNO91#PrlucDZutZh9d-J73Bc zwlBRRZ>?S3%3j|ru0@5pySeiD@t4bFh<1*Epl%HsHJ>NXiY7yb4UT%{FpGbvt!D^I zN+yk!jKreJgp{xjS>k`R8eJgmE=I`5N<1c88lB&((M@|LE(n&OAE8D! zBWOk3q0#-F8$Fhik|`k`iN^&oX6^KkQlpa~=s^Mb7?R=%$@+Eyqx*^OJ)6uz$={Ik$ zO>Hl|c}JXk^R?BbH>ciQT1#&(NtX&&Zq60w7T4o5h2(1f)oekvzNz1mE{XZetIPRYbA?$fkjuV#z+yR*f)yV=shwt91B zW9imwf;z1> z#49(`+w&I}3Ug~|dFf_)^UBQ`asJ|^J4=f*@|EIig}KF7R*CYp+lw=s^EVgn%#?)l zjkCVugdhb)nVi2%MU_Y*DoBbjQL-g})DX{`UhTGZ zAOHd&00JNY0w4eaAOHd&00NI0fq)TDuZtVx+*j37?NFbK3vh0Bquv3pi#tNHwGz4G zC0+l&+kF1tW5xmDfB*=900@8p2!H?xfB*=900@AU!wk|KtAuk9sRY zKL~&T2!H?xfB*=900@8p2!H?x>`wse|NZ%3F9?7D2!H?xfB*=900@8p2!H?xJPrhW z9^KK`^<#(gKX?7O{~P_M`nG#_yuauE9rr7)&-uRB_}BFV?$eI{=h*ap()Y;@F}v<| z$h=3EM|Zt=4-@PLfe(y8{i88Y;H@OL6VOX}ZA;zA)%0?yn%Ssol}xT&ENZ2iv8Cr* z8RWeZQ$$r;Ue0Wk^fx+}8=GE8Pc5c{H|A!p-AD&#<}Rjh1w)-}8#V4%M<_Tyw^!*< z@N9@l*7Kq9V5ljaY=-N%6;EJ$n%i-A2(c-qsOGhdu~pEkHNCWwA!@Rkl+P+rxoO90 zX>QR{&lyp649{k{kN-}=*~-!gjf|E&65PORp1}MBR~PNU83dYCMLC~O#00hJ(=dqb zA%3s&Z8{AzEB}>Gr!pxPag{9!D z>80S*jm7zyIpXL_dTx>Q&1^Zp9SYX8ty3;dVM%>Z&HNB`=_gjJp-c>8P zRkd<977aH|f(z+O>4o&%bo#nQrxA})n6^?)uNAaVICznoFR-v?=4KXWre3G}Uci30&`k4=GI)h^nxCepyu~$5S>tuRL+NYz(gD+~jZEdWOKfg>`=ottGOXKGOztr^S)AYh z+(b*{wVYm53(cv8&RHgt4s+d4J0H}C&v^oqlU#kn9=0*ZR-18~8K?IM+}v->L%V0L z{buFnjBZY@q96#Z=`~!BCOm;$lB+M-dkvc>&6;h;M>$E96U*^zQ@_o0Vvjy#GwSHC ztuNUM(9oM==v-Vs8}|f0LS)bEC!6^o9bQQ0mPKW`?O?}rIDR0>?Y{0M*RT(T`D>1q zdko$8WB1Oo>Is}X$GwxYcQ>YEQ?2Dz>8GW=(VE%f9$n8~_&s$%lf&+A`%?}uGJK6_ zKGb7~Flnq`dOsTML-K*^{~r=)R09Ga00JNY0w4eaAOHd&00JNY0uPV?*8dL>KB@)* z5C8!X009sH0T2KI5C8!X0D%vQ0M`E>5@=Kd0w4eaAOHd&00JNY0w4eaAOHdnkO0>I z4-h`81_2NN0T2KI5C8!X009sH0T2Lz4~c-e{^!5e`u8DKjcPyu1V8`;KmY_l00ck) z1V8`;KmY`O3Idb&QPxLo2kxT)OhEtyKmY_l00ck)1V8`;KmY_l00bU60`&U7oB!_) z{wMtZ=D*MX9(juw2!H?xfB*=900@8p2!H?xfB*=9z@taN?c_Lj7foGmmbzH#bU8V% zi(dbC^51gsKjMF%{}%t7k6w6C3<4kk0w4eaAOHd&00JNY0w4eaPb`6e5xMt}%fSu0 zud1b5?*Mrla93CLO09<{?~k~zY9;gU|DRY=2pj}J00ck)1V8`;KmY_l00ck)1fBo_ zSpPo(jf@aM00ck)1V8`;KmY_l00ck)1fF;Tbp7w-zw6+?%l{w#UHqkWKfh+f|3%Fk!Un7DbY(Rxj%fllydb9a>LXQ zy>EQJ>7`U_FDs{_(MXIqlq93<^Uj_CH$uy@Tg@Le3bPGcX)&cFQ&Kz<6JxTFFiJb> zqg~#?uF3i}ZtC<_w!G!|6T`t>J+GC6D{4_&t<~16smaNbwpoo(n@Fx)oYYDa8`a6p z^@&`$RMSee$&K|wS4o{o+WN{1%X;m+ zn3RMOX<8H#g4;@n=#)~T97zf>Igxmc%AhK$^(oGKggd=6%uNlFd+9eRX(dx&QOoOU zM6cG$xjXBtqPLno~vzCvg3QAIm%CThPg*)eCXNu=r8E2~JW1_T0 ze$Q;47tXAn-?}Plvb-jyr>3&Yl}mTi3+dVUQns*t=@ofv?dn$c`et!0D$L!@mCsv= z3o+8rDJ2#Wqp_%xc)48E==Fa$|8)odb#ni|Kjwdj|G}<4g$xh?0T2KI5C8!X009sH z0T2KI5CDOPjzF*T1lKtE<2IlB=W0Ip&q=fB8I!JV=MgVCX+f|5dwV|R;Jf`deSg0H zY~SDLJLLTf-sgKh)id5R{?G*nK_CDEAOHf7H-VmybARpej_{F;j>~+Yvg_mPp1|wp zxcU{nl-IV@ja-dfi>hXfHwAJbMK7&nHmX`Bqvta@HK{3DJiCXTFujnTT1*FL<}Rjh z1w(sS?eZ21&d=>>9SWWe8P$ivSIXT1^&ID5VykZy$YmxXwN_@^rs!Sj#XW?ad)ry^ z1kRn~K0Z`avjuGrvpup?MzD)hFU_X+m0#0q1uYc3t5$NWYUOM!8V=6QF9zps%+3a{ zF3en+T38CcnqC?YhSn>3j#%ckoL*E5O)Ih|uT^s`7os2tEhn^KXgbwOC+b&dkj$&P>hDE*Y8Wi&UFRn<1aq z@ix%TRbHqj>_O zque`h**hl{ZmV0_qa&ITk~ZAk>Xv>NoVu|%KQl+XTuIL@lJ+76Gk4X(M(3Vr(b&05 zckEDxVxuqx-xwA5?p+^P&kfgK$$J8CkjZbu-r}srO|_O=rE<+_r4@H3nNO;6G%Gio z!CoS|M`y5G?c=wtci78Oc6OR%W)6kx?nzc0{HpKCmY z_hgbE~__g6tiX0z5#v z0UCNX0Zul;Kw3!&YB4{NX9Zx8mld@i*xAKX#7~^|A9_We&;M3)(Ng~d;^ibx`%kBg z)U~K(T|Ge50-OL28y4<82)K!l%LgqN54Umx0M zYaT#b5gj>&f7yDz5~sEI@^Ta5;_~(N<@Dv_boH>~;t>`W=Hlk%;^pOdMsRrgyLego zakzNW{ab?^$kWEd!OhFT)rI=6Mk{MqZ!dA$XHWmx1hAXB`hO^P@%&eyoKhU0DI-vjS#(#e(F{OzQF zwpkA3;ot)TDtNepss9mW5r_Z63qC$R8(U#3ZVnzE0U!rIfZK}0%GyeZ17Hi}=C$Ur z761SMwEvO^{-@~uGfSUqo?GJfZ-+#90M-B=8vuwyz!o6ztWwa5!>}6S#Q9H&^zW+Y?EHKBAH(AL;y(r!$mMx7c{~prugKqT5fDW9l;x!L z{FaaM(ZbC1TOJp{v%Kjlcsj8-GE5&n#k>F@BgciFhDBcRrmMkQyC2q?-mkvO$q}_H^n?rh_H5kMOQL#Aiu)D@U$rhQ zJJnMR+cwFd(?q89#WrF*A8{}lp9`5j`sac<`?)|zNq;ViEb*RE1Zsbw;mZFDI4y3B z|0lcuJGg%~`oC-MKkfbxa7u^+-94L3_50{w;Tmtq%AolWVVH!a^Lt2bVj`b`UCq4F zn2~`bF;6D%d#WYJn&HI&o9aXkLFmBZ%I$_oqIZ_Aov|UG%0$r5J&)f`hDyQX35}t` zjb`r3V=k#YcHJyFNkWS8edZN$rT5;)JRa+ZzN2$hS_z1F>Pcxym6B-%r`JmS0;$;3 z;ooiWJeF);drWMQm4&Fet!F4FOHw)az2g2k9Rl+ayt1+hBwHC@G)nF*A6-0z5s}`N zL$VUSSK~e>Ks1R_>Z zqGs4XZ%1XZH6uuCa2FeZD)Zdjt2VA$bkKXVbU68QA&RvbSm-LInXWP_#%s>6jM*k6owJJ^FdvTdy>RbWz#CeUU-mr(kvIFCWeoF8 z`3Y|?InE^&b0y0c86#2>6oEQ{Z$msLMRL~D(%vs;%kk0uY>k%Y#;p<>SoDPTFl&%r zDp`@)w32m(L_WC4#EA?5OY-p!^J%B&{C;{}H7cVPG1($FaWLp68bJ*dJe_jrqCUN3 zoM-HHJWAgB&_EWeN76a82p?owQA9t@b9O0&ReaAParHD|v4T2(QYIT*^fqfXy_*V9 zhSAdfzD6_V#toOZo@{}!F6n!k*gZ1tP$e;z$|c#pEryNO7>io)o+|uUB7o=WD&?Ls z*WY?ZsQpsf8%Pf)d4&^qUkgcJQWZo3JyHtzv~kO+#$eM~&-}7Y91y+!pf;#Nmq$jQ zUf~PP1KQ9*jT<&R9)7hQH5Hpw>5wQVPPNP7yd*xVuoi9|+E}5}xTGLZ{>DNNh5-(q zezWOE1s5>SC(WuU97<|y+gA~|V*es=uR@~9y~-%==3Yu@W{~^H#+3aoLK(MIEx$r3 zd3tPEr}F@F|Kq)Gs#-1XR3yFPlj;oNsK?Xmf?qLsv1$gHiJC)?s-4@Jk~QNG?Q4D? zQ;&uYsig7M@+iZ*Gn(Qrf-81z8zF)T4=am0Hf)Ik#5eu~B-xx3)0UnWkG{G*=jn%f ztMQDPhmHq8AEy%Xt}V*_8cQ&WPMur=ox|=(4k<~?R-@?%O`2_b3HAr5aTcj-lXNjl z4N+pAz{KuBHhFWKY={?Jq*BAy|1;RVSBq; zk!c}E5y*7S1I-dLk@dN_dF0aWW5?8{%OtBh00wEsuikEB@RskR7@G*1Sd#?gl$yqp zW~ixrrrp1X(9)eI<%2F7$x6L*;}bps$e8d^Iz}u6Hr0FhATo7NvjHTtd1>DG_;d#B z5%k%7`UCd_s(y7(Y!iPzz;AEF*}k6yw^qARIvsgZnv#)xT_AR^UK5(t|9aayf!x=_O$fuuxyoD2;wszA^_~7UIrq(r44HoU|0O3 z2B>&CdpwyDH|@y z>Ds5caAP)&or2(?Ho!!#m{wj#O-1&sdH+T%a`87kp=5rj{hLDdDkF1~F)|GWHlUho zy6N4$Lu2r$(~MSk3+`w$4zEY7663my*f<4fu8J+u-XP0cpPIlx@?oFx&sed619{<_ z({)fK3jUAH(S(PrZwrGTx7uM6PDjc%6o`&+qDx+P%3Xcl3l=1t(b2LBE2GqPqq4b6 z=+Jkrf{b%^6E>JK{b=H9q>!>S1s;4^UZM8!v(jhQ)^(D`<$c*C#KS~8|C_^OkMW4Z zhR9sDXhjvaY-Uei$hU?2+<**b^L2tvA6IUlG9iX1B5c~s4J`Q z-rfX($N4HN8mYA@qu6UJEmP9oV7t#7K25=Ui?VkX64$iYAqk`q=gOLlkHC_kYm4&X zr15$c#jc4ip*&-}MwH>zZHK!1OuCN{B8))qPhJC%rUI8V&jRNUw-AgtP%H{Q*?lk9 z1ZohMJs}gasKqMPm$xcf%!pR|@a>1r(fEC1Sb`BiZ-I2uBO>T2hijNqolDik`qc)O z%=@%)qfUAe-^>oeh3wWA5knH@8p3zf3F87hOLY)K&cIT0z&z|G>`prl%&X2L) z)o?hxC2_~E6eRl;YkGMY_h*peG;+*7^qXJiIcVWCN@JaEfXfpD4Nxg(nBm2ss83qQ z&VuqCfLN6gBJqLnosI&PHr>^iR?)H&5rs)!1WLvv#J0H-Cz?lhubdcAkG;9p5f`|k z>I43IkE)N^Q(H}KjxvNE*j8*jZ7b)AR%zxFA;;@2JUw9W;pG0sp4P7epaG{}P(-sn z%<8AX*IUdkC%+S6?KSDnv|>yJ zrNy`;3pttig|3;f=~Wp#&{7Ux)l__IbQ)kA=7(zZxt56M@wdz}N4beiEob5W<^oZ* zlfGaAvjkE`sFoMyS+)3$!R>zjPvgF`iVQjia|QYw3*`5)Cz=jgyHcR07_H$$yEz_g z6ewRf^OAAoOYqzoX$4Yz;{EF&U}Q>4+sECf8D7WZ!L;!~;RvRWZM7Z06UNr3az#ht z*Fg>_O>gsp)1b3Nc|smkRKzs&&IOEEc}WcAs2bd<7@f9WGCh|{5o7i$r~GLM=({~I z2?zhzei;kr+PE_PfaukHy1I%cdwNDIv??Y35vqM<^qt|DT~EuSFOU7|j?<9j?ll!Y z4Smh#r+uSIg33xs-RFe|N!tlp%gTt>{hdZPH+@EXa8@atIy;ag_t~F3DV@o0a_AV4 zc$Ovm8KI9QrH%VaC0SsGZZi7o`#_yC@@t*=qf?FOW`mhd_O|1o4$l6D!j>-7$g|`i zInYau>b}g9)5c0uYXc^CAtSPuaBUOkT1Xx4s)mu-$Ir)e3kH84r7TRqbI=2lqGRM% z@Oy|d40iD5!}QhRd{48+O2v)2ZL^8>nr><1AEo{EgKIqaqBwCC2MU?fmd9$i?Go6# zwK-W`Y0L!fQ7kk)=niuP%@%V!#>&d(dOKUF_pJ^f+n^bnBiYIIsG707Y`_JF+60oW z3@>^Sj!xg|=NK`jY;XF)>MSMxT_`CIi+~9^^h#>mv);qU~k9PK`2uuwmn$QUGd)*tFMGNCF8I-aXq4fu>=f0z7AvQ-~K zo_lSscy{ZUeDz&o+O%Ln(}H|BJQk_g&e;6t^<0itI=4>(gf3wm08I=~ifSyIMn>9D zv3Z{0b@T9IT{ERkq+cZq_+(>=@Of==MQV%W!Zov?gabd|Ab!L_;1;q?;NcrS_c!23 zpEa|mwMvmw8R-w5z!R`j_DQhb(-N(0d55jHbJW6Jmj=)SLlRODn`XaZ7y#Qa!RvFb zNF2uC0*qSKwS;(xY*DZK^^;b4L3X#eTaluptKj>(q!AW z1#{FxzATc>>!#M6o-Cs`fy>_?t2}{^ylq-5sUs8Hx5#~4%ds9aD9t;9!GS{*#H$N+O8D!;c4J;@iWY%OHh;x4(p zb`!d{36`bPxE~<|a%pd2C!NTohCeU3z_sm>9|bDmKDTiiBDQ{hCbM&!l?4^+PlO^l zEP;JB^Gk)VljEBhW&06P(IVe+&1O03r1to}Uw*t@TOhql7jiO?E-0m4y#?Fc#o&Lu z%8k)5hica&AWiSU9*fKawcb_G%s%F_z7>!N#?C~=S$>Fu=q8xaYuxlEt1J=x_QrQ$ z5&ng63F{QQPxKLfC{%Bp_RB(v1DP^;Z3sd~5mKqRhT-L*(-=D))UUllBC~ei21!(N z@#5!yMVx1M!Lb9Mw$a9cBuexmf8#LSw^?YRR&l&Sm0SoEYgV#eqIz{pH4{7db=gH) zEj^O>JOyHLC}pNw8se3ru{e3O5WUK%i&A{$z07PY&&syqa+JZ7@1Q)0S)~_tCii4> zwQ^9LEE64lLRDiv55`O zS7oa?s*aQ;^S{yL6Pc5{!OEvc#@&XAQD2o?pr~+z#j$L^p%McnC3Qxy4qwQLh7_6W z@%(AVoT{U7WOMHRauw$pf8R~D09|GY1HVW<)WUF~2f4v#E*>!`9E7(neH<#|u`_=~ zYzsTj-UfXM#ml^Jc3b+ji3+Q> z|7~`}b!B5REcC41y<0d88$Et~Z~s-Bet3?)&>}rDlHk>*6-O=KlO#Z2Z?uT5F#T)R z1_xLlAMKo7Tgh5x=o@y8vK3W+Aq^7&)t7gOgfy;f^j(&t!`H$0SaPg5>-9ui5An%g zivnjnu5{HKi+sMwQPJzu;9t?v-1#ew-PQ&?$yeVK^7pM$_pOFv^ognGbz55PXc2ag zBR7fTX8FJ78rC>`Vs!d;>>xIA?VrOu>647i6hA}cr%}OvMn_fmKtnkCk=KFEdETO^ zcvnEwvA3$M`43aJI3$L=y@I1P5g5jALEt1rTPlf5IFK@)5Tl{Zx_tM8WvL5+0&gsm z>Z0X+O0Q%I=p~H|fw_zN97(ACQRV<%ESA!XYy(@HVehSA4~+S+-_Sg6RNR^;%3r4f z5b;eP_p1{;s-c6<;6b|AGfo4%-8-q2CJGZ5e+;;#>kSo$lDjXNKb+-r2WA5ni>_WAOakeKAmHM93(pV{ieLHDzFm9tO&f4JD z-4pdQYK$st@nrHnZ7_KBE9y(W;U%uPo8;^l7AJR)bLFvG? z{J0`^ymb{F(4G9!iC}zc; zFD=B|!wI`wj&?^v@77%S)z36w+ zn$fi0W&qIZbxoE8EEXO?lxVx6z0u}^%|0WUPErRqy#?r72(GP z35vie*QEGBpxnl1{2%z2!i%df3)n`Ode|k1U9jJtsVErXO=`mS0yB*^zC0x!EHUp7 z*?KZnFvU>?>VrTTkos6pWE^uny)1{czR|?8i@~o6gooi&3ncrxTWdMVMhoI=XQZ8n zuIF*BUa$nj2U5a_T^d?0WkSrF@kh1p=*i0R9sQ_}>0;RgV|Yv^OD`umt9#-0?$9@@ zpL=`32#}+@SE#<*DxdDxv~QObN5I8Nm!l5jm3h87!J$q+fq9bw7y39V1cWyY8ovPq zHz7Wb!2Q5mtTo#|=5(aq1slf)(U!|yuf8|#cS&xE!~N|lmDFI@&7;uTcm|UCaSVG( zoEC7GpX>J$Id7~;DN%MtIh+K$?{sZa@{2EfXn!Xc$5$ZuL0n?r-4k8zhFA&veX7;k zv8U>mte@XVHS5ZdHwl(KN`Ao4mohEug-g5lCLmb_n=xtZsfNV`nfQK=t1x|V>wezN zDtnxFK+xqUuQ%Dam1WI<>`1FzKB^9{Nxj>Yjy#Msa0{>Pp0@;m9~^%CgfjQVjqsdS zhN_*2ORk}udNUTXYQfR&MH9PEP|MGuMdqW2k(DN1DS;CaPCstgT4S*bPwhV^mBuuE zUlw;^^Q(L+>bD#fyJTDq6BtbwZ$pc`)SN<($+|ZcpJ-&sON�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()