diff --git a/.DS_Store b/.DS_Store
index 4c0ce55..45ecbd0 100644
Binary files a/.DS_Store and b/.DS_Store differ
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 0000000..b98d559
Binary files /dev/null and b/erica_snider/Assignments/dojo_secrets_project/apps/__init__.pyc differ
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 0000000..5f41bef
Binary files /dev/null and b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/__init__.pyc differ
diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/admin.py b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/admin.py
new file mode 100644
index 0000000..8c38f3f
--- /dev/null
+++ b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/admin.pyc b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/admin.pyc
new file mode 100644
index 0000000..0babbea
Binary files /dev/null and b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/admin.pyc differ
diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/apps.py b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/apps.py
new file mode 100644
index 0000000..cf32531
--- /dev/null
+++ b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/apps.py
@@ -0,0 +1,7 @@
+from __future__ import unicode_literals
+
+from django.apps import AppConfig
+
+
+class DojoSecretsConfig(AppConfig):
+ name = 'dojo_secrets'
diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/0001_initial.py b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/0001_initial.py
new file mode 100644
index 0000000..5cb8f70
--- /dev/null
+++ b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/0001_initial.py
@@ -0,0 +1,48 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.6 on 2017-03-20 17:41
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Secret',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('text', models.TextField()),
+ ('created_at', models.DateTimeField(auto_now_add=True)),
+ ('updated_at', models.DateTimeField(auto_now_add=True)),
+ ],
+ ),
+ migrations.CreateModel(
+ name='User',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('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)),
+ ],
+ ),
+ migrations.AddField(
+ model_name='secret',
+ name='creator',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='my_secrets', to='dojo_secrets.User'),
+ ),
+ migrations.AddField(
+ model_name='secret',
+ name='likes',
+ field=models.ManyToManyField(related_name='liked_secrets', to='dojo_secrets.User'),
+ ),
+ ]
diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/0001_initial.pyc b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/0001_initial.pyc
new file mode 100644
index 0000000..0f56dec
Binary files /dev/null and b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/0001_initial.pyc differ
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 0000000..228bda3
Binary files /dev/null and b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/0002_auto_20170320_1743.pyc differ
diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/__init__.py b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/__init__.pyc b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/__init__.pyc
new file mode 100644
index 0000000..3aeb906
Binary files /dev/null and b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/migrations/__init__.pyc differ
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 0000000..552a36f
Binary files /dev/null and b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/models.pyc differ
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
+
+
+
+ Login
+
+
+
+
+
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.
+
+
+
+ {% else %}
+
+ {% if not request.session.most_popular %}
+
+
+ {% if 'first_name' in request.session %}
+ Hello, {{request.session.first_name}}!
+ {% endif %}
+
+
+
+
+
+
+
+
+
+
+
+ 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 %}
+
+
+
+ {% endif %}
+
+ {% endfor %}
+
+ {% else %}
+
+ Most Popular 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 %}
+
+
+
+ {% 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 0000000..21be818
Binary files /dev/null and b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/urls.pyc differ
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 0000000..bff2291
Binary files /dev/null and b/erica_snider/Assignments/dojo_secrets_project/apps/dojo_secrets/views.pyc differ
diff --git a/erica_snider/Assignments/dojo_secrets_project/db.sqlite3 b/erica_snider/Assignments/dojo_secrets_project/db.sqlite3
new file mode 100644
index 0000000..1568f27
Binary files /dev/null and b/erica_snider/Assignments/dojo_secrets_project/db.sqlite3 differ
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 0000000..8679d5c
Binary files /dev/null and b/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/__init__.pyc differ
diff --git a/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/settings.py b/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/settings.py
new file mode 100644
index 0000000..70cbf34
--- /dev/null
+++ b/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/settings.py
@@ -0,0 +1,121 @@
+"""
+Django settings for dojo_secrets_project project.
+
+Generated by 'django-admin startproject' using Django 1.10.6.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/1.10/topics/settings/
+
+For the full list of settings and their values, see
+https://docs.djangoproject.com/en/1.10/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/1.10/howto/deployment/checklist/
+
+# SECURITY WARNING: keep the secret key used in production secret!
+SECRET_KEY = 'k@3t#1i1_lie7ngk8!mooanojb+#!$v_zaosizdfv&1fikl94f'
+
+# SECURITY WARNING: don't run with debug turned on in production!
+DEBUG = True
+
+ALLOWED_HOSTS = []
+
+
+# Application definition
+
+INSTALLED_APPS = [
+ 'apps.dojo_secrets',
+ '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 = 'dojo_secrets_project.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 = 'dojo_secrets_project.wsgi.application'
+
+
+# Database
+# https://docs.djangoproject.com/en/1.10/ref/settings/#databases
+
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.sqlite3',
+ 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
+ }
+}
+
+
+# Password validation
+# https://docs.djangoproject.com/en/1.10/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/1.10/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/1.10/howto/static-files/
+
+STATIC_URL = '/static/'
diff --git a/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/settings.pyc b/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/settings.pyc
new file mode 100644
index 0000000..a197ff8
Binary files /dev/null and b/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/settings.pyc differ
diff --git a/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/urls.py b/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/urls.py
new file mode 100644
index 0000000..4021f60
--- /dev/null
+++ b/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/urls.py
@@ -0,0 +1,22 @@
+"""dojo_secrets_project URL Configuration
+
+The `urlpatterns` list routes URLs to views. For more information please see:
+ https://docs.djangoproject.com/en/1.10/topics/http/urls/
+Examples:
+Function views
+ 1. Add an import: from my_app import views
+ 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
+Class-based views
+ 1. Add an import: from other_app.views import Home
+ 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
+Including another URLconf
+ 1. Import the include() function: from django.conf.urls import url, include
+ 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
+"""
+from django.conf.urls import url, include
+# from django.contrib import admin
+
+urlpatterns = [
+ # url(r'^admin/', admin.site.urls),
+ url(r'^', include('apps.dojo_secrets.urls')),
+]
diff --git a/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/urls.pyc b/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/urls.pyc
new file mode 100644
index 0000000..15bca6b
Binary files /dev/null and b/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/urls.pyc differ
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 0000000..7299516
Binary files /dev/null and b/erica_snider/Assignments/dojo_secrets_project/dojo_secrets_project/wsgi.pyc differ
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)