diff --git a/jessica_hart/assignments/Django/courses/apps/__init__.py b/jessica_hart/assignments/Django/courses/apps/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/jessica_hart/assignments/Django/courses/apps/__init__.pyc b/jessica_hart/assignments/Django/courses/apps/__init__.pyc
new file mode 100644
index 0000000..a8a43e5
Binary files /dev/null and b/jessica_hart/assignments/Django/courses/apps/__init__.pyc differ
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/__init__.py b/jessica_hart/assignments/Django/courses/apps/main_app/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/__init__.pyc b/jessica_hart/assignments/Django/courses/apps/main_app/__init__.pyc
new file mode 100644
index 0000000..80b2c8a
Binary files /dev/null and b/jessica_hart/assignments/Django/courses/apps/main_app/__init__.pyc differ
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/admin.py b/jessica_hart/assignments/Django/courses/apps/main_app/admin.py
new file mode 100644
index 0000000..8c38f3f
--- /dev/null
+++ b/jessica_hart/assignments/Django/courses/apps/main_app/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/admin.pyc b/jessica_hart/assignments/Django/courses/apps/main_app/admin.pyc
new file mode 100644
index 0000000..1c5721e
Binary files /dev/null and b/jessica_hart/assignments/Django/courses/apps/main_app/admin.pyc differ
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/apps.py b/jessica_hart/assignments/Django/courses/apps/main_app/apps.py
new file mode 100644
index 0000000..feab95d
--- /dev/null
+++ b/jessica_hart/assignments/Django/courses/apps/main_app/apps.py
@@ -0,0 +1,7 @@
+from __future__ import unicode_literals
+
+from django.apps import AppConfig
+
+
+class MainAppConfig(AppConfig):
+ name = 'main_app'
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/migrations/0001_initial.py b/jessica_hart/assignments/Django/courses/apps/main_app/migrations/0001_initial.py
new file mode 100644
index 0000000..808147e
--- /dev/null
+++ b/jessica_hart/assignments/Django/courses/apps/main_app/migrations/0001_initial.py
@@ -0,0 +1,50 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.6 on 2017-03-20 01:02
+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='Comment',
+ 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=True)),
+ ],
+ ),
+ migrations.CreateModel(
+ name='Course',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=200)),
+ ('created_at', models.DateTimeField(auto_now_add=True)),
+ ('updated_at', models.DateTimeField(auto_now=True)),
+ ],
+ ),
+ migrations.CreateModel(
+ name='Description',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('text', models.TextField(default='N/A')),
+ ('created_at', models.DateTimeField(auto_now_add=True)),
+ ('updated_at', models.DateTimeField(auto_now=True)),
+ ('course', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='desc', to='main_app.Course')),
+ ],
+ ),
+ migrations.AddField(
+ model_name='comment',
+ name='course_id',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comments', to='main_app.Course'),
+ ),
+ ]
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/migrations/0001_initial.pyc b/jessica_hart/assignments/Django/courses/apps/main_app/migrations/0001_initial.pyc
new file mode 100644
index 0000000..9014afe
Binary files /dev/null and b/jessica_hart/assignments/Django/courses/apps/main_app/migrations/0001_initial.pyc differ
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/migrations/0002_auto_20170320_0105.py b/jessica_hart/assignments/Django/courses/apps/main_app/migrations/0002_auto_20170320_0105.py
new file mode 100644
index 0000000..2faea1c
--- /dev/null
+++ b/jessica_hart/assignments/Django/courses/apps/main_app/migrations/0002_auto_20170320_0105.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.6 on 2017-03-20 01:05
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('main_app', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='comment',
+ name='course_id',
+ ),
+ migrations.RemoveField(
+ model_name='description',
+ name='course',
+ ),
+ migrations.AddField(
+ model_name='course',
+ name='desc',
+ field=models.CharField(default='NA', max_length=400),
+ preserve_default=False,
+ ),
+ migrations.DeleteModel(
+ name='Comment',
+ ),
+ migrations.DeleteModel(
+ name='Description',
+ ),
+ ]
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/migrations/0002_auto_20170320_0105.pyc b/jessica_hart/assignments/Django/courses/apps/main_app/migrations/0002_auto_20170320_0105.pyc
new file mode 100644
index 0000000..687afe4
Binary files /dev/null and b/jessica_hart/assignments/Django/courses/apps/main_app/migrations/0002_auto_20170320_0105.pyc differ
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/migrations/0003_auto_20170320_0112.py b/jessica_hart/assignments/Django/courses/apps/main_app/migrations/0003_auto_20170320_0112.py
new file mode 100644
index 0000000..76e8836
--- /dev/null
+++ b/jessica_hart/assignments/Django/courses/apps/main_app/migrations/0003_auto_20170320_0112.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.6 on 2017-03-20 01:12
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('main_app', '0002_auto_20170320_0105'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='course',
+ name='desc',
+ field=models.CharField(default='N/A', max_length=400),
+ ),
+ ]
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/migrations/0003_auto_20170320_0112.pyc b/jessica_hart/assignments/Django/courses/apps/main_app/migrations/0003_auto_20170320_0112.pyc
new file mode 100644
index 0000000..7d21ea0
Binary files /dev/null and b/jessica_hart/assignments/Django/courses/apps/main_app/migrations/0003_auto_20170320_0112.pyc differ
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/migrations/__init__.py b/jessica_hart/assignments/Django/courses/apps/main_app/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/migrations/__init__.pyc b/jessica_hart/assignments/Django/courses/apps/main_app/migrations/__init__.pyc
new file mode 100644
index 0000000..525f619
Binary files /dev/null and b/jessica_hart/assignments/Django/courses/apps/main_app/migrations/__init__.pyc differ
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/models.py b/jessica_hart/assignments/Django/courses/apps/main_app/models.py
new file mode 100644
index 0000000..cf96968
--- /dev/null
+++ b/jessica_hart/assignments/Django/courses/apps/main_app/models.py
@@ -0,0 +1,31 @@
+from __future__ import unicode_literals
+from django.db import models
+
+class Course(models.Model):
+ name = models.CharField(max_length = 200)
+ desc = models.CharField(max_length = 400, default = 'N/A')
+ created_at = models.DateTimeField(auto_now_add = True)
+ updated_at = models.DateTimeField(auto_now = True)
+
+ def __str__(self): # By default return the course name
+ return self.name
+
+# # Make Description a one-to-one relationship with the Course table rather than a column
+# class Description(models.Model):
+# course = models.OneToOneField(Course, related_name = 'desc')
+# text = models.TextField(default = 'N/A')
+# created_at = models.DateTimeField(auto_now_add = True)
+# updated_at = models.DateTimeField(auto_now = True)
+#
+# def __str__(self): # By default return the description text
+# return self.text
+#
+# # Add comments about the courses that will be rendered on a separate page
+# class Comment(models.Model):
+# course_id = models.ForeignKey(Course, related_name = 'comments')
+# text = models.TextField()
+# created_at = models.DateTimeField(auto_now_add = True)
+# updated_at = models.DateTimeField(auto_now = True)
+#
+# def __str__(self): # By default return the comment text
+# return self.text
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/models.pyc b/jessica_hart/assignments/Django/courses/apps/main_app/models.pyc
new file mode 100644
index 0000000..7f529f7
Binary files /dev/null and b/jessica_hart/assignments/Django/courses/apps/main_app/models.pyc differ
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/static/main_app/css/style.css b/jessica_hart/assignments/Django/courses/apps/main_app/static/main_app/css/style.css
new file mode 100644
index 0000000..3db700f
--- /dev/null
+++ b/jessica_hart/assignments/Django/courses/apps/main_app/static/main_app/css/style.css
@@ -0,0 +1,186 @@
+@import url(http://fonts.googleapis.com/css?family=Roboto:400,500,700,300,100);
+* {
+ padding: 0px;
+ margin: 0px;
+}
+body {
+ background-color: #3e94ec;
+ font-family: "Roboto", helvetica, arial, sans-serif;
+ font-size: 16px;
+ font-weight: 300;
+ text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+}
+#wrapper {
+ margin: 50px auto;
+ width: 960px;
+}
+#content {
+ background: rgba(255,255,255,0.15);
+ border: 1px solid rgba(255,255,255,0.25);
+ border-radius: 4px;
+ padding: 20px;
+}
+#form {
+ color: #1B1E24;
+ display: block;
+ margin-bottom: 20px;
+ text-align: top;
+}
+#form .col {
+ display: inline-block;
+ padding-right: 20px;
+ vertical-align: top;
+}
+#form .col:last-child {
+ width: 400px;
+}
+#form li {
+ display: block;
+ margin: 8px 5px 25px 0px;
+}
+#buttons {
+ display: block;
+ text-align: center;
+}
+#buttons input[type=submit] {
+ float: none;
+ margin-left: 20px;
+}
+h1 {
+ color: #fafafa;
+ font-size: 30px;
+ font-style: normal;
+ font-weight: 300;
+}
+h1, ul {
+ margin-bottom: 15px;
+}
+
+a {
+ color: #1B1E24;
+}
+input[type=text] {
+ width: 95.5%;
+}
+textarea {
+ width: 96%;
+}
+input[type=text], textarea {
+ font-size: 14px;
+ margin: 5px;
+ padding: 5px;
+}
+input[type=submit] {
+ color:#1B1E24;
+ font-weight: 300;
+ font-size:16px;
+ float: right;
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.1);
+ padding: 8px 12px;
+ background-color: #EBEBEB;
+ border: 2px solid #9EA7AF;
+ border-radius: 3px;
+ text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+}
+input[type=submit]:hover {
+ color: #fafafa;
+ background-color: #4E5066;
+ border: 2px solid #1B1E24;
+}
+/* ======================
+ Messages Block
+====================== */
+.messages li {
+ color: #fafafa;
+ display: block;
+ border: 1px solid rgba(255,255,255,0.25);
+ border-radius: 4px;
+ padding: 10px;
+ text-align: center;
+}
+.success {
+ background-color: #66cc91;
+}
+.error {
+ background-color: #e74c3c;
+}
+/* ======================
+ Tables Styles
+====================== */
+/** Table Styles from http://codepen.io/alassetter/pen/cyrfB **/
+table {
+ background: white;
+ border-radius: 3px;
+ border-collapse: collapse;
+ padding: 5px;
+ width: 100%;
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.1);
+ animation: float 5s infinite;
+}
+th {
+ color: #D5DDE5;
+ background: #1b1e24;
+ border-bottom:4px solid #9ea7af;
+ border-right: 1px solid #343a45;
+ font-size:23px;
+ font-weight: 100;
+ padding:24px;
+ text-align:left;
+ text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+ vertical-align: middle;
+}
+th:first-child {
+ border-top-left-radius:3px;
+}
+th:last-child {
+ border-top-right-radius:3px;
+ border-right:none;
+}
+tr {
+ border-top: 1px solid #C1C3D1;
+ border-bottom-: 1px solid #C1C3D1;
+ color:#666B85;
+ font-size:16px;
+ font-weight:normal;
+ text-shadow: 0 1px 1px rgba(256, 256, 256, 0.1);
+}
+tr:hover td {
+ background:#4E5066;
+ color:#FFFFFF;
+ border-top: 1px solid #22262e;
+ border-bottom: 1px solid #22262e;
+}
+tr:hover td a {
+ color: #C1C3D1;
+}
+tr:first-child {
+ border-top:none;
+}
+tr:last-child {
+ border-bottom:none;
+}
+tr:nth-child(odd) td {
+ background:#EBEBEB;
+}
+tr:nth-child(odd):hover td {
+ background:#4E5066;
+}
+tr:last-child td:first-child {
+ border-bottom-left-radius:3px;
+}
+tr:last-child td:last-child {
+ border-bottom-right-radius:3px;
+}
+td {
+ background:#FFFFFF;
+ padding:20px;
+ text-align:left;
+ vertical-align:middle;
+ font-weight:300;
+ font-size:18px;
+ text-shadow: -1px -1px 1px rgba(0, 0, 0, 0.1);
+ border-right: 1px solid #C1C3D1;
+}
+td:last-child {
+ border-right: 0px;
+}
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/templates/main_app/base.html b/jessica_hart/assignments/Django/courses/apps/main_app/templates/main_app/base.html
new file mode 100644
index 0000000..e0c753b
--- /dev/null
+++ b/jessica_hart/assignments/Django/courses/apps/main_app/templates/main_app/base.html
@@ -0,0 +1,24 @@
+
+
+ {% load staticfiles %}
+
+
+ Courses
+
+
+
+
+ {% if messages %}
+
+ {% for message in messages %}
+ - {{ message }}
+ {% endfor %}
+
+ {% endif %}
+
+ {% block content %}
+ {% endblock %}
+
+
+
+
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/templates/main_app/destroy.html b/jessica_hart/assignments/Django/courses/apps/main_app/templates/main_app/destroy.html
new file mode 100644
index 0000000..6c5b09f
--- /dev/null
+++ b/jessica_hart/assignments/Django/courses/apps/main_app/templates/main_app/destroy.html
@@ -0,0 +1,26 @@
+{% extends 'main_app/base.html' %}
+
+{% block content %}
+ Are you sure you want to delete the following course?
+
+{% endblock %}
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/templates/main_app/index.html b/jessica_hart/assignments/Django/courses/apps/main_app/templates/main_app/index.html
new file mode 100644
index 0000000..9442aec
--- /dev/null
+++ b/jessica_hart/assignments/Django/courses/apps/main_app/templates/main_app/index.html
@@ -0,0 +1,53 @@
+{% extends 'main_app/base.html' %}
+
+{% block content %}
+ Add a New Course
+
+ Courses
+
+
+
+ | Course Name |
+ Description |
+ Date Added |
+ Actions |
+
+
+
+ {% for course in course_list %}
+
+ | {{ course }} |
+ {{ course.desc }} |
+ {{ course.created_at }} |
+
+
+
+ |
+
+ {% endfor %}
+
+
+{% endblock %}
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/tests.py b/jessica_hart/assignments/Django/courses/apps/main_app/tests.py
new file mode 100644
index 0000000..7ce503c
--- /dev/null
+++ b/jessica_hart/assignments/Django/courses/apps/main_app/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/urls.py b/jessica_hart/assignments/Django/courses/apps/main_app/urls.py
new file mode 100644
index 0000000..344f84d
--- /dev/null
+++ b/jessica_hart/assignments/Django/courses/apps/main_app/urls.py
@@ -0,0 +1,12 @@
+from django.conf.urls import url
+from . import views
+
+def index(request):
+ pass
+
+urlpatterns = [
+ url(r'^$', views.index),
+ url(r'^add$', views.add),
+ url(r'^courses/destroy/(?P\w+)$', views.destroy),
+ url(r'^courses/destroy/confirm/(?P\w+)$', views.destroy_confirm)
+]
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/urls.pyc b/jessica_hart/assignments/Django/courses/apps/main_app/urls.pyc
new file mode 100644
index 0000000..4fdd80f
Binary files /dev/null and b/jessica_hart/assignments/Django/courses/apps/main_app/urls.pyc differ
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/views.py b/jessica_hart/assignments/Django/courses/apps/main_app/views.py
new file mode 100644
index 0000000..18db896
--- /dev/null
+++ b/jessica_hart/assignments/Django/courses/apps/main_app/views.py
@@ -0,0 +1,40 @@
+from django.shortcuts import render, redirect, HttpResponse
+from django.contrib import messages
+from .models import Course
+
+def index(request):
+ context = {
+ 'course_list': Course.objects.all()
+ }
+ print context
+ return render(request, 'main_app/index.html', context)
+
+def add(request):
+ if request.method == 'POST':
+ print request.POST
+ if not request.POST['name']:
+ messages.error(request, 'Please enter a valid course name.')
+ return redirect('/')
+ Course.objects.create(name=request.POST['name'], desc=request.POST['desc'])
+ print 'Course added to database'
+ messages.success(request, 'The course has been successfully added.')
+ return redirect('/')
+
+def destroy(request, id):
+ if request.method == 'POST':
+ context = {
+ 'course': Course.objects.get(id=id)
+ }
+ print context
+ messages.error(request, 'WARNING: Deleted courses cannot be undone.')
+ return render(request, 'main_app/destroy.html', context)
+ return redirect('/')
+
+def destroy_confirm(request, id):
+ if request.method == 'POST':
+ if request.POST['action'] == 'No':
+ return redirect('/')
+ else:
+ Course.objects.get(id=id).delete()
+ messages.success(request, 'The course has been successfully removed.')
+ return redirect('/')
diff --git a/jessica_hart/assignments/Django/courses/apps/main_app/views.pyc b/jessica_hart/assignments/Django/courses/apps/main_app/views.pyc
new file mode 100644
index 0000000..3777b04
Binary files /dev/null and b/jessica_hart/assignments/Django/courses/apps/main_app/views.pyc differ
diff --git a/jessica_hart/assignments/Django/courses/courses/__init__.py b/jessica_hart/assignments/Django/courses/courses/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/jessica_hart/assignments/Django/courses/courses/__init__.pyc b/jessica_hart/assignments/Django/courses/courses/__init__.pyc
new file mode 100644
index 0000000..506ced3
Binary files /dev/null and b/jessica_hart/assignments/Django/courses/courses/__init__.pyc differ
diff --git a/jessica_hart/assignments/Django/courses/courses/settings.py b/jessica_hart/assignments/Django/courses/courses/settings.py
new file mode 100644
index 0000000..62c17a8
--- /dev/null
+++ b/jessica_hart/assignments/Django/courses/courses/settings.py
@@ -0,0 +1,121 @@
+"""
+Django settings for courses 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 = 'rt0sewo2miv47c6!^k-yvxc60fqusf#k*rmi=dg9bu@x%es7*j'
+
+# SECURITY WARNING: don't run with debug turned on in production!
+DEBUG = True
+
+ALLOWED_HOSTS = []
+
+
+# Application definition
+
+INSTALLED_APPS = [
+ 'apps.main_app',
+ '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 = 'courses.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 = 'courses.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/jessica_hart/assignments/Django/courses/courses/settings.pyc b/jessica_hart/assignments/Django/courses/courses/settings.pyc
new file mode 100644
index 0000000..78450bb
Binary files /dev/null and b/jessica_hart/assignments/Django/courses/courses/settings.pyc differ
diff --git a/jessica_hart/assignments/Django/courses/courses/urls.py b/jessica_hart/assignments/Django/courses/courses/urls.py
new file mode 100644
index 0000000..e371196
--- /dev/null
+++ b/jessica_hart/assignments/Django/courses/courses/urls.py
@@ -0,0 +1,22 @@
+"""courses 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.main_app.urls'))
+]
diff --git a/jessica_hart/assignments/Django/courses/courses/urls.pyc b/jessica_hart/assignments/Django/courses/courses/urls.pyc
new file mode 100644
index 0000000..6947326
Binary files /dev/null and b/jessica_hart/assignments/Django/courses/courses/urls.pyc differ
diff --git a/jessica_hart/assignments/Django/courses/courses/wsgi.py b/jessica_hart/assignments/Django/courses/courses/wsgi.py
new file mode 100644
index 0000000..9da3dff
--- /dev/null
+++ b/jessica_hart/assignments/Django/courses/courses/wsgi.py
@@ -0,0 +1,16 @@
+"""
+WSGI config for courses 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", "courses.settings")
+
+application = get_wsgi_application()
diff --git a/jessica_hart/assignments/Django/courses/courses/wsgi.pyc b/jessica_hart/assignments/Django/courses/courses/wsgi.pyc
new file mode 100644
index 0000000..1e6da16
Binary files /dev/null and b/jessica_hart/assignments/Django/courses/courses/wsgi.pyc differ
diff --git a/jessica_hart/assignments/Django/courses/db.sqlite3 b/jessica_hart/assignments/Django/courses/db.sqlite3
new file mode 100644
index 0000000..3ab9a91
Binary files /dev/null and b/jessica_hart/assignments/Django/courses/db.sqlite3 differ
diff --git a/jessica_hart/assignments/Django/courses/manage.py b/jessica_hart/assignments/Django/courses/manage.py
new file mode 100755
index 0000000..7594c9c
--- /dev/null
+++ b/jessica_hart/assignments/Django/courses/manage.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+import os
+import sys
+
+if __name__ == "__main__":
+ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "courses.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)
diff --git a/jessica_hart/assignments/Django/courses/mvc-courses.png b/jessica_hart/assignments/Django/courses/mvc-courses.png
new file mode 100644
index 0000000..7b68cd8
Binary files /dev/null and b/jessica_hart/assignments/Django/courses/mvc-courses.png differ
diff --git a/jessica_hart/assignments/Django/courses/screenshot-127-0-0-1-8000-1490017227839.png b/jessica_hart/assignments/Django/courses/screenshot-127-0-0-1-8000-1490017227839.png
new file mode 100644
index 0000000..8147ff9
Binary files /dev/null and b/jessica_hart/assignments/Django/courses/screenshot-127-0-0-1-8000-1490017227839.png differ
diff --git a/jessica_hart/assignments/Django/courses/screenshot-127-0-0-1-8000-courses-destroy-5-1490017243210.png b/jessica_hart/assignments/Django/courses/screenshot-127-0-0-1-8000-courses-destroy-5-1490017243210.png
new file mode 100644
index 0000000..0a41fa1
Binary files /dev/null and b/jessica_hart/assignments/Django/courses/screenshot-127-0-0-1-8000-courses-destroy-5-1490017243210.png differ
diff --git a/jessica_hart/assignments/Django/email_validation/apps/__init__.py b/jessica_hart/assignments/Django/email_validation/apps/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/jessica_hart/assignments/Django/email_validation/apps/__init__.pyc b/jessica_hart/assignments/Django/email_validation/apps/__init__.pyc
new file mode 100644
index 0000000..f3f4cf5
Binary files /dev/null and b/jessica_hart/assignments/Django/email_validation/apps/__init__.pyc differ
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/__init__.py b/jessica_hart/assignments/Django/email_validation/apps/main_app/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/__init__.pyc b/jessica_hart/assignments/Django/email_validation/apps/main_app/__init__.pyc
new file mode 100644
index 0000000..4eae723
Binary files /dev/null and b/jessica_hart/assignments/Django/email_validation/apps/main_app/__init__.pyc differ
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/admin.py b/jessica_hart/assignments/Django/email_validation/apps/main_app/admin.py
new file mode 100644
index 0000000..8c38f3f
--- /dev/null
+++ b/jessica_hart/assignments/Django/email_validation/apps/main_app/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/admin.pyc b/jessica_hart/assignments/Django/email_validation/apps/main_app/admin.pyc
new file mode 100644
index 0000000..a2f6ac0
Binary files /dev/null and b/jessica_hart/assignments/Django/email_validation/apps/main_app/admin.pyc differ
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/apps.py b/jessica_hart/assignments/Django/email_validation/apps/main_app/apps.py
new file mode 100644
index 0000000..feab95d
--- /dev/null
+++ b/jessica_hart/assignments/Django/email_validation/apps/main_app/apps.py
@@ -0,0 +1,7 @@
+from __future__ import unicode_literals
+
+from django.apps import AppConfig
+
+
+class MainAppConfig(AppConfig):
+ name = 'main_app'
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/migrations/0001_initial.py b/jessica_hart/assignments/Django/email_validation/apps/main_app/migrations/0001_initial.py
new file mode 100644
index 0000000..3b9d36e
--- /dev/null
+++ b/jessica_hart/assignments/Django/email_validation/apps/main_app/migrations/0001_initial.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.6 on 2017-03-20 20:41
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Email',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('address', models.CharField(max_length=200)),
+ ('created_at', models.DateTimeField(auto_now_add=True)),
+ ('updated_at', models.DateTimeField(auto_now=True)),
+ ],
+ ),
+ ]
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/migrations/0001_initial.pyc b/jessica_hart/assignments/Django/email_validation/apps/main_app/migrations/0001_initial.pyc
new file mode 100644
index 0000000..c4400b4
Binary files /dev/null and b/jessica_hart/assignments/Django/email_validation/apps/main_app/migrations/0001_initial.pyc differ
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/migrations/__init__.py b/jessica_hart/assignments/Django/email_validation/apps/main_app/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/migrations/__init__.pyc b/jessica_hart/assignments/Django/email_validation/apps/main_app/migrations/__init__.pyc
new file mode 100644
index 0000000..d840d25
Binary files /dev/null and b/jessica_hart/assignments/Django/email_validation/apps/main_app/migrations/__init__.pyc differ
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/models.py b/jessica_hart/assignments/Django/email_validation/apps/main_app/models.py
new file mode 100644
index 0000000..8c5013f
--- /dev/null
+++ b/jessica_hart/assignments/Django/email_validation/apps/main_app/models.py
@@ -0,0 +1,22 @@
+from __future__ import unicode_literals
+from django.db import models
+import re
+
+EMAIL_REGEX = re.compile(r'^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$')
+
+class UserManager(models.Manager):
+ def validate(self, postData):
+ if len(postData) < 1 or not EMAIL_REGEX.match(postData):
+ return 0
+ else:
+ return 1
+
+class Email(models.Model):
+ address = models.CharField(max_length = 200)
+ created_at = models.DateTimeField(auto_now_add = True)
+ updated_at = models.DateTimeField(auto_now = True)
+
+ objects = UserManager()
+
+ def __str__(self): # By default return the email address
+ return self.address
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/models.pyc b/jessica_hart/assignments/Django/email_validation/apps/main_app/models.pyc
new file mode 100644
index 0000000..6fd17d1
Binary files /dev/null and b/jessica_hart/assignments/Django/email_validation/apps/main_app/models.pyc differ
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/static/main_app/css/style.css b/jessica_hart/assignments/Django/email_validation/apps/main_app/static/main_app/css/style.css
new file mode 100644
index 0000000..507d347
--- /dev/null
+++ b/jessica_hart/assignments/Django/email_validation/apps/main_app/static/main_app/css/style.css
@@ -0,0 +1,65 @@
+@import url(http://fonts.googleapis.com/css?family=Roboto:400,500,700,300,100);
+* {
+ padding: 0px;
+ margin: 0px;
+}
+body {
+ background-color: #3e94ec;
+ font-family: "Roboto", helvetica, arial, sans-serif;
+ font-size: 16px;
+ font-weight: 300;
+ text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+}
+#wrapper {
+ margin: 50px auto;
+ width: 540px;
+}
+#content {
+ background: rgba(255,255,255,0.15);
+ border: 1px solid rgba(255,255,255,0.25);
+ border-radius: 4px;
+ padding: 20px;
+}
+h1 {
+ color: #fafafa;
+ font-size: 30px;
+ font-style: normal;
+ font-weight: 300;
+}
+h1, ul {
+ margin-bottom: 15px;
+}
+#content li {
+ display: inline-block;
+ padding: 5px 0px;
+ width: 40%;
+}
+#content li.remove {
+ width: 80px;
+}
+a {
+ color: #1B1E24;
+}
+input[type=text] {
+ font-size: 14px;
+ margin: 5px 0px;
+ padding: 5px;
+ width: 95%;
+}
+/* ======================
+Messages Block
+====================== */
+.messages li {
+ color: #fafafa;
+ display: block;
+ border: 1px solid rgba(255,255,255,0.25);
+ border-radius: 4px;
+ padding: 10px;
+ text-align: center;
+}
+.success {
+ background-color: #66cc91;
+}
+.error {
+ background-color: #e74c3c;
+}
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/templates/main_app/base.html b/jessica_hart/assignments/Django/email_validation/apps/main_app/templates/main_app/base.html
new file mode 100644
index 0000000..3399dbf
--- /dev/null
+++ b/jessica_hart/assignments/Django/email_validation/apps/main_app/templates/main_app/base.html
@@ -0,0 +1,24 @@
+
+
+ {% load staticfiles %}
+
+
+ Email Validation
+
+
+
+
+ {% if messages %}
+
+ {% for message in messages %}
+ - {{ message }}
+ {% endfor %}
+
+ {% endif %}
+
+ {% block content %}
+ {% endblock %}
+
+
+
+
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/templates/main_app/index.html b/jessica_hart/assignments/Django/email_validation/apps/main_app/templates/main_app/index.html
new file mode 100644
index 0000000..2923a0b
--- /dev/null
+++ b/jessica_hart/assignments/Django/email_validation/apps/main_app/templates/main_app/index.html
@@ -0,0 +1,11 @@
+{% extends 'main_app/base.html' %}
+
+{% block content %}
+ Register Email
+
+{% endblock %}
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/templates/main_app/success.html b/jessica_hart/assignments/Django/email_validation/apps/main_app/templates/main_app/success.html
new file mode 100644
index 0000000..2d679f7
--- /dev/null
+++ b/jessica_hart/assignments/Django/email_validation/apps/main_app/templates/main_app/success.html
@@ -0,0 +1,17 @@
+{% extends 'main_app/base.html' %}
+
+{% block content %}
+ Email Addresses Entered:
+
+ {% for email in emails %}
+ - {{ email }}
+ - {{ email.created_at }}
+ -
+
+
+ {% endfor %}
+
+{% endblock %}
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/tests.py b/jessica_hart/assignments/Django/email_validation/apps/main_app/tests.py
new file mode 100644
index 0000000..7ce503c
--- /dev/null
+++ b/jessica_hart/assignments/Django/email_validation/apps/main_app/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/urls.py b/jessica_hart/assignments/Django/email_validation/apps/main_app/urls.py
new file mode 100644
index 0000000..554cf0b
--- /dev/null
+++ b/jessica_hart/assignments/Django/email_validation/apps/main_app/urls.py
@@ -0,0 +1,12 @@
+from django.conf.urls import url
+from . import views
+
+def index(request):
+ pass
+
+urlpatterns = [
+ url(r'^$', views.index),
+ url(r'^add$', views.add),
+ url(r'^success$', views.success),
+ url(r'^remove/(?P\w+)$', views.remove)
+]
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/urls.pyc b/jessica_hart/assignments/Django/email_validation/apps/main_app/urls.pyc
new file mode 100644
index 0000000..a1980ca
Binary files /dev/null and b/jessica_hart/assignments/Django/email_validation/apps/main_app/urls.pyc differ
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/views.py b/jessica_hart/assignments/Django/email_validation/apps/main_app/views.py
new file mode 100644
index 0000000..9885b39
--- /dev/null
+++ b/jessica_hart/assignments/Django/email_validation/apps/main_app/views.py
@@ -0,0 +1,30 @@
+from django.shortcuts import render, redirect
+from django.contrib import messages
+from .models import Email
+
+def index(request):
+ return render(request, 'main_app/index.html')
+
+def add(request):
+ if request.method == 'POST':
+ print request.POST
+ if Email.objects.validate(request.POST['email']):
+ Email.objects.create(address=request.POST['email'])
+ messages.success(request, 'The email address you entered ({}) is a VALID email address. Thank you.'.format(request.POST['email']))
+ return redirect('/success')
+ else:
+ messages.error(request, 'Please enter a valid email.')
+ return redirect('/')
+
+def success(request):
+ context = {
+ 'emails': Email.objects.all()
+ }
+ print context
+ return render(request, 'main_app/success.html', context)
+
+def remove(request, id):
+ if request.method == 'POST':
+ Email.objects.get(id=id).delete()
+ messages.success(request, 'The email has been successfully removed.')
+ return redirect('/')
diff --git a/jessica_hart/assignments/Django/email_validation/apps/main_app/views.pyc b/jessica_hart/assignments/Django/email_validation/apps/main_app/views.pyc
new file mode 100644
index 0000000..8a8cc9c
Binary files /dev/null and b/jessica_hart/assignments/Django/email_validation/apps/main_app/views.pyc differ
diff --git a/jessica_hart/assignments/Django/email_validation/db.sqlite3 b/jessica_hart/assignments/Django/email_validation/db.sqlite3
new file mode 100644
index 0000000..4900f18
Binary files /dev/null and b/jessica_hart/assignments/Django/email_validation/db.sqlite3 differ
diff --git a/jessica_hart/assignments/Django/email_validation/email_validation/__init__.py b/jessica_hart/assignments/Django/email_validation/email_validation/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/jessica_hart/assignments/Django/email_validation/email_validation/__init__.pyc b/jessica_hart/assignments/Django/email_validation/email_validation/__init__.pyc
new file mode 100644
index 0000000..bd3940e
Binary files /dev/null and b/jessica_hart/assignments/Django/email_validation/email_validation/__init__.pyc differ
diff --git a/jessica_hart/assignments/Django/email_validation/email_validation/settings.py b/jessica_hart/assignments/Django/email_validation/email_validation/settings.py
new file mode 100644
index 0000000..b0a41c8
--- /dev/null
+++ b/jessica_hart/assignments/Django/email_validation/email_validation/settings.py
@@ -0,0 +1,121 @@
+"""
+Django settings for email_validation 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 = '!!bxw6g^=wz_33iijt7ba+mm3!c7!mm#dd*d1&t1=6@^$pr_1%'
+
+# SECURITY WARNING: don't run with debug turned on in production!
+DEBUG = True
+
+ALLOWED_HOSTS = []
+
+
+# Application definition
+
+INSTALLED_APPS = [
+ 'apps.main_app',
+ '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 = 'email_validation.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 = 'email_validation.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 = 'America/Chicago'
+
+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/jessica_hart/assignments/Django/email_validation/email_validation/settings.pyc b/jessica_hart/assignments/Django/email_validation/email_validation/settings.pyc
new file mode 100644
index 0000000..1c542e1
Binary files /dev/null and b/jessica_hart/assignments/Django/email_validation/email_validation/settings.pyc differ
diff --git a/jessica_hart/assignments/Django/email_validation/email_validation/urls.py b/jessica_hart/assignments/Django/email_validation/email_validation/urls.py
new file mode 100644
index 0000000..e37db13
--- /dev/null
+++ b/jessica_hart/assignments/Django/email_validation/email_validation/urls.py
@@ -0,0 +1,22 @@
+"""email_validation 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.main_app.urls'))
+]
diff --git a/jessica_hart/assignments/Django/email_validation/email_validation/urls.pyc b/jessica_hart/assignments/Django/email_validation/email_validation/urls.pyc
new file mode 100644
index 0000000..cb486cc
Binary files /dev/null and b/jessica_hart/assignments/Django/email_validation/email_validation/urls.pyc differ
diff --git a/jessica_hart/assignments/Django/email_validation/email_validation/wsgi.py b/jessica_hart/assignments/Django/email_validation/email_validation/wsgi.py
new file mode 100644
index 0000000..49e5516
--- /dev/null
+++ b/jessica_hart/assignments/Django/email_validation/email_validation/wsgi.py
@@ -0,0 +1,16 @@
+"""
+WSGI config for email_validation 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", "email_validation.settings")
+
+application = get_wsgi_application()
diff --git a/jessica_hart/assignments/Django/email_validation/email_validation/wsgi.pyc b/jessica_hart/assignments/Django/email_validation/email_validation/wsgi.pyc
new file mode 100644
index 0000000..d5f2dbd
Binary files /dev/null and b/jessica_hart/assignments/Django/email_validation/email_validation/wsgi.pyc differ
diff --git a/jessica_hart/assignments/Django/email_validation/manage.py b/jessica_hart/assignments/Django/email_validation/manage.py
new file mode 100755
index 0000000..4fe4a7c
--- /dev/null
+++ b/jessica_hart/assignments/Django/email_validation/manage.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+import os
+import sys
+
+if __name__ == "__main__":
+ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "email_validation.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)
diff --git a/jessica_hart/assignments/Django/email_validation/screenshot-127-0-0-1-8000-1490102608457.png b/jessica_hart/assignments/Django/email_validation/screenshot-127-0-0-1-8000-1490102608457.png
new file mode 100644
index 0000000..ef8929d
Binary files /dev/null and b/jessica_hart/assignments/Django/email_validation/screenshot-127-0-0-1-8000-1490102608457.png differ
diff --git a/jessica_hart/assignments/Django/email_validation/screenshot-127-0-0-1-8000-success-1490102591095.png b/jessica_hart/assignments/Django/email_validation/screenshot-127-0-0-1-8000-success-1490102591095.png
new file mode 100644
index 0000000..2b9560e
Binary files /dev/null and b/jessica_hart/assignments/Django/email_validation/screenshot-127-0-0-1-8000-success-1490102591095.png differ