From 01be793027947eecf5c349f4da4a294e31ab62f0 Mon Sep 17 00:00:00 2001 From: Erica Date: Mon, 27 Mar 2017 08:51:56 -0500 Subject: [PATCH] add fixed, working dojo secrets project --- .DS_Store | Bin 6148 -> 10244 bytes .../Assignments/Python/Django/sports_orm | 1 + .../Assignments/Python/Django/sports_orm_ii | 1 + .../dojo_secrets_project/apps/__init__.py | 0 .../dojo_secrets_project/apps/__init__.pyc | Bin 0 -> 164 bytes .../apps/dojo_secrets/__init__.py | 0 .../apps/dojo_secrets/__init__.pyc | Bin 0 -> 177 bytes .../apps/dojo_secrets/admin.py | 3 + .../apps/dojo_secrets/admin.pyc | Bin 0 -> 234 bytes .../apps/dojo_secrets/apps.py | 7 + .../dojo_secrets/migrations/0001_initial.py | 48 ++++++ .../dojo_secrets/migrations/0001_initial.pyc | Bin 0 -> 1766 bytes .../migrations/0002_auto_20170320_1743.py | 20 +++ .../migrations/0002_auto_20170320_1743.pyc | Bin 0 -> 830 bytes .../apps/dojo_secrets/migrations/__init__.py | 0 .../apps/dojo_secrets/migrations/__init__.pyc | Bin 0 -> 188 bytes .../apps/dojo_secrets/models.py | 153 ++++++++++++++++++ .../apps/dojo_secrets/models.pyc | Bin 0 -> 7121 bytes .../templates/dojo_secrets/index.html | 45 ++++++ .../templates/dojo_secrets/secrets.html | 105 ++++++++++++ .../apps/dojo_secrets/tests.py | 3 + .../apps/dojo_secrets/urls.py | 16 ++ .../apps/dojo_secrets/urls.pyc | Bin 0 -> 860 bytes .../apps/dojo_secrets/views.py | 102 ++++++++++++ .../apps/dojo_secrets/views.pyc | Bin 0 -> 4662 bytes .../dojo_secrets_project/db.sqlite3 | Bin 0 -> 163840 bytes .../dojo_secrets_project/__init__.py | 0 .../dojo_secrets_project/__init__.pyc | Bin 0 -> 180 bytes .../dojo_secrets_project/settings.py | 121 ++++++++++++++ .../dojo_secrets_project/settings.pyc | Bin 0 -> 2677 bytes .../dojo_secrets_project/urls.py | 22 +++ .../dojo_secrets_project/urls.pyc | Bin 0 -> 1006 bytes .../dojo_secrets_project/wsgi.py | 16 ++ .../dojo_secrets_project/wsgi.pyc | Bin 0 -> 664 bytes .../dojo_secrets_project/manage.py | 22 +++ 35 files changed, 685 insertions(+) create mode 160000 erica_snider/Assignments/Python/Django/sports_orm create mode 160000 erica_snider/Assignments/Python/Django/sports_orm_ii create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/__init__.py create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/__init__.pyc create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/__init__.py create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/__init__.pyc create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/admin.py create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/admin.pyc create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/apps.py create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/0001_initial.py create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/0001_initial.pyc create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/0002_auto_20170320_1743.py create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/0002_auto_20170320_1743.pyc create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/__init__.py create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/__init__.pyc create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/models.py create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/models.pyc create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/templates/dojo_secrets/index.html create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/templates/dojo_secrets/secrets.html create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/tests.py create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/urls.py create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/urls.pyc create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/views.py create mode 100644 erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/views.pyc create mode 100644 erica_snider/Assignments/dojo_secrets_project/db.sqlite3 create mode 100644 erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/__init__.py create mode 100644 erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/__init__.pyc create mode 100644 erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/settings.py create mode 100644 erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/settings.pyc create mode 100644 erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/urls.py create mode 100644 erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/urls.pyc create mode 100644 erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/wsgi.py create mode 100644 erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/wsgi.pyc create mode 100755 erica_snider/Assignments/dojo_secrets_project/manage.py diff --git a/.DS_Store b/.DS_Store index 4c0ce55b3d0fc1b43824e197ded2e31bb79dc77d..45ecbd03f359b79ef3edc795467f036db219d5ee 100644 GIT binary patch literal 10244 zcmeHM&ubGw6n@)QO>4#Y6QLd!da+P6vDzGsG2*3SA<`;VVm7-ZtI2NIY#M5b%|WpE z7kKjE@0?|_@043AV zlK?6J#ITZ$4`UNj=swjz>GQ6fL#v=aR7%NQ(XQ44NO?gjAQg}bNCl(vX{~X3V;&nHAGr7-S_MKef0xIdOhmO-`g*~@kg=P$k@fp*KgNa zPhY%z_4>`*cOO?s0sIbo-)lI=e|OqX*ozcMe9(PgzW?rq6&~=~%3~HkGOqCY^u&q} zwEx;y3LF`CKId2!+bSW3@*Rfz_{gjH_-Ubdz@~Bq+XXQ%3Wy~V>&t7T7q&BD*H(I9 z#k^Ql&VjhrJCn7H{2l)X0j9=AJ-(sX2)+^6P`;s9AKx2{aSSyzQQthiS~e~d{)OSm z&=jHqm=Jy;m;kQ;#>ZzlO@xNnqD8NIq3en{JP@&{Mr;SG~Tv%iVZ9qsen{KDj*e*3P=TZt3W>w zpwjvO)#(5KcRP&qmkLM)_OJrVKsJ}nAi=G@`gX2#)~;f`hm{K9+T1c1Y}j!;T6P?d zKj=9A3|7J>$Wp<6+OutL@d}oI@MplP-2XG_Swm+Kp?h!Nd4=5nv$F=@{`LRe|NjBz CBebso delta 127 zcmZn(XfcprU|?W$DortDU=RQ@Ie-{MGqg=i6q~50D9Q+A12Isnh#`|92?%o-QYR*= zGcs=Om8fFh%*MgUA;=8U0aU~dBwT^GZDZnh=E?jjx||^G2Y{GivJH>)J diff --git a/erica_snider/Assignments/Python/Django/sports_orm b/erica_snider/Assignments/Python/Django/sports_orm new file mode 160000 index 0000000..0fc2460 --- /dev/null +++ b/erica_snider/Assignments/Python/Django/sports_orm @@ -0,0 +1 @@ +Subproject commit 0fc2460d5c9c0cef89a340db7cbee46a9dd72eb5 diff --git a/erica_snider/Assignments/Python/Django/sports_orm_ii b/erica_snider/Assignments/Python/Django/sports_orm_ii new file mode 160000 index 0000000..0fc2460 --- /dev/null +++ b/erica_snider/Assignments/Python/Django/sports_orm_ii @@ -0,0 +1 @@ +Subproject commit 0fc2460d5c9c0cef89a340db7cbee46a9dd72eb5 diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/__init__.py b/erica_snider/Assignments/dojo_secrets_project/apps/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/__init__.pyc b/erica_snider/Assignments/dojo_secrets_project/apps/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b98d5594567f38981f3601fbc5a1eec1c10b5ebc GIT binary patch literal 164 zcmZSn%*)lsd?6y40SXv_v;z!R ziA5>;F8Rr&xv6<2#rgr2B^mj7`Yu_CdFlE3DfwCX@x`ghMX4pl@dZWsS*gh-`iTVv j#rpB_nR%Hd@$q^El_eZN6K!(yQ%ZAE?LhVx12F>t%-Sdr literal 0 HcmV?d00001 diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/__init__.py b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/__init__.pyc b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5f41bef5e4ff0c26f16f830d812b2915a9be50e9 GIT binary patch literal 177 zcmZSn%*!>G`9ef80~9a~w^b-pT licw_rTT;-YI2MHDxsCP7o051AC{VZ4)f@c=q4Zu*#c^J8XS z_F2qd+4~~d9}|jOa$FH9GR_*tEN55FxSFt|$Y@}`1i>jwQ=&>)<94FoO-mwGSMKg} z>0OHEcAyRuW5P4la6%mso~BWshY8iFHGDKf%nV<>* YM-v!S;kPW#9FhGmm#^t?y`<@ zDv-WX-=pu+2WV%8lH~$9D7rA|0d_zqkoRF00e0aJfOi1DPWpfeTnu`Y)BHof zK}1s6r=_XP)S}J`6SPx>AH;0gqNOx*r-HGS4;)vLSK)sMnTJUclC%pyA zEO=p|>60iJtqYt+7?DD4l~I5WZJ|yVf>R2W?`V;=DSVJ`%QgoTjyAU|{ZNYGq=k8{ zeY3liaOE&KB28elnc&JY0h(p>Q8tC9EmL{v8XXv>sZ1d1g-6u2u25G~qy1REdhXS! z^zEDr9SbO?>4Z9Z#(kFh&ge4GQr{)DsMRyD5mk3-O5JKW?(|x@cE<=$5ZevcerBCE z^XhvV38oTrRn4u?fLBtF5Jz{6;66RMI6WDC8~8FgSJmRu^19AuYr3N3MjDU@tQT)+ zn=*?&y)gw&mBVyor%kD=;M1QL;o4T|NKQ}hGN0AX=6V`ZRoDJMmUMmnrN_s|FR~@6 z!+J61JDLmkU(wQw>FI1nz4(i0FFJ}IC#`%$a{GuT>P271WT9ukG%XuAYeM6wfn!pE zu-$Sr#4G7m+nq;bywwlen|QdQZv2F-f@w{NNdGS@($1IdK)zyzJa>FQei-c}{{ng` BmfQdU literal 0 HcmV?d00001 diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/0002_auto_20170320_1743.py b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/0002_auto_20170320_1743.py new file mode 100644 index 0000000..00a678f --- /dev/null +++ b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/0002_auto_20170320_1743.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.6 on 2017-03-20 17:43 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('dojo_secrets', '0001_initial'), + ] + + operations = [ + migrations.RenameField( + model_name='secret', + old_name='text', + new_name='secret', + ), + ] diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/0002_auto_20170320_1743.pyc b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/0002_auto_20170320_1743.pyc new file mode 100644 index 0000000000000000000000000000000000000000..228bda367859d07709f3af28522747e6e139ce4d GIT binary patch literal 830 zcmc&z!EV$r5S_%?E!%>$2RZ0h`nf1^_ z<6Vd|g71IBKg15mdy$AO$v{Ya^Z~4iSiU1c)QAxApxgB{*^eO7feF+%(L@Xrinc|jjlBqY8LQ_s@IrkT^Y2RlYCD)vTP+qVZVh)P<{+J1bJty zZks{NOW%$ix)|h#hxpYydAVua+RNvXsDAJpY@=-YKKvDt`x!~nY^j{?0g1Zosp{BH%keMPqjCb-bUcf21(SiRy{J)rA zy?5JZ^}2cUy_Nb&#cM?{=29=oxmK7zFlq)@#=`K3L-4KyXvj|^CSho2xl@9scc~)? v)RSfO1%+)c)T0-0IrC2gW9*8PNQuGPn4(y_&$Ddw(_y4A4R~Dku*!S@m&-BM literal 0 HcmV?d00001 diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/models.py b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/models.py new file mode 100644 index 0000000..9d5aef8 --- /dev/null +++ b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/models.py @@ -0,0 +1,153 @@ +from __future__ import unicode_literals +from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned +from django.db import models +from django.db.models import Count +from django.db import connection + +import re, bcrypt +EMAIL_REGEX = re.compile(r'^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$') + +class UserManager(models.Manager): + + def register(self, postData): + errors = [] + # VALIDATE FIRST NAME + if len(postData['first_name']) < 1: + errors.append('First name cannot be empty.') + elif len(postData['first_name']) <= 2: + errors.append('First name must be at least two characters.') + # VALIDATE LAST NAME + if len(postData['last_name']) < 1: + errors.append('Last name cannot be empty.') + elif len(postData['last_name']) <= 2: + errors.append('Last name must be at least two characters.') + # VALIDATE EMAIL + if len(postData['email']) < 1: + errors.append('Email cannot be empty') + elif not EMAIL_REGEX.match(postData['email']): + errors.append("Email address must be valid.") + else: + try: + user = User.objects.get(email=postData['email']) + except MultipleObjectsReturned: + errors.append("Email address has already been registered.") + except: + pass + # VALIDATE PASSWORD + if len(postData['password']) < 1: + errors.append("Password cannot be empty.") + elif len(postData['password']) < 8: + errors.append("Password must be at least 8 characters.") + # VALIDATE PASSWORD CONFIRMATION + if postData['password'] != postData['password_conf']: + errors.append("Passwords must match.") + + if len(errors) > 0: + return (False, errors) + else: + #ORM query to create + hashed = bcrypt.hashpw(postData['password'].encode(), bcrypt.gensalt()) # creates hashed password to be saved in db + new_user = User.objects.create(first_name=postData['first_name'], last_name=postData['last_name'], email=postData['email'], password=hashed) + # new_user.save() + print 'the newly registered user is', new_user + return (True, new_user.id, new_user.first_name) # new_user.first_name + + def login(self, postData): + errors = [] + # VALIDATE EMAIL + if len(postData['email']) < 1: + errors.append('Email cannot be empty') + elif not EMAIL_REGEX.match(postData['email']): + errors.append("Email address must be valid.") + # VALIDATE PASSWORD + if len(postData['password']) < 1: + errors.append("Password cannot be empty.") + elif len(postData['password']) < 8: + errors.append("Password must be at least 8 characters.") + + if len(errors) > 0: + return (False, errors) + else: + try: + user = User.objects.get(email=postData['email']) + if user.password == bcrypt.hashpw(postData['password'].encode(), user.password.encode()): + print 'logging in user is ', user + return (True, user.id, user.first_name) # user.first_name + else: + errors.append("Email or password is invalid. (password doesn't match)") + return (False, errors) + except ObjectDoesNotExist: + errors.append("Email or password is invalid. (email not found)") + return (False, errors) + except MultipleObjectsReturned: + errors.append("Email or password is invalid. (more than one entry with that email)") + return (False, errors) + + def get_likes(self, postData): + # get an array of ids + this_user = User.objects.get(id=postData.session['id']) + # this_users_likes = this_user.all() + # print "the user id is", postData.session['id'] + # print "this user is" , this_user + # print "this_users_likes is" , this_user.likes.all() + this_users_likes = this_user.liked_secrets.all().values_list('id', flat=True) + # this_secret = Secret.objects.filter(creator_id = postData.session['id']) + # print [secret.id for secret in this_secret] + print 'this user is ', this_user + print 'this users likes is ', this_users_likes + # likes_on_a_secret = this_secret.likes.all() + # print 'likes on a secret is ', likes_on_a_secret + return (True, this_users_likes) + +class SecretManager(models.Manager): + def secrets_recent(self, postData): + # secrets = Secret.objects.annotate(Count('likes')).order_by('-created_at')[:10] + # print Secret.objects.annotate(Count('likes')).order_by('-created_at')[:10].query + secrets = Secret.objects.order_by('-created_at').annotate(Count('likes'))[:10] + return (True, secrets) + + def secrets_popular(self): + secrets = Secret.objects.annotate(Count('likes')).order_by('-likes__count')[:10] + return (True, secrets) + + def create_secret(self, postData): + errors=[] + if len(postData.POST['secret']) < 1: + errors.append('Secret cannot be empty.') + return (False, errors) + new_secret_creator = User.objects.get(id=postData.session['id']) + secret = Secret.objects.create(secret=postData.POST['secret'], creator=new_secret_creator) + return (True, secret) + + def create_like(self, postData, secret_id): + this_secret = Secret.objects.get(id=secret_id) + this_user = User.objects.get(id=postData.session['id']) + this_secret.likes.add(this_user) + return (True) + + # def created_ago(self): + # time_ago = timezone.now() - secret.created_at + + +class User(models.Model): + first_name = models.CharField(max_length=45) + last_name = models.CharField(max_length=45) + email = models.CharField(max_length=128) + password = models.CharField(max_length=256) + created_at = models.DateTimeField(auto_now_add=True) + updated_at = models.DateTimeField(auto_now_add=True) + # * my_secrets * (from related_name) + # * liked_secrets * (from related_name) + def __str__(self): + return self.first_name + objects = UserManager() + +class Secret(models.Model): + secret = models.TextField() + creator = models.ForeignKey(User, related_name="my_secrets") # creator of the secret; the related name 'psuedo'-creates an array of secrets for each user in the User class (not actually added to database; kept track of by Django and Python) + likes = models.ManyToManyField(User, related_name="liked_secrets") + created_at = models.DateTimeField(auto_now_add=True) + updated_at = models.DateTimeField(auto_now_add=True) + def __str__(self): + return self.secret + objects = SecretManager() diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/models.pyc b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/models.pyc new file mode 100644 index 0000000000000000000000000000000000000000..552a36f5b9a137845cee276b060ebfbd11fcfb3e GIT binary patch literal 7121 zcmcgx>v9}N6+W}OT4^Qg;%h9h!w?(1j;vK6R0vh6ki?cvidZ%yLyT~k8t=5ES7Ct`V#+D1td+La(|x8d=X~cor(5-Z z&(F%@KOS~v_^IRX2U3&#pQwcRbtD$)JF?}7!{?gBHR;!7t1kV9Y&C3aUE(R}H)X47 zpBoZSOMgbTX6*Bn_P1oKWuKc8&&t-U&Vc%yY|V+8mEI`{r{x)Do0o7#OjCLbvh7IN zlIJ4NM1H-sDBh*eJyVofVnRD& z69RnQ6c={_1BdA51jx z`B7)s@Y%}MVh(ToGB?@XAPII%HZmq>`-sN8f{GE^5GI5sw`w#jD|K3wm4iJdd~fpY8)(@Pd0LY~4OHnzB+* zryZ*~Io6X(N)cT9;3gtI{Z@Wp7rps}4THeb3vMrv*)kBM*lgTbNwTFDl_hD?C!t zP-;n4xnD`0wo+C@5aBw`$nsuYvac$cvy}|ztMMT`CwmRa{^k@jY}u~KX3>(~tZoCN z^sr6n9ZjcLc~+CBjcU8_xAT>4!wXu2&c`YUUz5WI-fBFZlJKJ3Ih>L^KPwgle|w8s zF3EOXHi56r_A-#OQ4-hNQI;2e67)?(FqYp&ahq)}+uUxDBx&J3Hm>Opii1u>?3F7= zh59ALArcgBYy#Aa{nYL523gRBcjldvK#kF%^OWDh(yVVPlopdcsd#Rrrtgp!Z zL6$Q1tU*`#k)AahTsngTowEYaDNK~V&xxI8?Six9;CtlnSv=RB%g#Ld>P}m)&h3A{P4C9)Ne;4mQSpcET zJF{Aj$b(x^^7s`h@OC7OJxxO4f=J4cOKO%?Q*YJ`3>gZOFbLHJjQz}E4i+}xbv1Zh zi2TF4-!vVMxsFoxhAOhO46d}i9S228qZGS<(l7$KCDlJ_$=x{GGXPrdw#oX(tfm1Y zM_@;OUT`Q%hZQkv7z*N8qZfc$nj8m*yimIyv!O;!PODKt&l;mAzJ*1clyMoq5j^dr zv`S8FO6}6r>-Cn?s<&x<4Jf`QR=%$pfbS#Pl(F%B&xL^ZT^83-jMuHTR~qL$MrAHH zXQf$dt+c+QhS}6u`9IG=Hy~|Zb`ApGo9{>~y4-+R% zb$}_Jaa+6qVV@loS1+K_XHw&_5IIo8Dt!h^*eHogyL6jn@Ychk^lN94BNRM-Pf@AZ zPqVhhOBTw}_wQ{!u+j5HG4l$gk906=`7FY zwEi^0AcsB@25m?i`-3JTnwL)rj8@p7=PY@4()~Q1m4W0iWaKgOht%q<)g_`?%0h zk|)vgtEgtae~3hmw?b^((9)i)`K&HHw#F+pgz}H?=SAlGf5O~3$yS`Udcqhkw1uMm zCa#!nM<%ux0Uq-uJ-=uUuh|A}0nCG_Z>$vKiYm;4lkr_2%RvY^K6*dp7*wnVrt!W{ z0EOHoj4V0NB2DMa_@~~gDZ7r)NKR5Tf{%`%k=U>}1on`dTW~sKm<=151v$9tC(>}o zUl+rhM~47A)`DxthGGvl^tc+u_)EkdnNiV|8D#I!9q;n=La~2PrQI6*NdTin+~Z}( zH^!ibg_FjhBH%ArW(7Xw;unDLfq7C`SaF?-quV%)Mmx#R&4E3h{D>ViE7IMA2PsSY z#=B_qK4d{idLOa4$wJ{rIy!mykvaa1ug1cra|&F2ULn}3wa=klcj)`uCH`^3vjv)@ zxPT(mo3Kt7o9~z>T{GZ6N%HX_SzUD~6h8Lqe2)+xHFfOmm`wl`SoHhM=qcRhBx!#T z#YRu=+AusnSWl(CG)CU#zi_PTxto*pUOfZ6XAfTQ6SFyWrZ;*BcuTd5&SGu((emrd G^Zx}I_a%}5 literal 0 HcmV?d00001 diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/templates/dojo_secrets/index.html b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/templates/dojo_secrets/index.html new file mode 100644 index 0000000..aa01fdc --- /dev/null +++ b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/templates/dojo_secrets/index.html @@ -0,0 +1,45 @@ + + + + + Dojo Secrets + + + + + + {% if 'user' in request.session %} +

