From 5f6a88015e6627eecd6061f16e1fe341c7a65078 Mon Sep 17 00:00:00 2001 From: allen maxwell Date: Fri, 9 Jul 2021 19:41:54 -0700 Subject: [PATCH 1/3] Exercise 7 --- .gitignore | 3 -- blogging/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 263 bytes blogging/__pycache__/admin.cpython-39.pyc | Bin 0 -> 411 bytes blogging/__pycache__/models.cpython-39.pyc | Bin 0 -> 1573 bytes blogging/__pycache__/tests.cpython-39.pyc | Bin 0 -> 2998 bytes blogging/__pycache__/urls.cpython-39.pyc | Bin 0 -> 493 bytes blogging/__pycache__/views.cpython-39.pyc | Bin 0 -> 1702 bytes blogging/admin.py | 3 +- blogging/fixtures/blogging_test_fixture.json | 2 +- blogging/migrations/0001_initial.py | 2 +- blogging/migrations/0002_category.py | 5 ++- .../migrations/0003_auto_20191104_1942.py | 17 ---------- .../__pycache__/0001_initial.cpython-39.pyc | Bin 0 -> 1196 bytes .../__pycache__/0002_category.cpython-39.pyc | Bin 0 -> 980 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 274 bytes blogging/models.py | 3 ++ blogging/static/django_blog.css | 2 +- blogging/templates/blogging/detail.html | 3 +- blogging/templates/blogging/list.html | 4 +-- blogging/tests.py | 12 ++----- blogging/urls.py | 4 +-- blogging/views.py | 32 +++++++++++++----- db.sqlite3 | Bin 0 -> 163840 bytes mysite/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 261 bytes mysite/__pycache__/settings.cpython-39.pyc | Bin 0 -> 2441 bytes mysite/__pycache__/urls.cpython-39.pyc | Bin 0 -> 1342 bytes mysite/__pycache__/wsgi.cpython-39.pyc | Bin 0 -> 662 bytes mysite/settings.py | 6 ++-- mysite/templates/base.html | 3 +- mysite/templates/login.html | 2 +- mysite/urls.py | 12 ++++--- polling/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 262 bytes polling/__pycache__/admin.cpython-39.pyc | Bin 0 -> 376 bytes polling/__pycache__/models.cpython-39.pyc | Bin 0 -> 726 bytes polling/__pycache__/urls.cpython-39.pyc | Bin 0 -> 471 bytes polling/__pycache__/views.cpython-39.pyc | Bin 0 -> 970 bytes polling/admin.py | 2 +- polling/migrations/0001_initial.py | 2 +- .../__pycache__/0001_initial.cpython-39.pyc | Bin 0 -> 859 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 273 bytes polling/models.py | 3 +- polling/templates/polling/detail.html | 2 +- polling/templates/polling/list.html | 3 +- polling/urls.py | 4 ++- polling/views.py | 4 ++- requirements.txt | 2 -- 46 files changed, 69 insertions(+), 68 deletions(-) delete mode 100644 .gitignore create mode 100644 blogging/__pycache__/__init__.cpython-39.pyc create mode 100644 blogging/__pycache__/admin.cpython-39.pyc create mode 100644 blogging/__pycache__/models.cpython-39.pyc create mode 100644 blogging/__pycache__/tests.cpython-39.pyc create mode 100644 blogging/__pycache__/urls.cpython-39.pyc create mode 100644 blogging/__pycache__/views.cpython-39.pyc delete mode 100644 blogging/migrations/0003_auto_20191104_1942.py create mode 100644 blogging/migrations/__pycache__/0001_initial.cpython-39.pyc create mode 100644 blogging/migrations/__pycache__/0002_category.cpython-39.pyc create mode 100644 blogging/migrations/__pycache__/__init__.cpython-39.pyc create mode 100644 db.sqlite3 create mode 100644 mysite/__pycache__/__init__.cpython-39.pyc create mode 100644 mysite/__pycache__/settings.cpython-39.pyc create mode 100644 mysite/__pycache__/urls.cpython-39.pyc create mode 100644 mysite/__pycache__/wsgi.cpython-39.pyc create mode 100644 polling/__pycache__/__init__.cpython-39.pyc create mode 100644 polling/__pycache__/admin.cpython-39.pyc create mode 100644 polling/__pycache__/models.cpython-39.pyc create mode 100644 polling/__pycache__/urls.cpython-39.pyc create mode 100644 polling/__pycache__/views.cpython-39.pyc create mode 100644 polling/migrations/__pycache__/0001_initial.cpython-39.pyc create mode 100644 polling/migrations/__pycache__/__init__.cpython-39.pyc delete mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 6f8f59b..0000000 --- a/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.pyc -*.db -*.sqlite3 diff --git a/blogging/__pycache__/__init__.cpython-39.pyc b/blogging/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ad624ac1a7d2e7b34ecfce9e4913aefed3de2683 GIT binary patch literal 263 zcmYjM!Ae6x4BUc;BJ>~j+C!x%cn~Qq&x;^hD5aOc>(dvu+wLZkY=!qpf=9nby!i>< z#Dlvk=#WfiLKsLh7#y06=g-%5nQw*uqnFJzw;p6_&B6?O*N;ZZ`j0-Isxw$Bib4|t z65J48h<`wsecQ#|hB?4;m1{Kb(uT=aC<%V`@yXa;QbHk2b}sCsiP4j@p6t&FRJ<2O zyJFeF6{_Zh@hQwyy`zYfifgwGIUd~xb`U%D38840lc26W`Bc|O_uWhXJaW4aI4NJe G=QdwWTTb=> literal 0 HcmV?d00001 diff --git a/blogging/__pycache__/admin.cpython-39.pyc b/blogging/__pycache__/admin.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bc88b4b8230e198e42f32fc2809c4756d89a3264 GIT binary patch literal 411 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 D&>NJ_ literal 0 HcmV?d00001 diff --git a/blogging/__pycache__/views.cpython-39.pyc b/blogging/__pycache__/views.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e9eaf0521746719384578c1cf3ce7e1e301e1d49 GIT binary patch literal 1702 zcmbVMOK%%D5GMDbU9Hy-6mILbX{#0uP#vroZO{OQVZ^Wtv}oWMaZ{th7V1hQq?LD< z3P~lBu)Z|8=Fop&AARqy;kBond+Vt)l;zktmb)AdheLAan;E9d%MpS0SMcWd%qQe; zoZM^9eAJBUXgah z0v5u!#Of@9F=k80q#3_~lSz}Bn&c(pvgw-m2dzg>xEhI4akGAN_Jp%c@}4#UO7Cyo z$Bns2aU(U}kx;rv@xZI*!B~U-7`jS;FnZ=zRDNB#%y~e7cbR)mn8*BAq@oApCB2|l z?#LrptKHBEtd4U|FUVUx?SNLu>aQK}B|4lf9qVzo@k_>EMA59aC;MtUGBmnn6oQI| z9ivg}K>DO2zr|;ife9awKb>bD97bnu{jRzsO~*K`EkjdT2USb{z1-hUo+>U?lIA%t zlgA}LklAyd?AhsYZy-dTJUxMb^JuCEqHOGQsgo=In{T%oKbD%ylIzBi6n&W%MOOA3 zS=pGYB>Q446>ppfd73=pO2G+R50X8lvVK|cQsayb)3Pr%ySeBm#Z+aQC&>5Vq~tju zpjxA;iFWb~f+C91E~eT)(8=sm1t@h;r?r!dUYe_2U>16_@TV84MecvW765G9jl0T1 z)pR6YYiRZsJ{f~VE(5_XSAfhS%_sWaC{MHUlA5?D0G?8J^mN1_BfX)>O5=lvg_17l zH$4+b{%p*ZHXhn)YNys_<8=j_zH^tUU;B&6sMdfG>cJP%4NLD(xdF0U{-P?T$v$-T z5Qrv2I&`oKU(+*M(R0Y*3wq{g@7!lDa4z#IC!=Rx<(}6n4Xmcbm%n#3wF^=k{{$2bocswS}Um}vPS z?zyf58%R?}`)o3yF$#lA=n9SC3!%#|Vcx^b77ZRc5<<7YJ_6msxQh6_3s9XO~egtR2bL5OpjfaTM)~~T- zT&G!X(QF15Hu(u?%R4}f3;3A$KyY;^^!F2ROQNk7sir>%DZm3e8Izym%2!CfK=KYK zOY@5?ET6%;!YoHv9J*$~3E>e0$zgNZtj!C#r3OOk-dHPpp;@{T58$P>agvyg)*`cd zwYG?mjc^btOE+>$FY;>a7M;ld+F>5+{Oqs}xOw*{H|jF?%o+Qy zalbPrHqc-U7nvSY8z9&2p`R=(zxT%w!9$$-H(bDp2y-IJNaTX|O9%YC z`zy&v6o8la7-cSmd7lydFbn2idzX}TQ8!=#>s=E>A)+DL`!yOM+Cem|(N2qYYqZxQ z!uGEz?!1L~7xwb~Jj`$9x2xFfc4f)B?BJSW76akQ!jNzgE0V)i$|;t?g-0JT3SSUi=YtU)jk%dMi7X?J>Y{!MamcJy6x@^pUm*bd%$ zaL~3tt64m$T1Qo_YI{>8_qa;N_GYV8wcPempz zWeXeBm&DGr-P!bPHk}{YP_Civ*54iV8Ahv@fB%@>k1w!rI!+5LO8iv7T=5qWPiuI# zTuE8P7tip&d%8s)#b^e~#I5|rmy^*WVL%Bmqf;gEMU*8zkP#Q7#wDJ~jnXiBCe>B^ z7_`O{Cimj0)|hw+!c?fq{qCZWSzK;4HxO5Hh9|}Eo>@GZOg>Lq_7B%v)xm27IQ1u$ zKs`5n<8?ej=>gekzdiENKlDHEP3=1lY`+P0xRm0usZy`iutiDjWj`>4IVUI^HtRx+Q(%;_DJCV54^W%`~Uy| literal 0 HcmV?d00001 diff --git a/blogging/migrations/__pycache__/0002_category.cpython-39.pyc b/blogging/migrations/__pycache__/0002_category.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ffbe58838c5ff7f37abfbad8499b669b8d043042 GIT binary patch literal 980 zcmYjQ%}(1u5VqIOpOXLudf}8yE9Fp>(nF=Hsz5(NL4;GK z_L>LjJM2I`!29Nahwj+>>J2>bkDYGimi9VbW`c|-D$cnS+Eg! zTY3A1ZrOE-nfN+NQ6%}uGy(Nc@rmV$OqKIA7MG?nkvi8V7?$xl>YMg`j+;kh>w0RH zoSBxw)TU8JVYxJGkK;y@bgJkg!Qvw1h)yoqlhq53DQHuZMQnZ8ZJByh_=zGDL=ly2 znj-0~DEd5&Q+or804FE_#gLpSW?eP=1s4al#)|sLF^wIfXwL>Pjs7TB3-tuA^HNA-=47Vq1FF*08zkx;yYnl)%h~j+C!x%cn~Qq&x;^hD5aOc>(dvu+wLZkY=!qp-Ua_fy!i>< z#Dlvk=#WfiLKsLh7#y06r_a}QnQw*uqnFJzw;p6_&B6?O*N;ZZ`j0-It20DWu8;1!m;QO= Nb{}w39(vDhz5x6#QHome

{{ post }}

@@ -14,4 +13,4 @@

{{ post }}

  • {{ category }}
  • {% endfor %} -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/blogging/templates/blogging/list.html b/blogging/templates/blogging/list.html index d8aa919..49993a4 100644 --- a/blogging/templates/blogging/list.html +++ b/blogging/templates/blogging/list.html @@ -3,7 +3,7 @@

    Recent Posts

    {% comment %} here is where the query happens {% endcomment %} {% for post in posts %}
    -

    +

    {{ post }}

    {% endfor %} -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/blogging/tests.py b/blogging/tests.py index 4250226..968254c 100644 --- a/blogging/tests.py +++ b/blogging/tests.py @@ -1,12 +1,8 @@ import datetime - +from django.utils.timezone import utc from django.test import TestCase from django.contrib.auth.models import User -from django.utils.timezone import utc - -from blogging.models import Post -from blogging.models import Category - +from blogging.models import Post, Category class PostTestCase(TestCase): fixtures = ['blogging_test_fixture.json', ] @@ -20,7 +16,6 @@ def test_string_representation(self): actual = str(p1) self.assertEqual(expected, actual) - class CategoryTestCase(TestCase): def test_string_representation(self): @@ -29,7 +24,6 @@ def test_string_representation(self): actual = str(c1) self.assertEqual(expected, actual) - class FrontEndTestCase(TestCase): """test views provided in the front-end""" fixtures = ['blogging_test_fixture.json', ] @@ -69,4 +63,4 @@ def test_details_only_published(self): self.assertEqual(resp.status_code, 200) self.assertContains(resp, title) else: - self.assertEqual(resp.status_code, 404) + self.assertEqual(resp.status_code, 404) \ No newline at end of file diff --git a/blogging/urls.py b/blogging/urls.py index 172a39c..f5bdfb9 100644 --- a/blogging/urls.py +++ b/blogging/urls.py @@ -1,7 +1,7 @@ from django.urls import path -from blogging.views import list_view, detail_view +from blogging.views import stub_view, list_view, detail_view urlpatterns = [ path('', list_view, name="blog_index"), path('posts//', detail_view, name="blog_detail"), -] +] \ No newline at end of file diff --git a/blogging/views.py b/blogging/views.py index b4bab4f..7464285 100644 --- a/blogging/views.py +++ b/blogging/views.py @@ -1,9 +1,31 @@ from django.shortcuts import render from django.http import HttpResponse, HttpResponseRedirect, Http404 from django.template import loader - from blogging.models import Post +def stub_view(request, *args, **kwargs): + body = "Stub View\n\n" + if args: + body += "Args:\n" + body += "\n".join(["\t%s" % a for a in args]) + if kwargs: + body += "Kwargs:\n" + body += "\n".join(["\t%s: %s" % i for i in kwargs.items()]) + return HttpResponse(body, content_type="text/plain") + +def list_view(request): + published = Post.objects.exclude(published_date__exact=None) + posts = published.order_by('-published_date') + template = loader.get_template('blogging/list.html') + context = {'posts': posts} + body = template.render(context) + return HttpResponse(body, content_type="text/html") + +# def list_view(request): +# published = Post.objects.exclude(published_date__exact=None) +# posts = published.order_by('-published_date') +# context = {'posts': posts} +# return render(request, 'list.html', context) def detail_view(request, post_id): published = Post.objects.exclude(published_date__exact=None) @@ -13,10 +35,4 @@ def detail_view(request, post_id): raise Http404 context = {'post': post} return render(request, 'blogging/detail.html', context) - - -def list_view(request): - published = Post.objects.exclude(published_date__exact=None) - posts = published.order_by('-published_date') - context = {'posts': posts} - return render(request, 'blogging/list.html', context) + \ No newline at end of file diff --git a/db.sqlite3 b/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..3e97e89a776c8529b1de8aa6c5e9969537763705 GIT binary patch literal 163840 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 literal 0 HcmV?d00001 diff --git a/mysite/__pycache__/urls.cpython-39.pyc b/mysite/__pycache__/urls.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..08bb3913f1216423da0b1a503340600edae69439 GIT binary patch literal 1342 zcma)6&2HO95GEz+kCqZA^`*DH$pmaNaSsKAwy2>dhykMwnz{i90`girCaH3FiQQEi z>zZ8i7Da(RLEeSeT-sMiFP&XcfLfqHC~-M6`*D80nI)Y}LJzO^AO5`lE%3Y#R@uKs zsCVO@v@jIVQ*u8gM#NLM?+78(Rv^})8yqAvIXD__yh{}%V@jG1_ zAXh(LlDQPOWxiI_lv0G@PX&MjI7J0PAoXV z@Hz>fyrvv|=~?)6EtWRBZCK~@aZJt`BUF%**HW1oA-76$!tWNeu3O_C{;b8jlCglj z3h`Aewm6D?u%Hiv&m8VfSuc+3iH&__k^ZI{TNK=5aiNubmT{_Rum&^VW zv$6P?>Vj<~D&NjnZRuyW=X530H$foZ+C!0Q^OOb3s_lyg}D~vlafTKhWENoMo zp4&uwVAah4RScMX^pnU>M*?1(MNM;PtTWvBKAJRx#RBJdu}JT=lp)hbl{X3xlh+*V z@u<3JQTQ?Nn$Q1@jp^DH+lf#;3+h`?U{7Kb*cLQ{w%N_W-hBSysUwTF%g5j6v+PQP z(iyEP5ZMm`zEkBZ$j+VmVp&L8WmhlpfBO8+6nJRnpiI`vXJ0%b7s4KFFyy(CxuP69 zl4IY<7Lv{7TH*11Db+98C1{Nv9(|deYhC7ogD_Ux)^%!IlWjjGyN4|!uJ4-RS6s4n a1>abH^g~>N2V?)xKkSZu`#bWF{{9Dx)vEpg literal 0 HcmV?d00001 diff --git a/mysite/__pycache__/wsgi.cpython-39.pyc b/mysite/__pycache__/wsgi.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3c477d4a6d8a47155ac69e46f279039c4923a28f GIT binary patch literal 662 zcmYjP&u`N(6i(7^Er9_C#M#$MG$}*kFinW69aYh2Cw0}NDpKmjuc?b;N4DG1UHKch z!v%?dh(p8;4)8B<;-z6yE&JJ@f4uj-@0lJQ`3|<e0DhS(*L>OK{MUJD@95K1z|)&klBHXz7`YQ8&?Gy_KFbDHOZ zC)9E!=X3P;rVOGq5H2xZwmTq7qH}J@f(v*?41mA1Ha90>$W&qiwxTjscbpQHg&@P@ z;CZ-IH&%rVa-p^vNE_aml!yKwRKppy+~P?JHZJ$#JsQQ+{@d @@ -24,4 +25,4 @@ - + \ No newline at end of file diff --git a/mysite/templates/login.html b/mysite/templates/login.html index 1566d0f..e1a56ee 100644 --- a/mysite/templates/login.html +++ b/mysite/templates/login.html @@ -6,4 +6,4 @@

    My Blog Login

    {{ form.as_p }}

    -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/mysite/urls.py b/mysite/urls.py index 446cd8f..ff9b5e6 100644 --- a/mysite/urls.py +++ b/mysite/urls.py @@ -1,3 +1,4 @@ +# mysite/urls.py """mysite URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: @@ -13,15 +14,16 @@ 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 path, include +from django.urls import path, include # <-- Make sure you have both of these imports. from django.contrib.auth.views import LoginView, LogoutView - urlpatterns = [ path('', include('blogging.urls')), - path('polling/', include('polling.urls')), - path('admin/', admin.site.urls), + path('polling/', include('polling.urls')), # <-- Add this + path('admin/', admin.site.urls), # <- already there path('login/', LoginView.as_view(template_name='login.html'), name="login"), path('logout/', LogoutView.as_view(next_page='/'), name="logout"), -] +] \ No newline at end of file diff --git a/polling/__pycache__/__init__.cpython-39.pyc b/polling/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6c7c00d07f47f7deac34533d35f0af838dea68ae GIT binary patch literal 262 zcmYjM!Ae6x4BUbT5&92%^-w7mJcx+p^&*HCO6eu=eEPz6?QT+%t?)icgnm%z%}?mf zle;SDkeOsc7)aCapO}p8VgFeAN0I;NWpk6MM_F1kGpD`#HzQ^JC!g=tCCn8?p$P#A z9tbDmUlGRNcJ{nv4lrNj8ce&iWU>`Xg5UXkG_<#rPzaNq3Oi|H^yI83`*Q*nZ$!~9 zSXOX{syShJ0b^C~C?cie+LwkL51s-$h@JX`u;vhQ5Y)9NpX&N--R+LABDb4>*X4;r GruhQyjZTsP literal 0 HcmV?d00001 diff --git a/polling/__pycache__/admin.cpython-39.pyc b/polling/__pycache__/admin.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5a0e59c2000a2d7ad5b85a96832a1df41aba1a3d GIT binary patch literal 376 zcmYjMO-lnY5KVTsrAXV~uz0eEmZIQ6L@et?5G|BaSc16i4ryvW$|M!~Z}g^rY4PUC zUm$pLw(Y?onY=eMOx`Oxog+qZ{PX$rNbgro{zpvYnyx>gRI-w5W_ZqdjUyeIIFC64 zzDiyj5Wm&+c*1(gH%+r1uNp;ZlqHaio!0lgX5KAVg_Ulwa5kWtV?={_cTHVo<-oWS zw8#3_D)A~n)k2WU2fz=8O)Brw?|XJ3rXJ9XLTj+%!NLuy7Z9Tzoh+8lX)&GA>5sQz z>1>(-264crXT$W?(ozc{9ix+27}6!R(OXY>g!a@KDFu(T!}smXexn&}vA;iNXg~k_`Z(l_{U)+&5t3tE?h!i06xXcg zIp^#RQ-KO^nF@iggYRJ;s_2wW;(N?v6W$K$MuB!qqPrF%ImYFlp#zq4#qt2cb)>io ze(*d-JWwcxc!)Sru^J#Asi8`4Sw2=HEHiGSd876HHx$8Qs8MZI;E2XT#)Kq1jj{P23)4yAP7 zN;#tL0(6XjNoin*4}sZauT7*hMGaE6V=3|MMiWk@{In@_AF*_{9Zgq-eO-Z8HtF~o z-1v^Skw@63)K>|8P8+*rW5K4F+6`{U?a?0H0J>I=#1fv;6Lh&rwY4pH@B#L^2dgM}kWwu5B8V2G6qbOlX4sA9rzB~$zJt#pzS82& zlRkooIO+D_kbL>RnaTX*-R@R^R{p%-eBt}y#eZv{IKgZC2rOVk1d?Qgcpi#SMp-1| zEG7XE7D2>fw($}nZ$Qj8Jukv+gEg;$wDpM@knQnrcEA=^=hbbkK;icXGo literal 0 HcmV?d00001 diff --git a/polling/__pycache__/views.cpython-39.pyc b/polling/__pycache__/views.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3aabca9b3d3d6c489924a523e0ffab1914568e7e GIT binary patch literal 970 zcmYjQPiqrF6rY*h&2G{*#0nywa*fa!v}h3#ODZTxTBx;jS*U4dNH&?>i8GVflr4yQ z^&<%FO+Syf#ha&o1-olEn0!S|@|(8U5k_w$lr}DFB$WTe!sO z@PUktZI5gsTdqc!+*c=KF|a0g`ci5{Z?W9h;=@cBoBIQmT5)QB5?zI(zdyQ9qXQ$f ziNIT=(QYbsbUYW)c46)hMoP)(;1J%8y@egAwAmHfMoazSqfYZR0P0lO=AKqV-A@uo zs~M-w(k1GunKq(%sPrUyBa8ur&f{p?n0S~bBDHAoaX%fZjT5PcQL-?x716T3Xda7? zrafKcRjl+FO&=0BSSz7*s#jngV42qgPXdslp`SoGTgQfup^2P+qv!09q<38cd(PrM zCHPqPGd&_H>yV6$JfTgiN#RVuQ z{4esAGH}siY^u2f6QPW*Lz`=?MjN!j>NH>h)p*ov1!1FPu5Ct2+riA5A|^l;ghCB= sS|l0Pm({fs#f3CwSs0~&x{(UrN?qg=JOkgE6wk3rgBh<6?}Z^(KQ z^qPxr;VbwkjWYd7di`qZ}yk(A_x~`A)WQIvpFx9B|*B8&PCt zna*J8BMU}kQhWg4xdb!P7E+ZJ;A>7e2{#|HfqsBZXIH5NmAi>&4z3)&)kZQ?Ghee~ zZNLO8#|DRsY#|*I#i}^<3jvbbqkh*n(<*eD`c|4Ea|;QmchdCzB9o;vqJ~hyVL`sb zVGfFe8Vj%nr$~HzSaon%a&E%%CECTt_R9o58cs5^R!_0OmD)K_4suu3A>)Y@}a)w0MB$L==@>ao~5toqcR`6sz(OM>F=lE|OFWp3|-VlsS*80y4E4fT=$&gbOWuIB7-8@{*|k>WssQCm#HX3c_0~x0JSmn| zI7sF=NDP$Ru3R!044$NGlD6kdQ|@vduYHK3Nf~8~1(ZGrHp=fe{lorNK1a9*(JI9@ fA60}_99G6#E>_wjjOCjzS2KE5QfCI2* z&6B$-=#ZIYLKsNX@1K~A_rw0N^p7I{(aYv0Q;)K=W@b)%_iskZ`cFQ$)g{aoMWG1+ z2_6V1;$IQQ-*)!AWDYQ2mh* zE?8D@hpIVYcmZQo?{{ poll.title }} -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/polling/templates/polling/list.html b/polling/templates/polling/list.html index 9cf4282..73b6747 100644 --- a/polling/templates/polling/list.html +++ b/polling/templates/polling/list.html @@ -1,3 +1,4 @@ +{# polling/templates/polling/list.html #} {% extends "base.html" %} {% block content %}

    Polls

    @@ -8,4 +9,4 @@

    {% endfor %} -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/polling/urls.py b/polling/urls.py index 9c4e2fd..6ef0686 100644 --- a/polling/urls.py +++ b/polling/urls.py @@ -1,7 +1,9 @@ +# polling/urls.py + from django.urls import path from polling.views import list_view, detail_view urlpatterns = [ path('', list_view, name="poll_index"), path('polls//', detail_view, name="poll_detail"), -] +] \ No newline at end of file diff --git a/polling/views.py b/polling/views.py index 6339808..ec672cf 100644 --- a/polling/views.py +++ b/polling/views.py @@ -1,3 +1,5 @@ +# polling/views.py + from django.shortcuts import render from django.http import Http404 from polling.models import Poll @@ -20,4 +22,4 @@ def detail_view(request, poll_id): poll.save() context = {'poll': poll} - return render(request, 'polling/detail.html', context) + return render(request, 'polling/detail.html', context) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 81580ab..0000000 --- a/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -Django==2.1.1 -pytz==2019.3 From df8b6ee2564ccd31a6d056db0f16b30c72e63567 Mon Sep 17 00:00:00 2001 From: allen maxwell Date: Mon, 19 Jul 2021 11:27:31 -0700 Subject: [PATCH 2/3] Assignment 7 --- blogging/__pycache__/admin.cpython-39.pyc | Bin 411 -> 787 bytes blogging/__pycache__/models.cpython-39.pyc | Bin 1573 -> 1493 bytes blogging/__pycache__/views.cpython-39.pyc | Bin 1702 -> 1623 bytes blogging/admin.py | 12 +++++++++--- blogging/models.py | 1 - blogging/views.py | 10 +--------- db.sqlite3 | Bin 163840 -> 163840 bytes 7 files changed, 10 insertions(+), 13 deletions(-) diff --git a/blogging/__pycache__/admin.cpython-39.pyc b/blogging/__pycache__/admin.cpython-39.pyc index bc88b4b8230e198e42f32fc2809c4756d89a3264..7fa70a4a3ae8f9545cc0833ffa6354b0a6a2b2f5 100644 GIT binary patch literal 787 zcmbVL!EVz)5Z$$%#0gEQ3LoHW4y`IUAR&Yr1qmTRh*VXTtd(3hJGficyXo!*ku!V< z9P<@?2flLZof9W!oK)n@$UB}lUd_CHvo43j0Ym%o^Y`V9Gxm$Xt|bUgarsMhl1Z*v z&2!F~jAX2%I?m%d$rH|AGnvTFS0+2aZ#rM%yo;Hx>|v(2&Comj)`u9n-y_bpD1ja! znVzvx{|>vb5pO!Btd+S#Mr;%{$;|rDq?0m0W!-8{n|3WiaEi-6Mh7hClI4-)GEzK` zWsHTBrcX7-RJG{@6*OR%B*5n|T_;Ui6sD}9D4Ic0)K)Gv#d}3@yDatg%cF&Zg*O*R1+ z#5R8N^dx&@0yqO9n>ky#vPQO5rcAckA|`g}JY*NveH3rOd#rHsOpLu(m8ro5Lh`0G zl|8!Bwi5Nqs{n%H3M+|L)Z@jecjG?R_832BAGK9Jz&PA!76 zX6pL)68#g)J*3fcAs!$4R@|t)988$Mgds<} zixfNJcISdIb}(}vly)iBk0M7ZJlU*E7qzh|>-a@tTeJ3b58rpCTVmnh^a}8p8l(x# G=mgGzH#y+| diff --git a/blogging/__pycache__/models.cpython-39.pyc b/blogging/__pycache__/models.cpython-39.pyc index b5f2bb73beb0980bcdb4cb68b58eb9ac2a6cb024..42ee348d54f9a2ac5a9b02254053136cd8b40b81 100644 GIT binary patch delta 205 zcmZ3=bCsJnk(ZZ?0SE+ceMu18$eYW|#SG**0CBO^#O=yv?hGlcDQqnaDQwM5Q5-4k zDI6^fQJg89!3>&Qw>X>=OH$MGizL3%_%gfN7dY{SeeA`fH>0dX@nT1rbO~ diff --git a/blogging/__pycache__/views.cpython-39.pyc b/blogging/__pycache__/views.cpython-39.pyc index e9eaf0521746719384578c1cf3ce7e1e301e1d49..89a08e9101d9307407bf4d8dfabeef3fefb9513d 100644 GIT binary patch delta 281 zcmZ3+d!2_bk(ZZ?0SFG?{*s`;vXPISnNf4H7;~AtI8ZQ|5hMi#EI=BBoq@PmXYy)h zX|WXM8m3IfTILd#8io{>8s=u^Ugmp@_ZaX5e7y+ zMlMDU#v=L2&sYi>B_>C(>as}z#fzjTce5%>f=r2G2U!`PnNlPRl28N@a+8m<%1ep? jnZmC65E)3`xCEs_TjDw7M?Oc~h#eRDdr delta 360 zcmXv~%}T>S5YA?I^HY;him0(-XzZa?YERxg2p&E90JUvm8cBcLY^9X+5j^d|YrP2K zMZtFwf-m4(I8$_%`DXU}hHsYra$a1o@46KY;?w-ON%@CoQu3;H=tHmvStYngx$|WIXEETH93L^rW+_4YFyHq?4qZ zrMWyE$#GWl*)*5=(w6Z;c99WPSkSgqlZ98fvviVJ_GCPsWqlb79VkI@#1Pvk+q3xq z>_%}U_VI50kCx_eIzd~p3%t5xLCt|iBOa;1u^>gLp4dI{mCZXw9W-&E&iRqQF*fmK ry)+U53QdHDTJXR>gf{m8&`KxOjiE(EOTF{kE&MnUBD7S)I3wOKl4VaA diff --git a/blogging/admin.py b/blogging/admin.py index abdcbaa..d51e404 100644 --- a/blogging/admin.py +++ b/blogging/admin.py @@ -1,5 +1,11 @@ from django.contrib import admin -from blogging.models import Post, Category +from .models import Post, Category -admin.site.register(Post) -admin.site.register(Category) \ No newline at end of file +class PostAdmin(admin.ModelAdmin): + prepopulated_fields = {'title':('text',)} + +class CatagoryAdmin(admin.ModelAdmin): + prepopulated_fields = {'name':('description',)} + +admin.site.register(Post, PostAdmin) +admin.site.register(Category, CatagoryAdmin) diff --git a/blogging/models.py b/blogging/models.py index a5fa0c1..f8d311f 100644 --- a/blogging/models.py +++ b/blogging/models.py @@ -18,7 +18,6 @@ def __str__(self): class Category(models.Model): name = models.CharField(max_length=128) description = models.TextField(blank=True) - posts = models.ManyToManyField(Post, blank=True, related_name='categories') class Meta: verbose_name_plural = 'Categories' diff --git a/blogging/views.py b/blogging/views.py index 7464285..b60220d 100644 --- a/blogging/views.py +++ b/blogging/views.py @@ -16,16 +16,8 @@ def stub_view(request, *args, **kwargs): def list_view(request): published = Post.objects.exclude(published_date__exact=None) posts = published.order_by('-published_date') - template = loader.get_template('blogging/list.html') context = {'posts': posts} - body = template.render(context) - return HttpResponse(body, content_type="text/html") - -# def list_view(request): -# published = Post.objects.exclude(published_date__exact=None) -# posts = published.order_by('-published_date') -# context = {'posts': posts} -# return render(request, 'list.html', context) + return render(request, 'blogging/list.html', context) def detail_view(request, post_id): published = Post.objects.exclude(published_date__exact=None) diff --git a/db.sqlite3 b/db.sqlite3 index 3e97e89a776c8529b1de8aa6c5e9969537763705..4829373fccaad56029e8c4a763495521bef50be0 100644 GIT binary patch delta 254 zcmZo@;A&{#njp>SFj2;t(P3jk$b1oVT|-L+14AnV3oBzYJp)Ta0|SH2C+6EYa53|^ zG4LJYZQ*g-tf*kYqtRr|%<9|1>X=ngn3rUdVUm?sQfO{uS!ryRUYTxIm}qX4XPA>* zk-z!XJ0?aE3ta;vgt>+WCYEL8=ih$#Kcj5}0D-?HF8}}l From 8b0131c48c1b7ecc421a4d55609f7321d395ce58 Mon Sep 17 00:00:00 2001 From: allen maxwell Date: Tue, 10 Aug 2021 20:00:46 -0700 Subject: [PATCH 3/3] Assignment 8 --- blogging/__pycache__/__init__.cpython-39.pyc | Bin 263 -> 263 bytes blogging/__pycache__/admin.cpython-39.pyc | Bin 787 -> 787 bytes blogging/__pycache__/apps.cpython-39.pyc | Bin 0 -> 487 bytes blogging/__pycache__/models.cpython-39.pyc | Bin 1493 -> 1493 bytes blogging/__pycache__/urls.cpython-39.pyc | Bin 493 -> 493 bytes blogging/__pycache__/views.cpython-39.pyc | Bin 1623 -> 1623 bytes .../migrations/0003_remove_category_posts.py | 17 +++ .../0003_remove_category_posts.cpython-39.pyc | Bin 0 -> 638 bytes db.sqlite3 | Bin 163840 -> 245760 bytes mysite/__pycache__/__init__.cpython-39.pyc | Bin 261 -> 261 bytes mysite/__pycache__/settings.cpython-39.pyc | Bin 2441 -> 2696 bytes mysite/__pycache__/urls.cpython-39.pyc | Bin 1342 -> 1381 bytes mysite/__pycache__/wsgi.cpython-39.pyc | Bin 662 -> 662 bytes mysite/settings.py | 19 ++- mysite/urls.py | 1 + polling/__pycache__/__init__.cpython-39.pyc | Bin 262 -> 262 bytes polling/__pycache__/admin.cpython-39.pyc | Bin 376 -> 376 bytes polling/__pycache__/apps.cpython-39.pyc | Bin 0 -> 484 bytes polling/__pycache__/models.cpython-39.pyc | Bin 726 -> 726 bytes polling/__pycache__/urls.cpython-39.pyc | Bin 471 -> 471 bytes polling/__pycache__/views.cpython-39.pyc | Bin 970 -> 970 bytes tutorial/manage.py | 22 +++ tutorial/quickstart/__init__.py | 0 tutorial/quickstart/admin.py | 3 + tutorial/quickstart/apps.py | 6 + tutorial/quickstart/migrations/__init__.py | 0 tutorial/quickstart/models.py | 3 + tutorial/quickstart/serializers.py | 14 ++ tutorial/quickstart/tests.py | 3 + tutorial/quickstart/views.py | 25 ++++ tutorial/tutorial/__init__.py | 0 tutorial/tutorial/asgi.py | 16 +++ tutorial/tutorial/settings.py | 131 ++++++++++++++++++ tutorial/tutorial/urls.py | 32 +++++ tutorial/tutorial/wsgi.py | 16 +++ 35 files changed, 307 insertions(+), 1 deletion(-) create mode 100644 blogging/__pycache__/apps.cpython-39.pyc create mode 100644 blogging/migrations/0003_remove_category_posts.py create mode 100644 blogging/migrations/__pycache__/0003_remove_category_posts.cpython-39.pyc create mode 100644 polling/__pycache__/apps.cpython-39.pyc create mode 100644 tutorial/manage.py create mode 100644 tutorial/quickstart/__init__.py create mode 100644 tutorial/quickstart/admin.py create mode 100644 tutorial/quickstart/apps.py create mode 100644 tutorial/quickstart/migrations/__init__.py create mode 100644 tutorial/quickstart/models.py create mode 100644 tutorial/quickstart/serializers.py create mode 100644 tutorial/quickstart/tests.py create mode 100644 tutorial/quickstart/views.py create mode 100644 tutorial/tutorial/__init__.py create mode 100644 tutorial/tutorial/asgi.py create mode 100644 tutorial/tutorial/settings.py create mode 100644 tutorial/tutorial/urls.py create mode 100644 tutorial/tutorial/wsgi.py diff --git a/blogging/__pycache__/__init__.cpython-39.pyc b/blogging/__pycache__/__init__.cpython-39.pyc index ad624ac1a7d2e7b34ecfce9e4913aefed3de2683..d8e73f90a3605722e9e8f1889957f8ba9da39620 100644 GIT binary patch delta 25 gcmZo?YG<0Tm)|1BvA8%hJuf#kuSCJXV&WNV0CW8bJOBUy delta 25 gcmZo?YG<0Tm)|VLvA8%hJuf#kuSCJXY~mSf0CUj^H~;_u diff --git a/blogging/__pycache__/admin.cpython-39.pyc b/blogging/__pycache__/admin.cpython-39.pyc index 7fa70a4a3ae8f9545cc0833ffa6354b0a6a2b2f5..d01999ba642db188401ddad7eb9773e1f90603d1 100644 GIT binary patch delta 28 jcmbQtHkob1Ax3_S7{}t`%=En6)VvY}1B=ZU8J!pbkV^@& delta 28 jcmbQtHkob1Ax3`l7{}t`%=En6)VvY}1M|%n8J!pbkTD6c diff --git a/blogging/__pycache__/apps.cpython-39.pyc b/blogging/__pycache__/apps.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..62cd420bf8d9b5d441eede5036dd973d51336d60 GIT binary patch literal 487 zcmYjOPfNov6i?a;-Q2{Fkn0W`LoXsCn-xTmIT&M50$E*RS8bD;bc3Ds!|2^lQ@nZd zD~JbQ+KGE4zxRH5e|YaDYPXvR5*5g_IhI9k!SMdEBoYJWg+R!LXg`~Gq zT$gfyHJUrkTtDkWC43 delta 28 jcmcc0eU*EIE)&0bjAL$gf%#?|rkTtDkTVHy diff --git a/blogging/__pycache__/urls.cpython-39.pyc b/blogging/__pycache__/urls.cpython-39.pyc index 95417fcb1a514f1d3f5a4791edba987bdd5196a7..58fe01795542f82f1f8c0a55b575fa05466de320 100644 GIT binary patch delta 27 icmaFM{FZscd`5nY7{}t`%=En6)VvY}1B=P)80`U+T?zI8 delta 27 icmaFM{FZscd`5or7{}t`%=En6)VvY}1M|u280`U+MG5o( diff --git a/blogging/__pycache__/views.cpython-39.pyc b/blogging/__pycache__/views.cpython-39.pyc index 89a08e9101d9307407bf4d8dfabeef3fefb9513d..766b077317d5d499dcfa9eb70650e531df55393d 100644 GIT binary patch delta 28 jcmcc4bDd{{9uvPsjAL$gfyHK9CMgyGkP8U= delta 28 jcmcc4bDd{{9uvQLjAL$gf%#@zCMgyGkMRik diff --git a/blogging/migrations/0003_remove_category_posts.py b/blogging/migrations/0003_remove_category_posts.py new file mode 100644 index 0000000..ae14874 --- /dev/null +++ b/blogging/migrations/0003_remove_category_posts.py @@ -0,0 +1,17 @@ +# Generated by Django 2.1.1 on 2021-08-11 00:28 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('blogging', '0002_category'), + ] + + operations = [ + migrations.RemoveField( + model_name='category', + name='posts', + ), + ] diff --git a/blogging/migrations/__pycache__/0003_remove_category_posts.cpython-39.pyc b/blogging/migrations/__pycache__/0003_remove_category_posts.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..47b9685a01a6ea1537e6ca27f7d1105f6304702a GIT binary patch literal 638 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 n}O&pq^^6DO_h<1bj-pcT9`atyxB)G# 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 B>{9>$ delta 3782 zcmcIn4Qw0L9lv*H$2ot!rfurcG>Jp=QAnNKw|&m~;e0r8QrmTKK5WENCwA;}&UQZB z#E!PQwz7pXptLu*O+qS6oiw!?R2VHV27|FNX=sB18Vqfsn=~ON70{%OX)v+pq@^VV zRfz3$zVmy(|9kKM`QGo2ABV?}>+h?pIf!A{9`w6%4W8P|(g(4Qq5HI`3&0O6fCYYN zYBc=Iu*dKe`MT}{@@&;Fw36n2;$4EkN5FTnHv~AEZ@OUG{p%lR9@cMxZ?`MI-DHc zAu;ip|R1Vee-3+lbPf^Q_NTIFEpjsgjPhndOBiW5f{V)I)}L>oCNXX0^`DigDrh3vK}q8+T`v$6SQgN%8qe7EQ9SRgVf8 zBjGRx--RzC&7OwCFaaNe%kbOfnj;RV3?F!G2MGfhyafLMe+_>M&%nE29>!q+;dZD5 z{AHpU6`Jm_2i3+ujb-;8&){Xv#g7`l|Lm3rthiQZeiDO+%}*lnADM~bc3hFq++5&? z7UqU?LNqoyl5LiILt#3T7`69^f!Xn3(mtK^cC$UPUe=Xm=2$xI@OCrPozYOIW8X%- ztQQ~caMHAs7dkk*D2SY^66EV(hV2j-juyD04VbXvEiTexIzSdkmuYr#COXYbEF>Zf zFErB(3OCh!SdPbsl0GjR3&xuV4uzL{``YJn?c<#pIzP;g4+z2DfD}mg`-igfVqiHc zWP~}N%w|5(ix#aE?W7z|R_LHa8qFDz9%9+ee$5bZu=?#Em zok(Ne&hb2tVuRuEQpNQjpoIA|+)5G_ux=(^O<2gvoaK)n)mn*WXj61AdytF&WL9i% zy{;#WZp{31(~8lJg5oe1N?nB3yP|a^b93oQF2ND1 z6819Karct^S()DSf1<~OoW)MJedkehk6F5*X7(IJ;jXX z$C*T8iix8|2UGsuz>;swlM9cHu)frw98MJid0#S`^!ASAyur|tFBPKv!BNTAJHq?= zJxnO&PI%JPhU?}emey#)a zmmT;e{a5%x4orrEfn{&Xm+~c1bbDtg|5$(z2Z!ZQGJq@_O!)h~v^N;%Ldzpec&v}} zCcWHM|JiK}YrR^VA}xpovD5|D9msQz$l_Ew!A4`Lq$4{$=b)!1BQY^fWtm(&#{7R0 zu;BiZ4*Wv?yFLNCQ(q(j?KYaL5D1EOvSJ5MF(Sw4%i!Y2{?qqqZrzGKjlpK~E9L`c zz439w*Yy^1Z}l`W&opM<;hWD!qs^1N=L~&1}IxqwJK%IK; z445KQ4LXa>23Ae#zh^)Ts9&?nzy!1t6B#+GUUY$0^|lmXu5F)BfxT*>5Bx^0?gmfk zkJcjoM!G<$U9IT`d(?k)gF)5R4R)$jHy|s`IhaW~!#G)0$Pr@nXu>;_Hhdq=>7 z=u8yUgXi#lz^WcQhmUFbDvSS?%IaTH|9%c{&@>hWPThVU-vgkEf>f&xpT~1mG+Slq zYur%sd-vcw0JC=C9{fB2ZOSF0M?G^AZ&oi(gZ*TnbrW@NQRm{I_6mQtSGVXa?d@O% zoHp(T4Qf*Yd}wwze+HYT)wG1hZBXk^D7EsMsTTL_R^O4pi`7=0#gE87t@>xc4)v8J zGU=Wf^w>HBSPeSPZdE-qpjA`cyI-d^uHu6zZ5}#{Thu3x0JC~>74Om%9s6|ZZ&z_2 zXuAe_e-*D)$L_>C^u@`q>MVsWP_n2e??fLOt;(EfyZY!6^wEHXOlrdkB>C_vZdG%4 z;zsqz3EZeD-PWa3XHVcFXjwaV0^bRMQ@#BWyaP0=cRhmNi|a*o`Yb|sS5`a>F4x+# z2JJ4Sa$ULR_+7WHc{IPv{jJpoT+@Q?5`Tti3n3M@1eUT~vR zmZ%8b=qSN=6JGL0+hv6!5b!Jp{{o*!FAOVhpH<);4TKA9@QTkm%!sS-XYAD?UQf8l zD?IA@oyfEXF5ucNno}4&g-l+Bg%qg9+D2S1jP&NMZfSlYYdwruYc?S*SkawL#H`cn zy%jEN^|URXB6q+&CGA7SWTzt&KZy$>I|ps`kH HXXk$b(swxi diff --git a/mysite/__pycache__/__init__.cpython-39.pyc b/mysite/__pycache__/__init__.cpython-39.pyc index c42043ee4c83d28f0e71a37c791375f9c7ea6275..41ef1e70d0697a132dafb549bffcbb7ce1a6d73b 100644 GIT binary patch delta 25 gcmZo=YGsKvtkoW_TSUA#ziFlJXX;&}CSqZLsMItkG4trS1Yg%5`pk`4u2!WE@|e zrwy2}(3g%U!z2=8Cl(2hsm6kUoh2_*bM|nU=gG4$Nt<&bmY!h2oZkE|?YxTQYXLlp zonz+lv6LqrExk9BJQZ+l=Rct9uVjQ#C)+JF9*voI!b6CiLkT?CzlqZO^XW4==kIQ# zf3>cPc$f%}B|?U?rfgliWBowt3)13_+T&ORe5Ye)UF~i5U0W-Vi4Q@h)0xzC0V zdxK&Bz#aCV3`YCz!QZ2)bCo7#J#T9yPcSLymR=$RBb+@gZnkSUkAIUzmAJ75f~JQ503)BBD*ylh delta 297 zcmeAW?G)xq5Nf)DZEkqDSRpXaFqfJnNkGjFl91E38V<62m@6LrHFt@Q7|c%$(YU( zC72=}C6po&C7i+%B?82vKrEIb86}<~6(x}(9VMB<6wIK>D6{cT4kIJScOo12*z zF>+N2PEPxssts z3FxOHrO5@HRs7~Lj>W~9>3O-Sc_j)4=97PNno9ZrrCE45m}S^mm|2)uSUI>kxL8=2 V82Ki7+6gH b&SEGb0yLjRkcUx#QGl6;5d=kmkmnZw3n+a diff --git a/mysite/__pycache__/wsgi.cpython-39.pyc b/mysite/__pycache__/wsgi.cpython-39.pyc index 3c477d4a6d8a47155ac69e46f279039c4923a28f..e3e9d76927adcd0f791d7e953ffb52dca229fb99 100644 GIT binary patch delta 27 icmbQnI*oOM7ZblljAL$gfyLxVCR+e{-3X!p delta 27 icmbQnI*oOM7Zbl(jAL$gf!X9pCR+e{tq7g~ diff --git a/mysite/settings.py b/mysite/settings.py index 2e76d9b..0535a59 100644 --- a/mysite/settings.py +++ b/mysite/settings.py @@ -40,6 +40,13 @@ 'django.contrib.staticfiles', 'polling', 'blogging', + + 'django.contrib.sites', + + 'allauth', + 'allauth.account', + 'allauth.socialaccount', + 'allauth.socialaccount.providers.facebook', ] MIDDLEWARE = [ @@ -57,7 +64,7 @@ TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [os.path.join(BASE_DIR, 'mysite/templates')], # <- Make DIRS look like this + 'DIRS': [],#os.path.join(BASE_DIR, 'mysite/templates')], # <- Make DIRS look like this 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ @@ -102,6 +109,13 @@ }, ] +AUTHENTICATION_BACKENDS = [ + # Needed to login by username in Django admin, regardless of `allauth` + 'django.contrib.auth.backends.ModelBackend', + + # `allauth` specific authentication methods, such as login by e-mail + 'allauth.account.auth_backends.AuthenticationBackend', +] # Internationalization # https://docs.djangoproject.com/en/2.1/topics/i18n/ @@ -123,3 +137,6 @@ STATIC_URL = '/static/' LOGIN_URL = '/login/' LOGIN_REDIRECT_URL = '/' +SITE_ID = 1 + +LOGIN_REDIRECT_URL = '/profile/' \ No newline at end of file diff --git a/mysite/urls.py b/mysite/urls.py index ff9b5e6..96b41b5 100644 --- a/mysite/urls.py +++ b/mysite/urls.py @@ -26,4 +26,5 @@ path('admin/', admin.site.urls), # <- already there path('login/', LoginView.as_view(template_name='login.html'), name="login"), path('logout/', LogoutView.as_view(next_page='/'), name="logout"), + path('accounts/', include('allauth.urls')), ] \ No newline at end of file diff --git a/polling/__pycache__/__init__.cpython-39.pyc b/polling/__pycache__/__init__.cpython-39.pyc index 6c7c00d07f47f7deac34533d35f0af838dea68ae..ee000fd8497a594323cbc7d9e3a7c4e4d32f602a 100644 GIT binary patch delta 25 gcmZo;YGazPm)|1BvA8%hJuf#kuSCJXV&WMq0CUU$gfyHE7Mr#0zS_vco delta 27 icmeyt^n+=G9wWb5jAL$gf!SnRMr#0zDhVI} diff --git a/polling/__pycache__/apps.cpython-39.pyc b/polling/__pycache__/apps.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..565d301d0d9fc76385357e80c6f53a7fc361eefa GIT binary patch literal 484 zcmYjO%}N6?5KeYiY-$`{-A87IB z$+I_4PIe1+NWPgb^TW&}?sQrRn#ZoI03RBRneRMn^SE>+3iGoawPE4F-&>u+^sY7U}SH=o5 z*XD^{3u~dm;DnB>O%s&~RXD~UW0mOMz0?WKHa0B;-A+d1Jh%OPV|-}Y?b~_)4P5at gY~-NM?YlVRe3j>a!rF5GST@e;wVb;xS9RL{AHOev?*IS* literal 0 HcmV?d00001 diff --git a/polling/__pycache__/models.cpython-39.pyc b/polling/__pycache__/models.cpython-39.pyc index 1fcd1e050c0461832e9493411fbc842ff9213df4..6dad65b5bdb237135d6da6d3a2c7e493b0ad62dd 100644 GIT binary patch delta 28 jcmcb{dX06%B1V3T7{}t`%=En6)VvY}1B=ZY8C4kpnx6^T delta 28 jcmcb{dX06%B1V3*7{}t`%=En6)VvY}1GCK=8C4kpnrjKw diff --git a/polling/__pycache__/urls.cpython-39.pyc b/polling/__pycache__/urls.cpython-39.pyc index 472e27e4a9e8ba8c16b5c706445cdd4b985b50a5..d7f70223b47e5b7736ebf1a39e0e04eca6994f15 100644 GIT binary patch delta 27 icmcc4e4Tki7bCw#jAL$gfyLyRjCKHx*9o5h delta 27 icmcc4e4Tki7bCw}jAL$gf!XAljCKHxrwN+? diff --git a/polling/__pycache__/views.cpython-39.pyc b/polling/__pycache__/views.cpython-39.pyc index 3aabca9b3d3d6c489924a523e0ffab1914568e7e..8a049d4461dac1814ad3059e6ac01ad91e432018 100644 GIT binary patch delta 34 qcmX@beu{lVHzU7AjAL$gfyL%oj5`?_Z%qziE&~AENDO8G delta 34 qcmX@beu{lVHzU7UjAL$gf!XF+j5`?_qb7$imjM9Td<)_L diff --git a/tutorial/manage.py b/tutorial/manage.py new file mode 100644 index 0000000..07a69d9 --- /dev/null +++ b/tutorial/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tutorial.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() diff --git a/tutorial/quickstart/__init__.py b/tutorial/quickstart/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tutorial/quickstart/admin.py b/tutorial/quickstart/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/tutorial/quickstart/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/tutorial/quickstart/apps.py b/tutorial/quickstart/apps.py new file mode 100644 index 0000000..98ec0c9 --- /dev/null +++ b/tutorial/quickstart/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class QuickstartConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'quickstart' diff --git a/tutorial/quickstart/migrations/__init__.py b/tutorial/quickstart/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tutorial/quickstart/models.py b/tutorial/quickstart/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/tutorial/quickstart/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/tutorial/quickstart/serializers.py b/tutorial/quickstart/serializers.py new file mode 100644 index 0000000..695f76b --- /dev/null +++ b/tutorial/quickstart/serializers.py @@ -0,0 +1,14 @@ +from django.contrib.auth.models import User, Group +from rest_framework import serializers + + +class UserSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = User + fields = ['url', 'username', 'email', 'groups'] + + +class GroupSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Group + fields = ['url', 'name'] \ No newline at end of file diff --git a/tutorial/quickstart/tests.py b/tutorial/quickstart/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/tutorial/quickstart/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/tutorial/quickstart/views.py b/tutorial/quickstart/views.py new file mode 100644 index 0000000..3764924 --- /dev/null +++ b/tutorial/quickstart/views.py @@ -0,0 +1,25 @@ +from django.shortcuts import render + +# Create your views here. +from django.contrib.auth.models import User, Group +from rest_framework import viewsets +from rest_framework import permissions +from tutorial.quickstart.serializers import UserSerializer, GroupSerializer + + +class UserViewSet(viewsets.ModelViewSet): + """ + API endpoint that allows users to be viewed or edited. + """ + queryset = User.objects.all().order_by('-date_joined') + serializer_class = UserSerializer + permission_classes = [permissions.IsAuthenticated] + + +class GroupViewSet(viewsets.ModelViewSet): + """ + API endpoint that allows groups to be viewed or edited. + """ + queryset = Group.objects.all() + serializer_class = GroupSerializer + permission_classes = [permissions.IsAuthenticated] \ No newline at end of file diff --git a/tutorial/tutorial/__init__.py b/tutorial/tutorial/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tutorial/tutorial/asgi.py b/tutorial/tutorial/asgi.py new file mode 100644 index 0000000..bb7e5c8 --- /dev/null +++ b/tutorial/tutorial/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for tutorial 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.2/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tutorial.settings') + +application = get_asgi_application() diff --git a/tutorial/tutorial/settings.py b/tutorial/tutorial/settings.py new file mode 100644 index 0000000..ff36051 --- /dev/null +++ b/tutorial/tutorial/settings.py @@ -0,0 +1,131 @@ +""" +Django settings for tutorial project. + +Generated by 'django-admin startproject' using Django 3.2.6. + +For more information on this file, see +https://docs.djangoproject.com/en/3.2/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/3.2/ref/settings/ +""" + +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'django-insecure-b&$y003z_h!@v)6tpm%r+do1---2kkagmky5t0#d4e_s&-xfh=' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'rest_framework', +] + +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 = 'tutorial.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 = 'tutorial.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/3.2/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/3.2/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.2/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.2/howto/static-files/ + +STATIC_URL = '/static/' + +# Default primary key field type +# https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + +REST_FRAMEWORK = { + 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', + 'PAGE_SIZE': 10 +} diff --git a/tutorial/tutorial/urls.py b/tutorial/tutorial/urls.py new file mode 100644 index 0000000..e931261 --- /dev/null +++ b/tutorial/tutorial/urls.py @@ -0,0 +1,32 @@ +"""tutorial URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/3.2/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 +from rest_framework import routers +from tutorial.quickstart import views + +router = routers.DefaultRouter() +router.register(r'users', views.UserViewSet) +router.register(r'groups', views.GroupViewSet) + +# Wire up our API using automatic URL routing. +# Additionally, we include login URLs for the browsable API. +urlpatterns = [ + path('admin/', admin.site.urls), + path('', include(router.urls)), + path('api-auth/', include('rest_framework.urls', namespace='rest_framework')) + +] diff --git a/tutorial/tutorial/wsgi.py b/tutorial/tutorial/wsgi.py new file mode 100644 index 0000000..3d57e0c --- /dev/null +++ b/tutorial/tutorial/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for tutorial 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.2/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tutorial.settings') + +application = get_wsgi_application()