diff --git a/polls/__init__.py b/papermasters/__init__.py
similarity index 100%
rename from polls/__init__.py
rename to papermasters/__init__.py
diff --git a/papermasters/admin.py b/papermasters/admin.py
new file mode 100644
index 00000000..8c38f3f3
--- /dev/null
+++ b/papermasters/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/papermasters/apps.py b/papermasters/apps.py
new file mode 100644
index 00000000..b28e5919
--- /dev/null
+++ b/papermasters/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class PapermastersConfig(AppConfig):
+ default_auto_field = 'django.db.models.BigAutoField'
+ name = 'papermasters'
diff --git a/polls/migrations/__init__.py b/papermasters/migrations/__init__.py
similarity index 100%
rename from polls/migrations/__init__.py
rename to papermasters/migrations/__init__.py
diff --git a/papermasters/models.py b/papermasters/models.py
new file mode 100644
index 00000000..71a83623
--- /dev/null
+++ b/papermasters/models.py
@@ -0,0 +1,3 @@
+from django.db import models
+
+# Create your models here.
diff --git a/papermasters/tests.py b/papermasters/tests.py
new file mode 100644
index 00000000..7ce503c2
--- /dev/null
+++ b/papermasters/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/papermasters/urls.py b/papermasters/urls.py
new file mode 100644
index 00000000..1ebb1cfd
--- /dev/null
+++ b/papermasters/urls.py
@@ -0,0 +1,10 @@
+from django.contrib import admin
+from django.urls import include, path
+
+from . import views
+
+urlpatterns = [
+ path('', views.index, name='index'),
+ path('papermasters/', include('papermasters.urls')),
+ path('admin/', admin.site.urls),
+]
\ No newline at end of file
diff --git a/papermasters/views.py b/papermasters/views.py
new file mode 100644
index 00000000..1d9be571
--- /dev/null
+++ b/papermasters/views.py
@@ -0,0 +1,6 @@
+from django.shortcuts import render
+from django.http import HttpResponse
+
+# Create your views here.
+def index(request):
+ return HttpResponse("Hello, world. You're at the polls index.")
\ No newline at end of file
diff --git a/polls/admin.py b/polls/admin.py
deleted file mode 100644
index 88813f43..00000000
--- a/polls/admin.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from django.contrib import admin
-
-from .models import Choice, Question
-
-class ChoiceInline(admin.TabularInline):
- model = Choice
- extra = 3
-
-class QuestionAdmin(admin.ModelAdmin):
- fieldsets = [
- (None, {'fields': ['question_text']}),
- ('Date information', {'fields': ['pub_date']}),
- ]
- inlines = [ChoiceInline]
- list_display = ('question_text', 'pub_date', 'was_published_recently')
- list_filter = ['pub_date']
- search_fields = ['question_text']
-
-admin.site.register(Question, QuestionAdmin)
diff --git a/polls/apps.py b/polls/apps.py
deleted file mode 100644
index d0f109e6..00000000
--- a/polls/apps.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from django.apps import AppConfig
-
-
-class PollsConfig(AppConfig):
- name = 'polls'
diff --git a/polls/migrations/0001_initial.py b/polls/migrations/0001_initial.py
deleted file mode 100644
index 42515184..00000000
--- a/polls/migrations/0001_initial.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# Generated by Django 2.1.2 on 2018-10-23 09:01
-
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- initial = True
-
- dependencies = [
- ]
-
- operations = [
- migrations.CreateModel(
- name='Choice',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('choice_text', models.CharField(max_length=200)),
- ('votes', models.IntegerField(default=0)),
- ],
- ),
- migrations.CreateModel(
- name='Question',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('question_text', models.CharField(max_length=200)),
- ('pub_date', models.DateTimeField(verbose_name='date published')),
- ],
- ),
- migrations.AddField(
- model_name='choice',
- name='question',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='polls.Question'),
- ),
- ]
diff --git a/polls/models.py b/polls/models.py
deleted file mode 100644
index ebbb1858..00000000
--- a/polls/models.py
+++ /dev/null
@@ -1,24 +0,0 @@
-import datetime
-
-from django.db import models
-from django.utils import timezone
-
-# Create your models here.
-class Question(models.Model):
- question_text = models.CharField(max_length=200)
- pub_date = models.DateTimeField('date published')
- def __str__(self):
- return self.question_text
- def was_published_recently(self):
- now = timezone.now()
- return now - datetime.timedelta(days=1) <= self.pub_date <= now
- was_published_recently.admin_order_field = 'pub_date'
- was_published_recently.boolean = True
- was_published_recently.short_description = 'Published recently?'
-
-class Choice(models.Model):
- question = models.ForeignKey(Question, on_delete=models.CASCADE)
- choice_text = models.CharField(max_length=200)
- votes = models.IntegerField(default=0)
- def __str__(self):
- return self.choice_text
diff --git a/polls/static/polls/style.css b/polls/static/polls/style.css
deleted file mode 100644
index 03836011..00000000
--- a/polls/static/polls/style.css
+++ /dev/null
@@ -1,3 +0,0 @@
-li a {
- color: green;
-}
diff --git a/polls/templates/polls/detail.html b/polls/templates/polls/detail.html
deleted file mode 100644
index 3e555446..00000000
--- a/polls/templates/polls/detail.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
{{ question.question_text }}
-
-{% if error_message %}{{ error_message }}
{% endif %}
-
-
diff --git a/polls/templates/polls/index.html b/polls/templates/polls/index.html
deleted file mode 100644
index 18260b0d..00000000
--- a/polls/templates/polls/index.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% load static %}
-
-
-
-Polls app
-
-{% if latest_question_list %}
-
-{% else %}
- No polls are available.
-{% endif %}
diff --git a/polls/templates/polls/results.html b/polls/templates/polls/results.html
deleted file mode 100644
index 3b2c74f4..00000000
--- a/polls/templates/polls/results.html
+++ /dev/null
@@ -1,9 +0,0 @@
-{{ question.question_text }}
-
-
-{% for choice in question.choice_set.all %}
- - {{ choice.choice_text }} -- {{ choice.votes }} vote{{ choice.votes|pluralize }}
-{% endfor %}
-
-
-Vote again?
diff --git a/polls/tests.py b/polls/tests.py
deleted file mode 100644
index 2a9ecb2b..00000000
--- a/polls/tests.py
+++ /dev/null
@@ -1,124 +0,0 @@
-import datetime
-
-from django.test import TestCase
-from django.utils import timezone
-from django.urls import reverse
-
-from .models import Question
-
-
-class QuestionModelTests(TestCase):
-
- def test_was_published_recently_with_future_question(self):
- """
- was_published_recently() returns False for questions whose pub_date
- is in the future.
- """
- time = timezone.now() + datetime.timedelta(days=30)
- future_question = Question(pub_date=time)
- self.assertIs(future_question.was_published_recently(), False)
-
- def test_was_published_recently_with_old_question(self):
- """
- was_published_recently() returns False for questions whose pub_date
- is older than 1 day.
- """
- time = timezone.now() - datetime.timedelta(days=1, seconds=1)
- old_question = Question(pub_date=time)
- self.assertIs(old_question.was_published_recently(), False)
-
- def test_was_published_recently_with_recent_question(self):
- """
- was_published_recently() returns True for questions whose pub_date
- is within the last day.
- """
- time = timezone.now() - datetime.timedelta(hours=23, minutes=59, seconds=59)
- recent_question = Question(pub_date=time)
- self.assertIs(recent_question.was_published_recently(), True)
-
-def create_question(question_text, days):
- """
- Create a question with the given `question_text` and published the
- given number of `days` offset to now (negative for questions published
- in the past, positive for questions that have yet to be published).
- """
- time = timezone.now() + datetime.timedelta(days=days)
- return Question.objects.create(question_text=question_text, pub_date=time)
-
-class QuestionIndexViewTests(TestCase):
- def test_no_questions(self):
- """
- If no questions exist, an appropriate message is displayed.
- """
- response = self.client.get(reverse('polls:index'))
- self.assertEqual(response.status_code, 200)
- self.assertContains(response, "No polls are available.")
- self.assertQuerysetEqual(response.context['latest_question_list'], [])
-
- def test_past_question(self):
- """
- Questions with a pub_date in the past are displayed on the
- index page.
- """
- create_question(question_text="Past question.", days=-30)
- response = self.client.get(reverse('polls:index'))
- self.assertQuerysetEqual(
- response.context['latest_question_list'],
- ['']
- )
-
- def test_future_question(self):
- """
- Questions with a pub_date in the future aren't displayed on
- the index page.
- """
- create_question(question_text="Future question.", days=30)
- response = self.client.get(reverse('polls:index'))
- self.assertContains(response, "No polls are available.")
- self.assertQuerysetEqual(response.context['latest_question_list'], [])
-
- def test_future_question_and_past_question(self):
- """
- Even if both past and future questions exist, only past questions
- are displayed.
- """
- create_question(question_text="Past question.", days=-30)
- create_question(question_text="Future question.", days=30)
- response = self.client.get(reverse('polls:index'))
- self.assertQuerysetEqual(
- response.context['latest_question_list'],
- ['']
- )
-
- def test_two_past_questions(self):
- """
- The questions index page may display multiple questions.
- """
- create_question(question_text="Past question 1.", days=-30)
- create_question(question_text="Past question 2.", days=-5)
- response = self.client.get(reverse('polls:index'))
- self.assertQuerysetEqual(
- response.context['latest_question_list'],
- ['', '']
- )
-
-class QuestionDetailViewTests(TestCase):
- def test_future_question(self):
- """
- The detail view of a question with a pub_date in the future
- returns a 404 not found.
- """
- future_question = create_question(question_text='Future question.', days=5)
- url = reverse('polls:detail', args=(future_question.id,))
- response = self.client.get(url)
- self.assertEqual(response.status_code, 404)
-
- def test_past_question(self):
- """
- The detail view of a question with a pub_date in the past
- displays the question's text.
- """
- past_question = create_question(question_text='Past Question.', days=-5)
- url = reverse('polls:detail', args=(past_question.id,))
- response = self.client.get(url)
- self.assertContains(response, past_question.question_text)
diff --git a/polls/urls.py b/polls/urls.py
deleted file mode 100644
index eff2be0b..00000000
--- a/polls/urls.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from django.urls import path
-
-from . import views
-
-app_name = 'polls'
-urlpatterns = [
- path('', views.IndexView.as_view(), name='index'),
- path('/', views.DetailView.as_view(), name='detail'),
- path('/results/', views.ResultsView.as_view(), name='results'),
- path('/vote/', views.vote, name='vote'),
-]
diff --git a/polls/views.py b/polls/views.py
deleted file mode 100644
index 1652a6eb..00000000
--- a/polls/views.py
+++ /dev/null
@@ -1,56 +0,0 @@
-from django.shortcuts import get_object_or_404, render
-from django.http import HttpResponseRedirect
-from django.urls import reverse
-from django.views import generic
-from django.utils import timezone
-
-from .models import Choice, Question
-
-class IndexView(generic.ListView):
- template_name = 'polls/index.html'
- context_object_name = 'latest_question_list'
-
- def get_queryset(self):
- """
- Return the last five published questions (not including those set to be
- published in the future).
- """
- return Question.objects.filter(
- pub_date__lte=timezone.now()
- ).order_by('-pub_date')[:5]
-
-class DetailView(generic.DetailView):
- model = Question
- template_name = 'polls/detail.html'
- def get_queryset(self):
- """
- Update the model, excluding any questions that aren't published yet.
- """
- return Question.objects.filter(pub_date__lte=timezone.now())
-
-class ResultsView(generic.DetailView):
- model = Question
- template_name = 'polls/results.html'
- def get_queryset(self):
- """
- Excludes any questions that aren't published yet.
- """
- return Question.objects.filter(pub_date__lte=timezone.now())
-
-def vote(request, question_id):
- question = get_object_or_404(Question, pk=question_id)
- try:
- selected_choice = question.choice_set.get(pk=request.POST['choice'])
- except (KeyError, Choice.DoesNotExist):
- # Redisplay the question voting form.
- return render(request, 'polls/detail.html', {
- 'question': question,
- 'error_message': "You didn't select a choice.",
- })
- else:
- selected_choice.votes += 1
- selected_choice.save()
- # Always return an HttpResponseRedirect after successfully dealing
- # with POST data. This prevents data from being posted twice if a
- # user hits the Back button.
- return HttpResponseRedirect(reverse('polls:results', args=(question.id,)))