Hello, {{request.session.user}}

+ {% endif %} + + {% if messages %} +
    + {% for message in messages %} +
  • {{ message }}
  • + {% endfor %} +
+ {% endif %} + +

Register new user

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

Login

+
+ {% csrf_token %} + + + +
+
+ + + diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/templates/dojo_secrets/secrets.html b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/templates/dojo_secrets/secrets.html new file mode 100644 index 0000000..1147109 --- /dev/null +++ b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/templates/dojo_secrets/secrets.html @@ -0,0 +1,105 @@ + + + + + Dojo Secrets + + + + {% if not request.session.logged_in %} + +

You must log in.

+
+ {% csrf_token %} + +
+
+ + {% else %} + + {% if not request.session.most_popular %} + + + {% if 'first_name' in request.session %} +

Hello, {{request.session.first_name}}!

+ {% endif %} + +
+ {% csrf_token %} + +
+
+ +
+ {% csrf_token %} + + +
+ + +
+ {% csrf_token %} + +
+ +
+ +

Recent Secrets...

+ + + {% for each in secrets %} +

each: {{each.secret}}, timestamp: {{each.created_at}}, likes: {{each.likes__count}}

+ + {% if each.creator.id == request.session.id %} +
You wrote this!
+ {% endif %} + + {% if each.id in this_users_likes %} +
You liked this
+ {% else %} + +
+ {% csrf_token %} + +
+ + {% endif %} +
+ {% endfor %} + + {% else %} + +

Most Popular Secrets...

+ +
+ {% csrf_token %} + +
+ + + {% for each in secrets %} +

each: {{each.secret}}, timestamp: {{each.created_at}}, likes: {{each.likes__count}}

+ + {% if each.creator.id == request.session.id %} +
You wrote this!
+ {% endif %} + + {% if each.id in this_users_likes %} +
You liked this
+ {% else %} + +
+ {% csrf_token %} + +
+ + {% endif %} +
+ {% endfor %} + + {% endif %} + + {% endif %} + + + diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/tests.py b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/urls.py b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/urls.py new file mode 100644 index 0000000..950e9ab --- /dev/null +++ b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/urls.py @@ -0,0 +1,16 @@ +from django.conf.urls import url +from . import views + +urlpatterns = [ + url(r'^$', views.index), + url(r'^register$', views.register), + url(r'^login$', views.login), + url(r'^logout$', views.logout), + url(r'^secrets$', views.secrets), + url(r'^secrets/create$', views.create), + url(r'^secrets/(?P\d+)/like$', views.like), + url(r'^secrets/(?P\d+)/update$', views.update), + url(r'^secrets/(?P\d+)/destroy$', views.destroy), + url(r'^secrets/mostpopular$', views.most_popular), + url(r'^secrets/formandrecent$', views.form_and_recent), +] diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/urls.pyc b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/urls.pyc new file mode 100644 index 0000000000000000000000000000000000000000..21be818ebd1b8a066e4f1d7e8ff48fdbd7258c22 GIT binary patch literal 860 zcmZ{h-EPxB5QS&s{Qoq$K_CQoz6e6fzCcyD=ryW}Kqx|3mUn9$Y_GL5Zpk(8*YYkr z0L-qvA_&z^#`B$7D`!rkU#t0j{_|4?{k7ufTmIq$7sVd|B|s%$FF>dPs0hjdR1xeW z5L$p5f{x%YgdYQNIPy3OIQBRWIPo|MIQ2LUIP*9QIQKXYxbV0Lxb(OTxbnCPc;@lU zVZMO<8q^xzZ#TSC@td!$;Ep0Ltt|@&oigI?w$OKo1Ma@WICl@L^8!iR7$*)(lNWW2 z)4n$?#W-_-IgbO%Bv%NHMP9-yGmsaCh2`9 njWq|IkxZKg|Cvaa#;!T~z0WJ7+EQP*Nbnh#jo3tM@&Ek?R29%+ literal 0 HcmV?d00001 diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/views.py b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/views.py new file mode 100644 index 0000000..5cac6a0 --- /dev/null +++ b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/views.py @@ -0,0 +1,102 @@ +from django.shortcuts import render, redirect +from .models import User, Secret +from django.contrib import messages + + +def index(request): # GET : RENDER + context = request.session + print 'this is the request.session', request.session + print 'this is the context', context + print 'these are the messages', messages + return render(request, 'dojo_secrets/index.html') + +def register(request): # POST : REDIRECT + if request.method == 'POST': + results = User.objects.register(request.POST) # change parameter to request + if results[0] == False: + request.session['session_messages'] = results[1] + print '**********' + print "results[1]", results[1] + print '**********' + print "request.session['session_messages']", request.session['session_messages'] + print '**********' + for each in results[1]: + messages.info(request, each) + print 'these are the messages', messages + return redirect('/') + elif results[0] == True: + print 'the results are', results + request.session['logged_in'] = True + print 'the id from the result is', results[1] + request.session['id'] = results[1] + request.session['first_name'] = results[2] + request.session['most_popular'] = False + return redirect('/secrets') + else: + request.session['session_messages'] = "something went wrong" + return redirect('/') + +def login(request): # POST : REDIRECT + if request.method == 'POST': + results = User.objects.login(request.POST) # change parameter to request + if results[0] == False: + request.session['session_messages'] = results[1] + return redirect('/') + elif results[0] == True: + request.session['logged_in'] = True + print 'the id from the result is', results[1] + request.session['id'] = results[1] + request.session['first_name'] = results[2] + request.session['most_popular'] = False + return redirect('/secrets') + else: + request.session['session_messages'] = "something went wrong" + return redirect('/') + +def logout(request): # POST : REDIRECT + if 'session_messages' in request.session: + request.session.pop('session_messages') + request.session.pop('id') + request.session.pop('first_name') + request.session['logged_in'] = False + return redirect('/') + +#array of ids +def secrets(request): # GET : RENDER + if not request.session['most_popular']: + results = Secret.objects.secrets_recent(request) + else: + results = Secret.objects.secrets_popular() + likes = User.objects.get_likes(request) + # user.get_likes() + # User.objects.get_likes() + context = { 'secrets': results[1], + 'this_users_likes': likes[1] + } + return render(request, 'dojo_secrets/secrets.html', context) + +def create(request): # POST : REDIRECT + if request.method == 'POST': # good practice! + results = Secret.objects.create_secret(request) # request.POST, request.session['id']) + return redirect('/secrets') + +def like(request, id): # POST : REDIRECT + if request.method == 'POST': # good practice! + results = Secret.objects.create_like(request, id) + return redirect('/secrets') + +def update(request): # POST : REDIRECT + return redirect('/secrets') + +def destroy(request): # POST : REDIRECT + return redirect('/secrets') + +def most_popular(request): + if request.method == 'POST': + request.session['most_popular'] = True + return redirect('/secrets') + +def form_and_recent(request): + if request.method == 'POST': + request.session['most_popular'] = False + return redirect('/secrets') diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/views.pyc b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/views.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bff2291d90aaff58c1c98a2b349839313cb1b2cb GIT binary patch literal 4662 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 M(e{}ha)0#y0}1?ty8r+H literal 0 HcmV?d00001 diff --git a/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/__init__.py b/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/__init__.pyc b/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8679d5c5c623cbe61d2778b36f5a77e769dd37eb GIT binary patch literal 180 zcmZSn%*z$bd?6y40SXv_v;z!R ziA5>;F8Rr&xv6<2#rgr2B^mj7`Yu_CdFlE3DfwCX@x`ghMX4pl@dZWsS*gh-*ahR` fGxIV_;^XxSDoZ$kHrV9mrm6( z3--J81GIZ5+cIO%bYe-Ty?y+4Z*TYH!arN(-SxjedT9D9!Fv}Twx2@?BV@yvLpYE8 z9I|tWe#)Tzf4Uu*9H8;KOBEkh^mk`-N_9hwvP8s1fgx3)UQ3>GQx?TbPa-<1qO-J4VQ z=hOp9fg}48!Vi%RQSBgmTdwqq9Iwg|qI!gE2rQ4xoyQ`huOXx5`q&MJk-`Y)G#oNz z5XB0P#*xE_7Zc8$NgR!d$Cc?@EtmI5NMe^0tn^QmhgbqUb#XvLg>g6LQ_Y7;!T?g4 zdZ?(CXKEG9-+_l9iitu)a2B|nMxg>XA5m~meex4TL&_u0C+t^E!;#0-)X6LaFA6jg zY64N?(S&+To5ioC_)Z+?%uig+4*eRAx^M1`73V#-fcb4s-4GWH^~n5}FUh`In_rok;3KFSOi^q>ZU zC{%0m_5a!|9;h`KK2UPJp#3t#o(1JXRu==(VGh}(o-EV_+Z79%WpB~Gm1cCou$nmy z=J`=QpL$1Q*E@oqQ9r(m-GFo^qBq!r=?!7JP%pFYRFl|eOv`{d2_`=DsM-fa65?44 zscAP_Q!(S>e0{6e-W%;YUjw?{I57DJ5PG-khzZ+SfhtSvFD~4Bu)Zh;e9}*bOdKrJ z`kjZcLOCX%p!Ya?lBs`_{}m=;U)b|y{dvw;*vw@764))v<>EVCtI=tj?7o0rmD*!A zq$+eO?2jyg#n!<6EWzxPPdRzcivVP__Zn@3l?7&Bok>J~+j`58elZ!iiO<=-(2-|o z*72eQCoW^hQH&iprzn=5)gB|U&c&&aaAMMc`mSiV52*(1!kbfowP;9#BxsUw$VVB( zZ>NAryRSQqG{e|E1x7mwNKCzDkaYkd;nRfi0#H4x#za|a@QHzD)OJKG$V560d?Fl& z=YbJ1S;P~UkJ2R5ID|%$wA*KrFHjsu9AjW4CU14q5T(w=c9}-)z_6V6#_tlziW9;` zBz5C$Z;x*Qr8k?ML!<8OcTCIV=YZ2_n-*|^2Tfy2m{y}+ZyJaCfx*v$#zCiJIlY5s ztiXYD&(-82t7 z2X*Iz-fV!p15GPpYwGR2p1x-|wNBkg9W`2pV|UtyTxt(i+Niv0&nL~wv$m{QA+hW< z1r`KR6XEUvB+3T%2TV0lgiJf8KK9%gYxT&39Sk|sx+i=Tg<5*Tz;}E3PsD2G?AxtQ zPGnrKg9s-+d2RyKSo2j(iTI&wJn} z@i+J{`~Wz+iKqrhvy_W-zWeUG&zI=u{rLN%AD>FntpUDY;{(spa6;y21Hwa62SkQs z9ugUmc|-yc5*`r|5k4T-0l5yzG9dE-;Y0Ev-E#=vLd?}`or5Tiu#h)KuSIF;+3Y<% z&}vaFTT|Fdt2q9+67-@qbyHX?jDibVS752ptrg%BfLcwzRN@LUdZZ1N+6Y>yg*MVd z(54mz2ns?>V~T5KZ39!rxGo{%>q0GcS3fJYWJ0k?HhIddZmJTPi)L6KSp4>DArTCw z@lmTvM{ir#qfRpVhI3jdTFFKmJEe4Cw4`#A7fsVScjBLQ@xEv5V5db)#jn&P=Z}+d z*V;-;F{Y}J;$`CY$tXUk3xFq=*c;!${T~l)SHd_dnb)c(^bWB+|6B8M8Ce0jgGom> zI3269Zh57aD1@)*+AHx!dyS60I26g?9l2PMj_9J3bGnsmdnb4qYLPkRd#<=2_gS~+ zd|B%yLmm5aiF0_|WHgGaU$|17M`9y1Si;`HcNc5}+@HffT2v0FWoKwT#7R2DGoO;@ zI8b?RAEM)C2Q&1MnFF);&|sB*oKtu5$G~U&WM?1@u&b)(Wnnlw)MYD$vcOI^cBK_N l^h1jS{P!>PZ>Li+Yc}>SqQ8)ux3zfn0Qca2>b+op_!}&hGJ^mB literal 0 HcmV?d00001 diff --git a/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/wsgi.py b/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/wsgi.py new file mode 100644 index 0000000..bb12331 --- /dev/null +++ b/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for dojo_secrets_project 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/1.10/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dojo_secrets_project.settings") + +application = get_wsgi_application() diff --git a/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/wsgi.pyc b/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/wsgi.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7299516012507f68897a953c0aa90f205410cfb7 GIT binary patch literal 664 zcmZuu!EO^V5cTf10WBa^0&%P4V-B#USA-B$DNzulh;0SrvN85#u;zd@hfE(ZeaNm;a%JqA@&+-f91bGaPlEhQIi7Ik-NMv-;d`!qLM^0n;EF63kjn$PF5>#R`{ zjd$}o@x7yxt?z*wN7dV1fO|*eCh&!^@Qeq5e2LhFmqKW-LZKV!YX4W0@~r?TPKuKk zV(B;Ng@(@hZ3_;?Ce%jc<~NP$Frj|&2|*25#YlBa4L+s7=>6O2_`E95E-oh1aanyl zA6s^Wfh{n}ncrQ{%s49|JRhW|P10Kc9o!mlEmqo1lnSA@p;MS)14s&u4 zm4<~}S;Pl)yrpay@Bf4FjgI0nKp(`$SgmBQ#mK8wY&eKdTU>f4M!TZ)UjP5*-Oi}2 Z=(c#D*kA4c@O899ghBc+JxU*^e*k58!qET# literal 0 HcmV?d00001 diff --git a/erica_snider/Assignments/dojo_secrets_project/manage.py b/erica_snider/Assignments/dojo_secrets_project/manage.py new file mode 100755 index 0000000..d12471a --- /dev/null +++ b/erica_snider/Assignments/dojo_secrets_project/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +import os +import sys + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dojo_secrets_project.settings") + try: + from django.core.management import execute_from_command_line + except ImportError: + # The above import may fail for some other reason. Ensure that the + # issue is really that Django is missing to avoid masking other + # exceptions on Python 2. + try: + import django + except ImportError: + 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?" + ) + raise + execute_from_command_line(sys.argv)