summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluxagraf <sng@luxagraf.net>2020-11-15 10:13:08 -0500
committerluxagraf <sng@luxagraf.net>2020-11-15 10:13:08 -0500
commit7509da286bccd1dda358507cd455f9297db59247 (patch)
tree779aa3660e453d73268d22a72d9a5599cc94aa02
parentb2434dcba142961b4a4b67780cf64e01d0908bf5 (diff)
ported jrnl building to posts
-rw-r--r--app/builder/views.py82
-rw-r--r--app/locations/build.py12
-rw-r--r--app/locations/views.py14
-rw-r--r--app/pages/admin.py16
-rw-r--r--app/pages/migrations/0007_homepage.py28
-rw-r--r--app/pages/migrations/0008_auto_20201114_0934.py30
-rw-r--r--app/pages/models.py15
-rw-r--r--app/pages/templates/pages/homepage.html98
-rw-r--r--app/pages/views.py24
-rw-r--r--app/posts/build.py78
-rw-r--r--app/posts/migrations/0001_initial.py2
-rw-r--r--app/posts/templates/posts/jrnl_detail.txt2
-rw-r--r--app/posts/templates/posts/jrnl_latest.html (renamed from design/templates/details/entry_latest.html)0
-rw-r--r--app/posts/views/jrnl_views.py2
-rw-r--r--app/taxonomy/migrations/0004_auto_20201114_0757.py35
-rw-r--r--app/unused_apps/fieldnotes_/__init__.py (renamed from app/fieldnotes/__init__.py)0
-rw-r--r--app/unused_apps/fieldnotes_/admin.py (renamed from app/fieldnotes/admin.py)0
-rw-r--r--app/unused_apps/fieldnotes_/build.py (renamed from app/fieldnotes/build.py)0
-rw-r--r--app/unused_apps/fieldnotes_/migrations/0001_initial.py (renamed from app/fieldnotes/migrations/0001_initial.py)0
-rw-r--r--app/unused_apps/fieldnotes_/migrations/0002_auto_20190303_1222.py (renamed from app/fieldnotes/migrations/0002_auto_20190303_1222.py)0
-rw-r--r--app/unused_apps/fieldnotes_/migrations/__init__.py (renamed from app/fieldnotes/migrations/__init__.py)0
-rw-r--r--app/unused_apps/fieldnotes_/models.py (renamed from app/fieldnotes/models.py)0
-rw-r--r--app/unused_apps/fieldnotes_/templates/fieldnotes/fieldnote_archive_list_date.html (renamed from app/fieldnotes/templates/fieldnotes/fieldnote_archive_list_date.html)0
-rw-r--r--app/unused_apps/fieldnotes_/templates/fieldnotes/fieldnote_detail.html (renamed from app/fieldnotes/templates/fieldnotes/fieldnote_detail.html)0
-rw-r--r--app/unused_apps/fieldnotes_/templates/fieldnotes/fieldnote_list.html (renamed from app/fieldnotes/templates/fieldnotes/fieldnote_list.html)0
-rw-r--r--app/unused_apps/fieldnotes_/urls.py (renamed from app/fieldnotes/urls.py)0
-rw-r--r--app/unused_apps/fieldnotes_/views.py (renamed from app/fieldnotes/views.py)0
-rw-r--r--app/unused_apps/jrnl/__init__.py (renamed from app/jrnl/__init__.py)0
-rw-r--r--app/unused_apps/jrnl/admin.py (renamed from app/jrnl/admin.py)0
-rw-r--r--app/unused_apps/jrnl/build.py (renamed from app/jrnl/build.py)0
-rw-r--r--app/unused_apps/jrnl/export.py (renamed from app/jrnl/export.py)0
-rw-r--r--app/unused_apps/jrnl/fields.py (renamed from app/jrnl/fields.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0001_initial.py (renamed from app/jrnl/migrations/0001_initial.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0001_squashed_0019_remove_entry_thumbnail.py (renamed from app/jrnl/migrations/0001_squashed_0019_remove_entry_thumbnail.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0002_entrytitlesong.py (renamed from app/jrnl/migrations/0002_entrytitlesong.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0003_auto_20160309_1018.py (renamed from app/jrnl/migrations/0003_auto_20160309_1018.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0004_auto_20160309_1031.py (renamed from app/jrnl/migrations/0004_auto_20160309_1031.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0005_auto_20160514_2151.py (renamed from app/jrnl/migrations/0005_auto_20160514_2151.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0006_auto_20160715_0703.py (renamed from app/jrnl/migrations/0006_auto_20160715_0703.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0007_delete_postimage.py (renamed from app/jrnl/migrations/0007_delete_postimage.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0008_auto_20160906_0845.py (renamed from app/jrnl/migrations/0008_auto_20160906_0845.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0009_homepagecurrator_image_offset_vertical.py (renamed from app/jrnl/migrations/0009_homepagecurrator_image_offset_vertical.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0010_auto_20161102_0916.py (renamed from app/jrnl/migrations/0010_auto_20161102_0916.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0011_auto_20161102_0925.py (renamed from app/jrnl/migrations/0011_auto_20161102_0925.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0012_auto_20161102_0930.py (renamed from app/jrnl/migrations/0012_auto_20161102_0930.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0013_entry_featured_image.py (renamed from app/jrnl/migrations/0013_entry_featured_image.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0014_homepagecurrator.py (renamed from app/jrnl/migrations/0014_homepagecurrator.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0015_entry_has_video.py (renamed from app/jrnl/migrations/0015_entry_has_video.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0016_auto_20161219_1058.py (renamed from app/jrnl/migrations/0016_auto_20161219_1058.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0017_entry_field_notes.py (renamed from app/jrnl/migrations/0017_entry_field_notes.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0018_auto_20180303_1037.py (renamed from app/jrnl/migrations/0018_auto_20180303_1037.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0019_remove_entry_thumbnail.py (renamed from app/jrnl/migrations/0019_remove_entry_thumbnail.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0020_auto_20180606_1058.py (renamed from app/jrnl/migrations/0020_auto_20180606_1058.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0021_auto_20180606_1058.py (renamed from app/jrnl/migrations/0021_auto_20180606_1058.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0022_auto_20180707_0958.py (renamed from app/jrnl/migrations/0022_auto_20180707_0958.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0023_auto_20180902_1210.py (renamed from app/jrnl/migrations/0023_auto_20180902_1210.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0024_auto_20180902_1217.py (renamed from app/jrnl/migrations/0024_auto_20180902_1217.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0025_auto_20190131_2335.py (renamed from app/jrnl/migrations/0025_auto_20190131_2335.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0026_entry_country_name.py (renamed from app/jrnl/migrations/0026_entry_country_name.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0027_entry_country_slug.py (renamed from app/jrnl/migrations/0027_entry_country_slug.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0028_auto_20190218_1614.py (renamed from app/jrnl/migrations/0028_auto_20190218_1614.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0029_home_more_popular.py (renamed from app/jrnl/migrations/0029_home_more_popular.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0030_remove_home_popular.py (renamed from app/jrnl/migrations/0030_remove_home_popular.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0031_auto_20190220_1136.py (renamed from app/jrnl/migrations/0031_auto_20190220_1136.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0032_entry_subtitle.py (renamed from app/jrnl/migrations/0032_entry_subtitle.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0033_entry_field_notes_two.py (renamed from app/jrnl/migrations/0033_entry_field_notes_two.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0034_remove_entry_field_notes.py (renamed from app/jrnl/migrations/0034_remove_entry_field_notes.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0035_auto_20190303_1610.py (renamed from app/jrnl/migrations/0035_auto_20190303_1610.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0036_enjoyitem.py (renamed from app/jrnl/migrations/0036_enjoyitem.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0037_enjoyitem_entry.py (renamed from app/jrnl/migrations/0037_enjoyitem_entry.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0038_remove_enjoyitem_entry.py (renamed from app/jrnl/migrations/0038_remove_enjoyitem_entry.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0039_enjoyitem_order.py (renamed from app/jrnl/migrations/0039_enjoyitem_order.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0040_auto_20190315_1906.py (renamed from app/jrnl/migrations/0040_auto_20190315_1906.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0041_auto_20190315_2240.py (renamed from app/jrnl/migrations/0041_auto_20190315_2240.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0042_auto_20190412_1805.py (renamed from app/jrnl/migrations/0042_auto_20190412_1805.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0043_auto_20190704_0903.py (renamed from app/jrnl/migrations/0043_auto_20190704_0903.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0044_auto_20190917_1703.py (renamed from app/jrnl/migrations/0044_auto_20190917_1703.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0045_entry_books_new.py (renamed from app/jrnl/migrations/0045_entry_books_new.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0046_remove_entry_books.py (renamed from app/jrnl/migrations/0046_remove_entry_books.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0047_auto_20191110_0859.py (renamed from app/jrnl/migrations/0047_auto_20191110_0859.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0048_auto_20191205_1720.py (renamed from app/jrnl/migrations/0048_auto_20191205_1720.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0049_entry_newrelated.py (renamed from app/jrnl/migrations/0049_entry_newrelated.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0050_auto_20191206_0741.py (renamed from app/jrnl/migrations/0050_auto_20191206_0741.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0051_auto_20201027_2102.py (renamed from app/jrnl/migrations/0051_auto_20201027_2102.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0052_entry_new_field_notes.py (renamed from app/jrnl/migrations/0052_entry_new_field_notes.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0053_auto_20201027_2105.py (renamed from app/jrnl/migrations/0053_auto_20201027_2105.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/0054_auto_20201111_2148.py (renamed from app/jrnl/migrations/0054_auto_20201111_2148.py)0
-rw-r--r--app/unused_apps/jrnl/migrations/__init__.py (renamed from app/jrnl/migrations/__init__.py)0
-rw-r--r--app/unused_apps/jrnl/models.py (renamed from app/jrnl/models.py)0
-rw-r--r--app/unused_apps/jrnl/templates/horizontal_select.html (renamed from app/jrnl/templates/horizontal_select.html)0
-rw-r--r--app/unused_apps/jrnl/templates/jrnl/entry_detail.html (renamed from app/jrnl/templates/jrnl/entry_detail.html)0
-rw-r--r--app/unused_apps/jrnl/templates/jrnl/entry_detail.txt (renamed from app/jrnl/templates/jrnl/entry_detail.txt)0
-rw-r--r--app/unused_apps/jrnl/templates/jrnl/entry_list.html (renamed from app/jrnl/templates/jrnl/entry_list.html)0
-rw-r--r--app/unused_apps/jrnl/urls.py (renamed from app/jrnl/urls.py)0
-rw-r--r--app/unused_apps/jrnl/views.py (renamed from app/jrnl/views.py)0
-rw-r--r--app/unused_apps/publications/__init__.py (renamed from app/publications/__init__.py)0
-rw-r--r--app/unused_apps/publications/admin.py (renamed from app/publications/admin.py)0
-rw-r--r--app/unused_apps/publications/migrations/0001_initial.py (renamed from app/publications/migrations/0001_initial.py)0
-rw-r--r--app/unused_apps/publications/migrations/0002_editor_section.py (renamed from app/publications/migrations/0002_editor_section.py)0
-rw-r--r--app/unused_apps/publications/migrations/0003_auto_20190131_0923.py (renamed from app/publications/migrations/0003_auto_20190131_0923.py)0
-rw-r--r--app/unused_apps/publications/migrations/0004_pitchidea.py (renamed from app/publications/migrations/0004_pitchidea.py)0
-rw-r--r--app/unused_apps/publications/migrations/0005_auto_20190131_1100.py (renamed from app/publications/migrations/0005_auto_20190131_1100.py)0
-rw-r--r--app/unused_apps/publications/migrations/0006_auto_20190222_1819.py (renamed from app/publications/migrations/0006_auto_20190222_1819.py)0
-rw-r--r--app/unused_apps/publications/migrations/__init__.py (renamed from app/publications/migrations/__init__.py)0
-rw-r--r--app/unused_apps/publications/models.py (renamed from app/publications/models.py)0
-rw-r--r--app/unused_apps/publications/urls.py (renamed from app/publications/urls.py)0
-rw-r--r--app/unused_apps/publications/views.py (renamed from app/publications/views.py)0
-rw-r--r--config/base_urls.py5
-rw-r--r--design/templates/base.html2
109 files changed, 370 insertions, 75 deletions
diff --git a/app/builder/views.py b/app/builder/views.py
index 7d463a7..5e67dc2 100644
--- a/app/builder/views.py
+++ b/app/builder/views.py
@@ -1,82 +1,76 @@
from django.shortcuts import render
from django.template import RequestContext
-from builder.base import BuildWriting, BuildWritingFeed, BuildMap, BuildPhotos, BuildProjects, BuildSitemap
-from jrnl.build import archive_builder, detail_builder, home_builder, rss_builder, map_builder
+#from builder.base import BuildWriting, BuildWritingFeed, BuildMap, BuildPhotos, BuildProjects, BuildSitemap
+#from jrnl.build import archive_builder, detail_builder, home_builder, rss_builder, map_builder
from resume.build import pub_builder, resume_builder
from books.build import builder as book_builder
from sightings.build import builder as sightings_builder
from photos.build import builder as photo_builder
#from notes.build import builder as notes_builder
from pages.build import builder as page_builder
-#from fieldnotes.build import builder as fieldnotes_builder
from photos.build import dailybuilder
-from posts.build import src_builder, guide_builder, fieldnotes_builder
+from posts.build import BuildJrnl, BuildFieldNotes, BuildSrc, BuildGuide, BuildHome
from lttr.build import lttr_builder
-options = {
- 'writing': BuildWriting,
- 'photo_galleries': BuildPhotos,
- 'projects': BuildProjects,
- 'feed': BuildWritingFeed,
- 'sitemap': BuildSitemap,
-}
-
-
def do_build(request):
section = request.GET.get('id', '')
context = {}
if section == 'builddetails':
context = {'message': 'Writing Jrnl Permalinks to Disk'}
- detail_builder()
+ p = BuildJrnl("posts", "post")
+ p.build_latest()
+ p.build_detail_view()
elif section == 'writingarchives':
context = {'message': 'Writing Jrnl Archives to Disk'}
- archive_builder()
- elif section == 'resume':
- context = {'message': 'Writing Resume to Disk'}
- resume_builder()
- elif section == 'pubs':
- context = {'message': 'Writing Publications to Disk'}
- pub_builder()
+ BuildJrnl("posts", "post").build_arc()
elif section == 'buildrss':
context = {'message': 'Writing RSS to Disk'}
- rss_builder()
- elif section == 'dailyphotos':
- context = {'message': 'Writing daily photo pages to Disk'}
- dailybuilder()
+ BuildJrnl("posts", "post").build_feed("jrnl:feed")
elif section == 'homepage':
context = {'message': 'Writing index to Disk'}
- home_builder()
+ BuildHome("posts", "post").homepage()
+ elif section == 'src':
+ context = {'message': 'Writing src section to Disk'}
+ BuildSrc("posts", "post").build()
+ elif section == 'guide':
+ context = {'message': 'Writing guide section to Disk'}
+ BuildGuide("posts", "post").build()
+ elif section == 'pages':
+ context = {'message': 'Writing Pages to Disk'}
+ page_builder()
+ elif section == 'fieldnotes':
+ context = {'message': 'Writing FieldNotes to Disk'}
+ BuildFieldNotes("posts", "post").build()
+ elif section == 'lttr_archive':
+ context = {'message': 'Writing newsletter archives to Disk'}
+ lttr_builder()
elif section == 'buildbooks':
context = {'message': 'Writing Book Pages to Disk'}
book_builder()
elif section == 'buildsightings':
context = {'message': 'Writing Sightings Pages to Disk'}
sightings_builder()
- elif section == 'src':
- context = {'message': 'Writing src section to Disk'}
- src_builder()
- elif section == 'guide':
- context = {'message': 'Writing guide section to Disk'}
- guide_builder()
elif section == 'luxphotos':
context = {'message': 'Writing galleries to Disk'}
photo_builder()
elif section == 'figments':
context = {'message': 'Writing figments to Disk'}
figments_builder()
- elif section == 'pages':
- context = {'message': 'Writing Pages to Disk'}
- page_builder()
+ elif section == 'resume':
+ context = {'message': 'Writing Resume to Disk'}
+ resume_builder()
+ elif section == 'pubs':
+ context = {'message': 'Writing Publications to Disk'}
+ pub_builder()
elif section == 'map':
context = {'message': 'Writing Map to Disk'}
map_builder()
- elif section == 'fieldnotes':
- context = {'message': 'Writing FieldNotes to Disk'}
- fieldnotes_builder()
- elif section == 'lttr_archive':
- context = {'message': 'Writing newsletter archives to Disk'}
- lttr_builder()
- else:
- options[section]().build()
- context = {'message': 'Writing %s to Disk' % section}
+ elif section == 'dailyphotos':
+ context = {'message': 'Writing daily photo pages to Disk'}
+ dailybuilder()
return render(request, 'admin/message.html', context)
+
+
+
+
+
diff --git a/app/locations/build.py b/app/locations/build.py
new file mode 100644
index 0000000..cf17c59
--- /dev/null
+++ b/app/locations/build.py
@@ -0,0 +1,12 @@
+
+ def build_map(self):
+ self.build_list_view(
+ base_path=reverse("map:maplist"),
+ paginate_by=1000000
+ )
+ response = self.client.get(reverse("map:mapdata"))
+ self.write_file("media/js/mainmap", response.content, 'js', '')
+
+def map_builder():
+ j = BuildJrnl("jrnl", "entry")
+ j.build_map()
diff --git a/app/locations/views.py b/app/locations/views.py
index bf6cd84..e5d580b 100644
--- a/app/locations/views.py
+++ b/app/locations/views.py
@@ -5,7 +5,7 @@ from django.views.generic.detail import DetailView
from django.conf import settings
from django.db.models import Q
-from jrnl.models import Entry
+from posts.models import Post
#from projects.shortcuts import render_to_geojson
from sightings.models import Sighting
from utils.views import PaginatedListView
@@ -13,7 +13,7 @@ from .models import Country, Region, Route, Location, Track
def map_list(request):
context = {
- 'object_list': Entry.objects.filter(status__exact=1),
+ 'object_list': Post.objects.filter(status__exact=1),
'country_list': Country.objects.filter(visited=True).exclude(name='default'),
'route_list': Route.objects.all(),
'region_list': Region.objects.all()
@@ -29,7 +29,7 @@ class MapList(ListView):
Return list of Entries on map
"""
context_object_name = 'object_list'
- queryset = Entry.objects.filter(status__exact=1)
+ queryset = Post.objects.filter(status__exact=1)
template_name = 'archives/map.html'
def get_context_data(self, **kwargs):
@@ -47,7 +47,7 @@ class MapDataList(ListView):
Build data file for Entries on map
"""
context_object_name = 'object_list'
- queryset = Entry.objects.filter(status__exact=1)
+ queryset = Post.objects.filter(status__exact=1)
template_name = 'archives/map_data.html'
def get_context_data(self, **kwargs):
@@ -61,7 +61,7 @@ class MapDataList(ListView):
def map_data(request):
context = {
- 'object_list': Entry.objects.filter(status__exact=1),
+ 'object_list': Post.objects.filter(status__exact=1),
'route_list': Route.objects.all(),
'country_list': Country.objects.filter(visited=True).exclude(name='default'),
'region_list': Region.objects.all()
@@ -90,7 +90,7 @@ class LocationDetail(DetailView):
def get_context_data(self, **kwargs):
context = super(LocationDetail, self).get_context_data(**kwargs)
- context['entry_list'] = Entry.objects.filter(
+ context['entry_list'] = Post.objects.filter(
Q(location=self.get_object()) |
Q(location__in=Location.objects.filter(parent=self.get_object()))
)
@@ -106,7 +106,7 @@ class TrackDetail(DetailView):
def get_context_data(self, **kwargs):
context = super(WalkDetail, self).get_context_data(**kwargs)
- context['entry_list'] = Entry.objects.filter(
+ context['entry_list'] = Post.objects.filter(
Q(location=self.get_object().location) |
Q(location__in=Location.objects.filter(parent=self.get_object().location))
)
diff --git a/app/pages/admin.py b/app/pages/admin.py
index 5cd2b23..4b4dcce 100644
--- a/app/pages/admin.py
+++ b/app/pages/admin.py
@@ -1,10 +1,11 @@
from django.contrib import admin
+from utils.widgets import LGEntryForm
from django import forms
from django.forms import Textarea
from django.db import models
-from pages.models import Page
+from pages.models import Page, HomePage
class PageEntryForm(forms.ModelForm):
@@ -16,6 +17,7 @@ class PageEntryForm(forms.ModelForm):
}
+@admin.register(Page)
class PageAdmin(admin.ModelAdmin):
form = PageEntryForm
list_display = ('title', 'slug', 'path', 'app', 'build')
@@ -32,4 +34,14 @@ class PageAdmin(admin.ModelAdmin):
})
)
-admin.site.register(Page, PageAdmin)
+
+@admin.register(HomePage)
+class HomePageAdmin(admin.ModelAdmin):
+ form = LGEntryForm
+ filter_horizontal = ('popular',)
+
+ class Media:
+ js = ('image-loader.js', 'next-prev-links.js')
+ css = {
+ "all": ("my_styles.css",)
+ }
diff --git a/app/pages/migrations/0007_homepage.py b/app/pages/migrations/0007_homepage.py
new file mode 100644
index 0000000..c11aae9
--- /dev/null
+++ b/app/pages/migrations/0007_homepage.py
@@ -0,0 +1,28 @@
+# Generated by Django 3.1 on 2020-11-14 09:30
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('posts', '0015_post_old_image'),
+ ('photos', '0019_auto_20190704_0903'),
+ ('pages', '0006_page_enable_comments'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='HomePage',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('image_offset_vertical', models.CharField(help_text='add negative top margin to shift image (include css unit)', max_length=20)),
+ ('tag_line', models.CharField(max_length=200, null=True)),
+ ('template_name', models.CharField(help_text='full path', max_length=200)),
+ ('featured', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='banner', to='posts.post')),
+ ('featured_image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='photos.luximage')),
+ ('popular', models.ManyToManyField(related_name='popular', to='posts.Post')),
+ ],
+ ),
+ ]
diff --git a/app/pages/migrations/0008_auto_20201114_0934.py b/app/pages/migrations/0008_auto_20201114_0934.py
new file mode 100644
index 0000000..e8465a6
--- /dev/null
+++ b/app/pages/migrations/0008_auto_20201114_0934.py
@@ -0,0 +1,30 @@
+# Generated by Django 3.1 on 2020-11-14 09:34
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('photos', '0019_auto_20190704_0903'),
+ ('pages', '0007_homepage'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='homepage',
+ name='featured_image',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='photos.luximage'),
+ ),
+ migrations.AlterField(
+ model_name='homepage',
+ name='tag_line',
+ field=models.CharField(blank=True, max_length=200, null=True),
+ ),
+ migrations.AlterField(
+ model_name='homepage',
+ name='template_name',
+ field=models.CharField(blank=True, help_text='full path', max_length=200, null=True),
+ ),
+ ]
diff --git a/app/pages/models.py b/app/pages/models.py
index 5e9cd5b..8caa29e 100644
--- a/app/pages/models.py
+++ b/app/pages/models.py
@@ -2,6 +2,8 @@ import re
from django.db import models
from django.contrib.sitemaps import Sitemap
+from photos.models import LuxImage
+from posts.models import Post
from utils.util import markdown_to_html, render_images
@@ -33,6 +35,19 @@ class Page(models.Model):
super(Page, self).save()
+class HomePage(models.Model):
+ """
+ simple model to control the featured article on the homepage
+ also allows me to fudge the "popular" section to be what I want
+ """
+ image_offset_vertical = models.CharField(max_length=20, help_text="add negative top margin to shift image (include css unit)")
+ featured_image = models.ForeignKey(LuxImage, on_delete=models.CASCADE)
+ tag_line = models.CharField(max_length=200, null=True, blank=True)
+ featured = models.ForeignKey(Post, on_delete=models.CASCADE, related_name="banner")
+ popular = models.ManyToManyField(Post, related_name="popular")
+ template_name = models.CharField(max_length=200, help_text="full path", null=True, blank=True)
+
+
class PageSitemap(Sitemap):
changefreq = "never"
priority = 1.0
diff --git a/app/pages/templates/pages/homepage.html b/app/pages/templates/pages/homepage.html
new file mode 100644
index 0000000..c8075ea
--- /dev/null
+++ b/app/pages/templates/pages/homepage.html
@@ -0,0 +1,98 @@
+{% extends 'base.html' %}
+{% load typogrify_tags %}
+{% block sitename %}
+<head itemscope itemtype="http://schema.org/WebSite">
+ <title itemprop='name'>Luxagraf: thoughts on ecology, culture, travel, photography, walking and other ephemera</title>
+ <link rel="canonical" href="https://luxagraf.net/">{%endblock%}
+
+ {%block extrahead%}
+<style>
+@media screen and (min-width: 1440px) {
+ .banner .post-image img {
+ margin-top: {{object.image_offset_vertical}};
+ }
+}
+</style>
+{%endblock%}
+{%block bodyid%}id="home" class="archive"{%endblock%}
+
+{% block primary %}<div class="banner">{% with object=homepage.featured %}
+ <article class="h-entry hentry" itemscope itemType="http://schema.org/Article">
+ <figure class="post-image">
+ <a href="{{object.get_absolute_url}}" title="{{object.title}}">{%with image=homepage.featured_image%}
+ <img class="u-photo" itemprop="image" sizes="(max-width: 960px) 100vw"
+ srcset="{{image.get_srcset}}"
+ src="{{image.get_src}}"
+ alt="{{image.alt}} photographed by {% if image.photo_credit_source %}{{image.photo_credit_source}}{%else%}luxagraf{%endif%}">
+ </a>{%endwith%}
+ <figcaption>
+ <div class="hero-text-wrapper">
+ <h1 class="p-name entry-title post-title" itemprop="headline">{%if object.template_name == 1 or object.template_name == 3 %}{{object.title|smartypants|safe}}{%else%}{{object.title|smartypants|safe}}{%endif%}</h1>
+ <h2 class="post-subtitle">{% if object.subtitle %}{{object.subtitle|smartypants|safe}}{%else%}{{homepage.tag_line|safe|smartypants}}{%endif%}</h2>
+ <aside class="p-location h-adr adr post-location" itemprop="contentLocation" itemscope itemtype="http://schema.org/Place">
+ <div class="h-adr" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">{% if object.location.country_name == "United States" %}<span class="p-locality locality" itemprop="addressLocality">{{object.location.name|smartypants|safe}}</span>, <a class="p-region region" href="/jrnl/united-states/" title="travel writing from the United States">{{object.location.state_name|safe}}</a>, <span class="p-country-name" itemprop="addressCountry">U.S.</span>{%else%}<span class="p-region" itemprop="addressRegion">{{object.location.name|smartypants|safe}}</span>, <a class="p-country-name country-name" href="/jrnl/{{object.location.country_slug}}/" title="travel writing from {{object.location.country_name}}"><span itemprop="addressCountry">{{object.location.country_name|safe}}</span></a>{%endif%}</div>
+ </aside>
+ <time class="dt-published published dt-updated post-date" datetime="{{object.pub_date|date:'c'}}" itemprop="datePublished">{{object.pub_date|date:"F"}} <span>{{object.pub_date|date:"j, Y"}}</span></time>
+ <span class="hide" itemprop="author" itemscope itemtype="http://schema.org/Person">by <a class="p-author h-card" href="/about"><span itemprop="name">Scott Gilbertson</span></a></span>
+ <a href="{{object.get_absolute_url}}" class="u-url btn" title="{%if object.title_keywords%}{{object.title_keywords}}{%else%}{{object.title}}{%endif%}">Read</a>
+ </div>
+ </figcaption>
+ </figure>
+ </article>{% endwith %}
+ </div>
+ <section class="bio-short">
+ <h2 class="homepage-section-header">About Luxagraf</h2>
+ <img src="/media/img/usa-resize.svg" alt="map of travels" class="homepage-map-img" />
+ <p>We’re a family of five living full time in a vintage 1969 Dodge Travco motorhome. We’ve been at it for three years now. People always ask: <a href="https://luxagraf.net/1969-dodge-travco-motorhome">What's it like for five people to live in a 26ft RV</a>? <a href="https://luxagraf.net/essay/why-a-vintage-rv">Why do we live this way</a>?</p>
+ <p>The short answer is simple: because we like it and we can. If you want more than a soundbite, <a href="/jrnl/">read through the journal</a>. If you like it, sign up for the newsletter, <a href="/newsletter/friends/"><em>Friends of a Long Year</em></a>. I'd also <a href="/feed.xml">subscribe to the RSS feed</a>, but that's just <a href="/about">me</a>. <!-- If you’re interested there’s a guide section with some <a href="/guides/">advice, tips and tricks for those who’d aspire to live full time in a van or RV</a> --></p>
+ </section>
+ <section class="recent-popular">
+ <div class="recent">
+ <h2 class="homepage-section-header">Recent</h2>
+ <div class="archive-grid">{% for object in object_list %}
+ <article class="h-entry hentry archive-card {% cycle 'odd' 'even' %} {% cycle 'first' 'second' 'third' %}" itemscope itemType="http://schema.org/Article">
+ <div class="post-image">
+ <a href="{{object.get_absolute_url}}" title="{{object.title}}">{% if object.featured_image %}
+ {% include "lib/img_archive.html" with image=object.featured_image %}
+ {%else%}
+ <img src="{{object.get_image_url}}" alt="{{ object.title }}" class="u-photo post-image" itemprop="image" />{%endif%}</a>
+ </div>
+ <h3 class="p-name entry-title post-title" itemprop="headline"><a href="{{object.get_absolute_url}}" class="u-url" title="{%if object.title_keywords%}{{object.title_keywords}}{%else%}{{object.title}}{%endif%}">{{object.title|safe|smartypants|widont}}</a></h3>
+ <p class="p-author author hide" itemprop="author"><span class="byline-author" itemscope itemtype="http://schema.org/Person"><span itemprop="name">Scott Gilbertson</span></span></p>
+ <time class="dt-published published dt-updated post-date" datetime="{{object.pub_date|date:'c'}}">{{object.pub_date|date:"F"}} <span>{{object.pub_date|date:"j, Y"}}</span></time>
+ <p class="post-summary">
+ <span class="p-location h-adr adr post-location" itemprop="contentLocation" itemscope itemtype="http://schema.org/Place">
+ {% if object.location.country_name == "United States" %}<span class="p-locality locality">{{object.location.name|smartypants|safe}}</span>, <a class="p-region region" href="/jrnl/united-states/" title="travel writing from the United States">{{object.location.state_name}}</a>, <span class="p-country-name">U.S.</span>{%else%}<span class="p-region">{{object.location.name|smartypants|safe}}</span>, <a class="p-country-name country-name" href="/jrnl/{{object.location.country_slug}}/" title="travel writing from {{object.location.country_name}}">{{object.location.country_name}}</a>{%endif%}
+ </span>
+ </p>
+ </article> {% endfor %}
+ </div>
+ </div>
+ <div class="popular">
+ <h2 class="homepage-section-header">Popular</h2>
+ <div class="archive-grid">{% for object in homepage.popular.all %}
+ <article class="h-entry hentry archive-card {% cycle 'odd' 'even' %} {% cycle 'first' 'second' 'third' %}" itemscope itemType="http://schema.org/Article">
+ <div class="post-image">
+ <a href="{{object.get_absolute_url}}" title="{{object.title}}">{% if object.featured_image %}
+ {% include "lib/img_archive.html" with image=object.featured_image %}
+ {%else%}
+ <img src="{{object.get_image_url}}" alt="{{ object.title }}" class="u-photo post-image" itemprop="image" />{%endif%}</a>
+ </div>
+ <h3 class="p-name entry-title post-title" itemprop="headline"><a href="{{object.get_absolute_url}}" class="u-url" title="{%if object.title_keywords%}{{object.title_keywords}}{%else%}{{object.title}}{%endif%}">{{object.title|safe|smartypants|widont}}</a></h3>
+ <p class="p-author author hide" itemprop="author"><span class="byline-author" itemscope itemtype="http://schema.org/Person"><span itemprop="name">Scott Gilbertson</span></span></p>
+ <time class="dt-published published dt-updated post-date" datetime="{{object.pub_date|date:'c'}}">{{object.pub_date|date:"F"}} <span>{{object.pub_date|date:"j, Y"}}</span></time>
+ <p class="post-summary">
+ <span class="p-location h-adr adr post-location" itemprop="contentLocation" itemscope itemtype="http://schema.org/Place">
+ {% if object.location.country_name == "United States" %}<span class="p-locality locality">{{object.location.name|smartypants|safe}}</span>, <a class="p-region region" href="/jrnl/united-states/" title="travel writing from the United States">{{object.location.state_name}}</a>, <span class="p-country-name">U.S.</span>{%else%}<span class="p-region">{{object.location.name|smartypants|safe}}</span>, <a class="p-country-name country-name" href="/jrnl/{{object.location.country.slug}}/" title="travel writing from {{object.location.country_name}}">{{object.location.country_name}}</a>{%endif%}
+ </span>
+ </p>
+ </article> {% endfor %}
+ </div>
+ </div>
+ </section>
+ <section>
+ <h5 class="homepage-next"><a href="/jrnl/">Browse the Archives</a></h5>
+ </section>
+{% endblock %}
+
+{% block js %}{% comment %} <script async src="/media/js/hyphenate.min.js" type="text/javascript"></script>{% endcomment%}{% endblock%}
diff --git a/app/pages/views.py b/app/pages/views.py
index 167ad01..ed8d380 100644
--- a/app/pages/views.py
+++ b/app/pages/views.py
@@ -1,6 +1,9 @@
from utils.views import LuxDetailView
+from django.views.generic import DetailView
-from .models import Page
+from locations.models import LuxCheckIn
+from posts.models import Post, PostType
+from .models import Page, HomePage
class PageDetailView(LuxDetailView):
@@ -15,3 +18,22 @@ class PageDetailTXTView(LuxDetailView):
model = Page
slug_field = "slug"
template_name = "pages/page_detail.txt"
+
+
+class HomePageList(DetailView):
+ """
+ Return a main entry and list of Entries in reverse chronological order
+ """
+ model = HomePage
+
+ def get_template_names(self):
+ return ["pages/%s.html" % self.template_name, 'pages/homepage.html']
+
+ def get_context_data(self, **kwargs):
+ # Call the base implementation first to get a context
+ context = super(HomePageList, self).get_context_data(**kwargs)
+ context['object_list'] = Post.objects.filter(post_type=PostType.JRNL).filter(status__exact=1).order_by('-pub_date').exclude().select_related('location').select_related('featured_image')[1:9]
+ context['location'] = LuxCheckIn.objects.latest()
+ return context
+
+
diff --git a/app/posts/build.py b/app/posts/build.py
index 73c52e2..8c8fee0 100644
--- a/app/posts/build.py
+++ b/app/posts/build.py
@@ -20,11 +20,6 @@ class BuildSrc(BuildNew):
self.build_detail_view()
-def src_builder():
- j = BuildSrc("posts", "post")
- j.build()
-
-
class BuildGuide(BuildNew):
def get_model_queryset(self):
@@ -38,11 +33,6 @@ class BuildGuide(BuildNew):
self.build_detail_view()
-def guide_builder():
- j = BuildGuide("posts", "post")
- j.build()
-
-
class BuildFieldNotes(BuildNew):
def get_model_queryset(self):
@@ -58,6 +48,68 @@ class BuildFieldNotes(BuildNew):
self.build_month_view("fieldnotes:list_month")
-def fieldnotes_builder():
- j = BuildFieldNotes("posts", "post")
- j.build()
+class BuildJrnl(BuildNew):
+ '''
+ Write jrnl to disk
+ '''
+ def get_model_queryset(self):
+ return self.model.objects.filter(post_type=PostType.JRNL).filter(status__exact=1).order_by('-pub_date')
+
+ def build(self):
+ self.build_list_view(
+ base_path=reverse("jrnl:list"),
+ paginate_by=24
+ )
+ self.build_year_view("jrnl:list_year")
+ self.build_month_view("jrnl:list_month")
+ self.build_detail_view()
+ self.build_location_view()
+ self.build_latest()
+
+ def build_arc(self):
+ self.build_list_view(
+ base_path=reverse("jrnl:list"),
+ paginate_by=24
+ )
+ self.build_year_view("jrnl:list_year")
+ self.build_month_view("jrnl:list_month")
+ self.build_location_view()
+
+ def build_location_view(self):
+ c = apps.get_model('locations', 'Country')
+ r = apps.get_model('locations', 'Region')
+ countries = c.objects.filter(visited=True)
+ regions = r.objects.all()
+ locations = list(chain(countries, regions))
+ for c in locations:
+ try:
+ qs = self.model.objects.filter(
+ status__exact=1,
+ location__state__country=c
+ )
+ except:
+ qs = self.model.objects.filter(
+ status__exact=1,
+ location__state__country__lux_region=c.id
+ )
+ print(c)
+ pages = self.get_pages(qs, 24)
+ for page in range(pages):
+ base_path = reverse("jrnl:list_country", kwargs={'slug': c.slug, 'page': page + 1})
+ response = self.client.get(base_path)
+ print(response.content)
+ if page == 0:
+ self.write_file(base_path, response.content)
+ else:
+ self.write_file(base_path, response.content)
+
+ def build_latest(self):
+ response = self.client.get('/jrnl/latest/')
+ self.write_file(reverse("jrnl:latest"), response.content)
+
+
+class BuildHome(BuildNew):
+
+ def build(self):
+ response = self.client.get('/')
+ self.write_file('', response.content)
diff --git a/app/posts/migrations/0001_initial.py b/app/posts/migrations/0001_initial.py
index e853a06..3c36ee9 100644
--- a/app/posts/migrations/0001_initial.py
+++ b/app/posts/migrations/0001_initial.py
@@ -11,12 +11,10 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
- ('jrnl', '0044_auto_20190917_1703'),
('books', '0009_book_afflink'),
('normalize', '__first__'),
('taxonomy', '0001_initial'),
('locations', '0018_auto_20190414_2124'),
- ('fieldnotes', '0002_auto_20190303_1222'),
('photos', '0019_auto_20190704_0903'),
]
diff --git a/app/posts/templates/posts/jrnl_detail.txt b/app/posts/templates/posts/jrnl_detail.txt
index 547ce79..a608b88 100644
--- a/app/posts/templates/posts/jrnl_detail.txt
+++ b/app/posts/templates/posts/jrnl_detail.txt
@@ -2,7 +2,7 @@
{% for letter in object.title %}={%endfor%}
by Scott Gilbertson
- <{{SITE_URL}}{{object.get_absolute_url}}>
+ <https://luxagraf.net{{object.get_absolute_url}}>
{{object.pub_date|date:"l, d F Y"}}
{{object.body_markdown|safe}}
diff --git a/design/templates/details/entry_latest.html b/app/posts/templates/posts/jrnl_latest.html
index 03e3c56..03e3c56 100644
--- a/design/templates/details/entry_latest.html
+++ b/app/posts/templates/posts/jrnl_latest.html
diff --git a/app/posts/views/jrnl_views.py b/app/posts/views/jrnl_views.py
index 1ff7a4c..0dc2dc8 100644
--- a/app/posts/views/jrnl_views.py
+++ b/app/posts/views/jrnl_views.py
@@ -121,7 +121,7 @@ class JrnlDetailViewTXT(JrnlDetailView):
class JrnlLatestView(JrnlDetailView):
- template_name = "details/entry_latest.html"
+ template_name = "posts/jrnl_latest.html"
def get_object(self, queryset=None):
obj = self.model.objects.filter(status=1).latest()
diff --git a/app/taxonomy/migrations/0004_auto_20201114_0757.py b/app/taxonomy/migrations/0004_auto_20201114_0757.py
new file mode 100644
index 0000000..8cc9de2
--- /dev/null
+++ b/app/taxonomy/migrations/0004_auto_20201114_0757.py
@@ -0,0 +1,35 @@
+# Generated by Django 3.1 on 2020-11-14 07:57
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('contenttypes', '0002_remove_content_type_name'),
+ ('taxonomy', '0003_category_pluralized_name'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='luxtag',
+ name='name',
+ field=models.CharField(max_length=100, unique=True, verbose_name='name'),
+ ),
+ migrations.AlterField(
+ model_name='luxtag',
+ name='slug',
+ field=models.SlugField(max_length=100, unique=True, verbose_name='slug'),
+ ),
+ migrations.AlterField(
+ model_name='taggeditems',
+ name='content_type',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='taxonomy_taggeditems_tagged_items', to='contenttypes.contenttype', verbose_name='content type'),
+ ),
+ migrations.AlterField(
+ model_name='taggeditems',
+ name='object_id',
+ field=models.IntegerField(db_index=True, verbose_name='object ID'),
+ ),
+ ]
diff --git a/app/fieldnotes/__init__.py b/app/unused_apps/fieldnotes_/__init__.py
index e69de29..e69de29 100644
--- a/app/fieldnotes/__init__.py
+++ b/app/unused_apps/fieldnotes_/__init__.py
diff --git a/app/fieldnotes/admin.py b/app/unused_apps/fieldnotes_/admin.py
index 838063d..838063d 100644
--- a/app/fieldnotes/admin.py
+++ b/app/unused_apps/fieldnotes_/admin.py
diff --git a/app/fieldnotes/build.py b/app/unused_apps/fieldnotes_/build.py
index 4c5c83b..4c5c83b 100644
--- a/app/fieldnotes/build.py
+++ b/app/unused_apps/fieldnotes_/build.py
diff --git a/app/fieldnotes/migrations/0001_initial.py b/app/unused_apps/fieldnotes_/migrations/0001_initial.py
index cec67fb..cec67fb 100644
--- a/app/fieldnotes/migrations/0001_initial.py
+++ b/app/unused_apps/fieldnotes_/migrations/0001_initial.py
diff --git a/app/fieldnotes/migrations/0002_auto_20190303_1222.py b/app/unused_apps/fieldnotes_/migrations/0002_auto_20190303_1222.py
index c0e352e..c0e352e 100644
--- a/app/fieldnotes/migrations/0002_auto_20190303_1222.py
+++ b/app/unused_apps/fieldnotes_/migrations/0002_auto_20190303_1222.py
diff --git a/app/fieldnotes/migrations/__init__.py b/app/unused_apps/fieldnotes_/migrations/__init__.py
index e69de29..e69de29 100644
--- a/app/fieldnotes/migrations/__init__.py
+++ b/app/unused_apps/fieldnotes_/migrations/__init__.py
diff --git a/app/fieldnotes/models.py b/app/unused_apps/fieldnotes_/models.py
index c14ba80..c14ba80 100644
--- a/app/fieldnotes/models.py
+++ b/app/unused_apps/fieldnotes_/models.py
diff --git a/app/fieldnotes/templates/fieldnotes/fieldnote_archive_list_date.html b/app/unused_apps/fieldnotes_/templates/fieldnotes/fieldnote_archive_list_date.html
index 5d6865f..5d6865f 100644
--- a/app/fieldnotes/templates/fieldnotes/fieldnote_archive_list_date.html
+++ b/app/unused_apps/fieldnotes_/templates/fieldnotes/fieldnote_archive_list_date.html
diff --git a/app/fieldnotes/templates/fieldnotes/fieldnote_detail.html b/app/unused_apps/fieldnotes_/templates/fieldnotes/fieldnote_detail.html
index d1c648b..d1c648b 100644
--- a/app/fieldnotes/templates/fieldnotes/fieldnote_detail.html
+++ b/app/unused_apps/fieldnotes_/templates/fieldnotes/fieldnote_detail.html
diff --git a/app/fieldnotes/templates/fieldnotes/fieldnote_list.html b/app/unused_apps/fieldnotes_/templates/fieldnotes/fieldnote_list.html
index 37cd0ca..37cd0ca 100644
--- a/app/fieldnotes/templates/fieldnotes/fieldnote_list.html
+++ b/app/unused_apps/fieldnotes_/templates/fieldnotes/fieldnote_list.html
diff --git a/app/fieldnotes/urls.py b/app/unused_apps/fieldnotes_/urls.py
index 85ee710..85ee710 100644
--- a/app/fieldnotes/urls.py
+++ b/app/unused_apps/fieldnotes_/urls.py
diff --git a/app/fieldnotes/views.py b/app/unused_apps/fieldnotes_/views.py
index 9b49cc0..9b49cc0 100644
--- a/app/fieldnotes/views.py
+++ b/app/unused_apps/fieldnotes_/views.py
diff --git a/app/jrnl/__init__.py b/app/unused_apps/jrnl/__init__.py
index e69de29..e69de29 100644
--- a/app/jrnl/__init__.py
+++ b/app/unused_apps/jrnl/__init__.py
diff --git a/app/jrnl/admin.py b/app/unused_apps/jrnl/admin.py
index 32ef69b..32ef69b 100644
--- a/app/jrnl/admin.py
+++ b/app/unused_apps/jrnl/admin.py
diff --git a/app/jrnl/build.py b/app/unused_apps/jrnl/build.py
index dcebace..dcebace 100644
--- a/app/jrnl/build.py
+++ b/app/unused_apps/jrnl/build.py
diff --git a/app/jrnl/export.py b/app/unused_apps/jrnl/export.py
index 6407491..6407491 100644
--- a/app/jrnl/export.py
+++ b/app/unused_apps/jrnl/export.py
diff --git a/app/jrnl/fields.py b/app/unused_apps/jrnl/fields.py
index 8df2f5e..8df2f5e 100644
--- a/app/jrnl/fields.py
+++ b/app/unused_apps/jrnl/fields.py
diff --git a/app/jrnl/migrations/0001_initial.py b/app/unused_apps/jrnl/migrations/0001_initial.py
index a3660ab..a3660ab 100644
--- a/app/jrnl/migrations/0001_initial.py
+++ b/app/unused_apps/jrnl/migrations/0001_initial.py
diff --git a/app/jrnl/migrations/0001_squashed_0019_remove_entry_thumbnail.py b/app/unused_apps/jrnl/migrations/0001_squashed_0019_remove_entry_thumbnail.py
index 7b1b247..7b1b247 100644
--- a/app/jrnl/migrations/0001_squashed_0019_remove_entry_thumbnail.py
+++ b/app/unused_apps/jrnl/migrations/0001_squashed_0019_remove_entry_thumbnail.py
diff --git a/app/jrnl/migrations/0002_entrytitlesong.py b/app/unused_apps/jrnl/migrations/0002_entrytitlesong.py
index 66a75a6..66a75a6 100644
--- a/app/jrnl/migrations/0002_entrytitlesong.py
+++ b/app/unused_apps/jrnl/migrations/0002_entrytitlesong.py
diff --git a/app/jrnl/migrations/0003_auto_20160309_1018.py b/app/unused_apps/jrnl/migrations/0003_auto_20160309_1018.py
index 49a3f6f..49a3f6f 100644
--- a/app/jrnl/migrations/0003_auto_20160309_1018.py
+++ b/app/unused_apps/jrnl/migrations/0003_auto_20160309_1018.py
diff --git a/app/jrnl/migrations/0004_auto_20160309_1031.py b/app/unused_apps/jrnl/migrations/0004_auto_20160309_1031.py
index 33bbe05..33bbe05 100644
--- a/app/jrnl/migrations/0004_auto_20160309_1031.py
+++ b/app/unused_apps/jrnl/migrations/0004_auto_20160309_1031.py
diff --git a/app/jrnl/migrations/0005_auto_20160514_2151.py b/app/unused_apps/jrnl/migrations/0005_auto_20160514_2151.py
index 701c8c3..701c8c3 100644
--- a/app/jrnl/migrations/0005_auto_20160514_2151.py
+++ b/app/unused_apps/jrnl/migrations/0005_auto_20160514_2151.py
diff --git a/app/jrnl/migrations/0006_auto_20160715_0703.py b/app/unused_apps/jrnl/migrations/0006_auto_20160715_0703.py
index 42efc43..42efc43 100644
--- a/app/jrnl/migrations/0006_auto_20160715_0703.py
+++ b/app/unused_apps/jrnl/migrations/0006_auto_20160715_0703.py
diff --git a/app/jrnl/migrations/0007_delete_postimage.py b/app/unused_apps/jrnl/migrations/0007_delete_postimage.py
index cc481e8..cc481e8 100644
--- a/app/jrnl/migrations/0007_delete_postimage.py
+++ b/app/unused_apps/jrnl/migrations/0007_delete_postimage.py
diff --git a/app/jrnl/migrations/0008_auto_20160906_0845.py b/app/unused_apps/jrnl/migrations/0008_auto_20160906_0845.py
index 4ac5ebf..4ac5ebf 100644
--- a/app/jrnl/migrations/0008_auto_20160906_0845.py
+++ b/app/unused_apps/jrnl/migrations/0008_auto_20160906_0845.py
diff --git a/app/jrnl/migrations/0009_homepagecurrator_image_offset_vertical.py b/app/unused_apps/jrnl/migrations/0009_homepagecurrator_image_offset_vertical.py
index 5dfbbad..5dfbbad 100644
--- a/app/jrnl/migrations/0009_homepagecurrator_image_offset_vertical.py
+++ b/app/unused_apps/jrnl/migrations/0009_homepagecurrator_image_offset_vertical.py
diff --git a/app/jrnl/migrations/0010_auto_20161102_0916.py b/app/unused_apps/jrnl/migrations/0010_auto_20161102_0916.py
index a2d9eb8..a2d9eb8 100644
--- a/app/jrnl/migrations/0010_auto_20161102_0916.py
+++ b/app/unused_apps/jrnl/migrations/0010_auto_20161102_0916.py
diff --git a/app/jrnl/migrations/0011_auto_20161102_0925.py b/app/unused_apps/jrnl/migrations/0011_auto_20161102_0925.py
index e11c1ba..e11c1ba 100644
--- a/app/jrnl/migrations/0011_auto_20161102_0925.py
+++ b/app/unused_apps/jrnl/migrations/0011_auto_20161102_0925.py
diff --git a/app/jrnl/migrations/0012_auto_20161102_0930.py b/app/unused_apps/jrnl/migrations/0012_auto_20161102_0930.py
index d1a65dd..d1a65dd 100644
--- a/app/jrnl/migrations/0012_auto_20161102_0930.py
+++ b/app/unused_apps/jrnl/migrations/0012_auto_20161102_0930.py
diff --git a/app/jrnl/migrations/0013_entry_featured_image.py b/app/unused_apps/jrnl/migrations/0013_entry_featured_image.py
index c607ca7..c607ca7 100644
--- a/app/jrnl/migrations/0013_entry_featured_image.py
+++ b/app/unused_apps/jrnl/migrations/0013_entry_featured_image.py
diff --git a/app/jrnl/migrations/0014_homepagecurrator.py b/app/unused_apps/jrnl/migrations/0014_homepagecurrator.py
index 2d34866..2d34866 100644
--- a/app/jrnl/migrations/0014_homepagecurrator.py
+++ b/app/unused_apps/jrnl/migrations/0014_homepagecurrator.py
diff --git a/app/jrnl/migrations/0015_entry_has_video.py b/app/unused_apps/jrnl/migrations/0015_entry_has_video.py
index b643342..b643342 100644
--- a/app/jrnl/migrations/0015_entry_has_video.py
+++ b/app/unused_apps/jrnl/migrations/0015_entry_has_video.py
diff --git a/app/jrnl/migrations/0016_auto_20161219_1058.py b/app/unused_apps/jrnl/migrations/0016_auto_20161219_1058.py
index f9a3fc8..f9a3fc8 100644
--- a/app/jrnl/migrations/0016_auto_20161219_1058.py
+++ b/app/unused_apps/jrnl/migrations/0016_auto_20161219_1058.py
diff --git a/app/jrnl/migrations/0017_entry_field_notes.py b/app/unused_apps/jrnl/migrations/0017_entry_field_notes.py
index f131183..f131183 100644
--- a/app/jrnl/migrations/0017_entry_field_notes.py
+++ b/app/unused_apps/jrnl/migrations/0017_entry_field_notes.py
diff --git a/app/jrnl/migrations/0018_auto_20180303_1037.py b/app/unused_apps/jrnl/migrations/0018_auto_20180303_1037.py
index 2b4baa6..2b4baa6 100644
--- a/app/jrnl/migrations/0018_auto_20180303_1037.py
+++ b/app/unused_apps/jrnl/migrations/0018_auto_20180303_1037.py
diff --git a/app/jrnl/migrations/0019_remove_entry_thumbnail.py b/app/unused_apps/jrnl/migrations/0019_remove_entry_thumbnail.py
index 971cb03..971cb03 100644
--- a/app/jrnl/migrations/0019_remove_entry_thumbnail.py
+++ b/app/unused_apps/jrnl/migrations/0019_remove_entry_thumbnail.py
diff --git a/app/jrnl/migrations/0020_auto_20180606_1058.py b/app/unused_apps/jrnl/migrations/0020_auto_20180606_1058.py
index 7575d4f..7575d4f 100644
--- a/app/jrnl/migrations/0020_auto_20180606_1058.py
+++ b/app/unused_apps/jrnl/migrations/0020_auto_20180606_1058.py
diff --git a/app/jrnl/migrations/0021_auto_20180606_1058.py b/app/unused_apps/jrnl/migrations/0021_auto_20180606_1058.py
index ab42290..ab42290 100644
--- a/app/jrnl/migrations/0021_auto_20180606_1058.py
+++ b/app/unused_apps/jrnl/migrations/0021_auto_20180606_1058.py
diff --git a/app/jrnl/migrations/0022_auto_20180707_0958.py b/app/unused_apps/jrnl/migrations/0022_auto_20180707_0958.py
index 809f562..809f562 100644
--- a/app/jrnl/migrations/0022_auto_20180707_0958.py
+++ b/app/unused_apps/jrnl/migrations/0022_auto_20180707_0958.py
diff --git a/app/jrnl/migrations/0023_auto_20180902_1210.py b/app/unused_apps/jrnl/migrations/0023_auto_20180902_1210.py
index 0ce3853..0ce3853 100644
--- a/app/jrnl/migrations/0023_auto_20180902_1210.py
+++ b/app/unused_apps/jrnl/migrations/0023_auto_20180902_1210.py
diff --git a/app/jrnl/migrations/0024_auto_20180902_1217.py b/app/unused_apps/jrnl/migrations/0024_auto_20180902_1217.py
index 314c8c6..314c8c6 100644
--- a/app/jrnl/migrations/0024_auto_20180902_1217.py
+++ b/app/unused_apps/jrnl/migrations/0024_auto_20180902_1217.py
diff --git a/app/jrnl/migrations/0025_auto_20190131_2335.py b/app/unused_apps/jrnl/migrations/0025_auto_20190131_2335.py
index 60b9a8c..60b9a8c 100644
--- a/app/jrnl/migrations/0025_auto_20190131_2335.py
+++ b/app/unused_apps/jrnl/migrations/0025_auto_20190131_2335.py
diff --git a/app/jrnl/migrations/0026_entry_country_name.py b/app/unused_apps/jrnl/migrations/0026_entry_country_name.py
index 22d07f9..22d07f9 100644
--- a/app/jrnl/migrations/0026_entry_country_name.py
+++ b/app/unused_apps/jrnl/migrations/0026_entry_country_name.py
diff --git a/app/jrnl/migrations/0027_entry_country_slug.py b/app/unused_apps/jrnl/migrations/0027_entry_country_slug.py
index 4560497..4560497 100644
--- a/app/jrnl/migrations/0027_entry_country_slug.py
+++ b/app/unused_apps/jrnl/migrations/0027_entry_country_slug.py
diff --git a/app/jrnl/migrations/0028_auto_20190218_1614.py b/app/unused_apps/jrnl/migrations/0028_auto_20190218_1614.py
index aff2331..aff2331 100644
--- a/app/jrnl/migrations/0028_auto_20190218_1614.py
+++ b/app/unused_apps/jrnl/migrations/0028_auto_20190218_1614.py
diff --git a/app/jrnl/migrations/0029_home_more_popular.py b/app/unused_apps/jrnl/migrations/0029_home_more_popular.py
index 2adc219..2adc219 100644
--- a/app/jrnl/migrations/0029_home_more_popular.py
+++ b/app/unused_apps/jrnl/migrations/0029_home_more_popular.py
diff --git a/app/jrnl/migrations/0030_remove_home_popular.py b/app/unused_apps/jrnl/migrations/0030_remove_home_popular.py
index 8ac7408..8ac7408 100644
--- a/app/jrnl/migrations/0030_remove_home_popular.py
+++ b/app/unused_apps/jrnl/migrations/0030_remove_home_popular.py
diff --git a/app/jrnl/migrations/0031_auto_20190220_1136.py b/app/unused_apps/jrnl/migrations/0031_auto_20190220_1136.py
index 621b692..621b692 100644
--- a/app/jrnl/migrations/0031_auto_20190220_1136.py
+++ b/app/unused_apps/jrnl/migrations/0031_auto_20190220_1136.py
diff --git a/app/jrnl/migrations/0032_entry_subtitle.py b/app/unused_apps/jrnl/migrations/0032_entry_subtitle.py
index d5ccc80..d5ccc80 100644
--- a/app/jrnl/migrations/0032_entry_subtitle.py
+++ b/app/unused_apps/jrnl/migrations/0032_entry_subtitle.py
diff --git a/app/jrnl/migrations/0033_entry_field_notes_two.py b/app/unused_apps/jrnl/migrations/0033_entry_field_notes_two.py
index b90e86b..b90e86b 100644
--- a/app/jrnl/migrations/0033_entry_field_notes_two.py
+++ b/app/unused_apps/jrnl/migrations/0033_entry_field_notes_two.py
diff --git a/app/jrnl/migrations/0034_remove_entry_field_notes.py b/app/unused_apps/jrnl/migrations/0034_remove_entry_field_notes.py
index a0e93b0..a0e93b0 100644
--- a/app/jrnl/migrations/0034_remove_entry_field_notes.py
+++ b/app/unused_apps/jrnl/migrations/0034_remove_entry_field_notes.py
diff --git a/app/jrnl/migrations/0035_auto_20190303_1610.py b/app/unused_apps/jrnl/migrations/0035_auto_20190303_1610.py
index 7b51186..7b51186 100644
--- a/app/jrnl/migrations/0035_auto_20190303_1610.py
+++ b/app/unused_apps/jrnl/migrations/0035_auto_20190303_1610.py
diff --git a/app/jrnl/migrations/0036_enjoyitem.py b/app/unused_apps/jrnl/migrations/0036_enjoyitem.py
index aaa8596..aaa8596 100644
--- a/app/jrnl/migrations/0036_enjoyitem.py
+++ b/app/unused_apps/jrnl/migrations/0036_enjoyitem.py
diff --git a/app/jrnl/migrations/0037_enjoyitem_entry.py b/app/unused_apps/jrnl/migrations/0037_enjoyitem_entry.py
index 733f94c..733f94c 100644
--- a/app/jrnl/migrations/0037_enjoyitem_entry.py
+++ b/app/unused_apps/jrnl/migrations/0037_enjoyitem_entry.py
diff --git a/app/jrnl/migrations/0038_remove_enjoyitem_entry.py b/app/unused_apps/jrnl/migrations/0038_remove_enjoyitem_entry.py
index 0eec153..0eec153 100644
--- a/app/jrnl/migrations/0038_remove_enjoyitem_entry.py
+++ b/app/unused_apps/jrnl/migrations/0038_remove_enjoyitem_entry.py
diff --git a/app/jrnl/migrations/0039_enjoyitem_order.py b/app/unused_apps/jrnl/migrations/0039_enjoyitem_order.py
index 41c5324..41c5324 100644
--- a/app/jrnl/migrations/0039_enjoyitem_order.py
+++ b/app/unused_apps/jrnl/migrations/0039_enjoyitem_order.py
diff --git a/app/jrnl/migrations/0040_auto_20190315_1906.py b/app/unused_apps/jrnl/migrations/0040_auto_20190315_1906.py
index 9ce813b..9ce813b 100644
--- a/app/jrnl/migrations/0040_auto_20190315_1906.py
+++ b/app/unused_apps/jrnl/migrations/0040_auto_20190315_1906.py
diff --git a/app/jrnl/migrations/0041_auto_20190315_2240.py b/app/unused_apps/jrnl/migrations/0041_auto_20190315_2240.py
index 06b9697..06b9697 100644
--- a/app/jrnl/migrations/0041_auto_20190315_2240.py
+++ b/app/unused_apps/jrnl/migrations/0041_auto_20190315_2240.py
diff --git a/app/jrnl/migrations/0042_auto_20190412_1805.py b/app/unused_apps/jrnl/migrations/0042_auto_20190412_1805.py
index 71c0d51..71c0d51 100644
--- a/app/jrnl/migrations/0042_auto_20190412_1805.py
+++ b/app/unused_apps/jrnl/migrations/0042_auto_20190412_1805.py
diff --git a/app/jrnl/migrations/0043_auto_20190704_0903.py b/app/unused_apps/jrnl/migrations/0043_auto_20190704_0903.py
index 758499a..758499a 100644
--- a/app/jrnl/migrations/0043_auto_20190704_0903.py
+++ b/app/unused_apps/jrnl/migrations/0043_auto_20190704_0903.py
diff --git a/app/jrnl/migrations/0044_auto_20190917_1703.py b/app/unused_apps/jrnl/migrations/0044_auto_20190917_1703.py
index c6e5d6c..c6e5d6c 100644
--- a/app/jrnl/migrations/0044_auto_20190917_1703.py
+++ b/app/unused_apps/jrnl/migrations/0044_auto_20190917_1703.py
diff --git a/app/jrnl/migrations/0045_entry_books_new.py b/app/unused_apps/jrnl/migrations/0045_entry_books_new.py
index a941088..a941088 100644
--- a/app/jrnl/migrations/0045_entry_books_new.py
+++ b/app/unused_apps/jrnl/migrations/0045_entry_books_new.py
diff --git a/app/jrnl/migrations/0046_remove_entry_books.py b/app/unused_apps/jrnl/migrations/0046_remove_entry_books.py
index bad9813..bad9813 100644
--- a/app/jrnl/migrations/0046_remove_entry_books.py
+++ b/app/unused_apps/jrnl/migrations/0046_remove_entry_books.py
diff --git a/app/jrnl/migrations/0047_auto_20191110_0859.py b/app/unused_apps/jrnl/migrations/0047_auto_20191110_0859.py
index 28d3866..28d3866 100644
--- a/app/jrnl/migrations/0047_auto_20191110_0859.py
+++ b/app/unused_apps/jrnl/migrations/0047_auto_20191110_0859.py
diff --git a/app/jrnl/migrations/0048_auto_20191205_1720.py b/app/unused_apps/jrnl/migrations/0048_auto_20191205_1720.py
index 51be2f1..51be2f1 100644
--- a/app/jrnl/migrations/0048_auto_20191205_1720.py
+++ b/app/unused_apps/jrnl/migrations/0048_auto_20191205_1720.py
diff --git a/app/jrnl/migrations/0049_entry_newrelated.py b/app/unused_apps/jrnl/migrations/0049_entry_newrelated.py
index 3bd8dee..3bd8dee 100644
--- a/app/jrnl/migrations/0049_entry_newrelated.py
+++ b/app/unused_apps/jrnl/migrations/0049_entry_newrelated.py
diff --git a/app/jrnl/migrations/0050_auto_20191206_0741.py b/app/unused_apps/jrnl/migrations/0050_auto_20191206_0741.py
index b732b68..b732b68 100644
--- a/app/jrnl/migrations/0050_auto_20191206_0741.py
+++ b/app/unused_apps/jrnl/migrations/0050_auto_20191206_0741.py
diff --git a/app/jrnl/migrations/0051_auto_20201027_2102.py b/app/unused_apps/jrnl/migrations/0051_auto_20201027_2102.py
index 09d0dea..09d0dea 100644
--- a/app/jrnl/migrations/0051_auto_20201027_2102.py
+++ b/app/unused_apps/jrnl/migrations/0051_auto_20201027_2102.py
diff --git a/app/jrnl/migrations/0052_entry_new_field_notes.py b/app/unused_apps/jrnl/migrations/0052_entry_new_field_notes.py
index 3ec3167..3ec3167 100644
--- a/app/jrnl/migrations/0052_entry_new_field_notes.py
+++ b/app/unused_apps/jrnl/migrations/0052_entry_new_field_notes.py
diff --git a/app/jrnl/migrations/0053_auto_20201027_2105.py b/app/unused_apps/jrnl/migrations/0053_auto_20201027_2105.py
index 904b6c2..904b6c2 100644
--- a/app/jrnl/migrations/0053_auto_20201027_2105.py
+++ b/app/unused_apps/jrnl/migrations/0053_auto_20201027_2105.py
diff --git a/app/jrnl/migrations/0054_auto_20201111_2148.py b/app/unused_apps/jrnl/migrations/0054_auto_20201111_2148.py
index bdeb63f..bdeb63f 100644
--- a/app/jrnl/migrations/0054_auto_20201111_2148.py
+++ b/app/unused_apps/jrnl/migrations/0054_auto_20201111_2148.py
diff --git a/app/jrnl/migrations/__init__.py b/app/unused_apps/jrnl/migrations/__init__.py
index e69de29..e69de29 100644
--- a/app/jrnl/migrations/__init__.py
+++ b/app/unused_apps/jrnl/migrations/__init__.py
diff --git a/app/jrnl/models.py b/app/unused_apps/jrnl/models.py
index f3c0626..f3c0626 100644
--- a/app/jrnl/models.py
+++ b/app/unused_apps/jrnl/models.py
diff --git a/app/jrnl/templates/horizontal_select.html b/app/unused_apps/jrnl/templates/horizontal_select.html
index 61dcfd8..61dcfd8 100644
--- a/app/jrnl/templates/horizontal_select.html
+++ b/app/unused_apps/jrnl/templates/horizontal_select.html
diff --git a/app/jrnl/templates/jrnl/entry_detail.html b/app/unused_apps/jrnl/templates/jrnl/entry_detail.html
index 0904178..0904178 100644
--- a/app/jrnl/templates/jrnl/entry_detail.html
+++ b/app/unused_apps/jrnl/templates/jrnl/entry_detail.html
diff --git a/app/jrnl/templates/jrnl/entry_detail.txt b/app/unused_apps/jrnl/templates/jrnl/entry_detail.txt
index 547ce79..547ce79 100644
--- a/app/jrnl/templates/jrnl/entry_detail.txt
+++ b/app/unused_apps/jrnl/templates/jrnl/entry_detail.txt
diff --git a/app/jrnl/templates/jrnl/entry_list.html b/app/unused_apps/jrnl/templates/jrnl/entry_list.html
index 6eefe10..6eefe10 100644
--- a/app/jrnl/templates/jrnl/entry_list.html
+++ b/app/unused_apps/jrnl/templates/jrnl/entry_list.html
diff --git a/app/jrnl/urls.py b/app/unused_apps/jrnl/urls.py
index caf1935..caf1935 100644
--- a/app/jrnl/urls.py
+++ b/app/unused_apps/jrnl/urls.py
diff --git a/app/jrnl/views.py b/app/unused_apps/jrnl/views.py
index 6b7cc8d..6b7cc8d 100644
--- a/app/jrnl/views.py
+++ b/app/unused_apps/jrnl/views.py
diff --git a/app/publications/__init__.py b/app/unused_apps/publications/__init__.py
index e69de29..e69de29 100644
--- a/app/publications/__init__.py
+++ b/app/unused_apps/publications/__init__.py
diff --git a/app/publications/admin.py b/app/unused_apps/publications/admin.py
index 15456d5..15456d5 100644
--- a/app/publications/admin.py
+++ b/app/unused_apps/publications/admin.py
diff --git a/app/publications/migrations/0001_initial.py b/app/unused_apps/publications/migrations/0001_initial.py
index 9212571..9212571 100644
--- a/app/publications/migrations/0001_initial.py
+++ b/app/unused_apps/publications/migrations/0001_initial.py
diff --git a/app/publications/migrations/0002_editor_section.py b/app/unused_apps/publications/migrations/0002_editor_section.py
index a4675ae..a4675ae 100644
--- a/app/publications/migrations/0002_editor_section.py
+++ b/app/unused_apps/publications/migrations/0002_editor_section.py
diff --git a/app/publications/migrations/0003_auto_20190131_0923.py b/app/unused_apps/publications/migrations/0003_auto_20190131_0923.py
index 6844c55..6844c55 100644
--- a/app/publications/migrations/0003_auto_20190131_0923.py
+++ b/app/unused_apps/publications/migrations/0003_auto_20190131_0923.py
diff --git a/app/publications/migrations/0004_pitchidea.py b/app/unused_apps/publications/migrations/0004_pitchidea.py
index db72d58..db72d58 100644
--- a/app/publications/migrations/0004_pitchidea.py
+++ b/app/unused_apps/publications/migrations/0004_pitchidea.py
diff --git a/app/publications/migrations/0005_auto_20190131_1100.py b/app/unused_apps/publications/migrations/0005_auto_20190131_1100.py
index a800dcf..a800dcf 100644
--- a/app/publications/migrations/0005_auto_20190131_1100.py
+++ b/app/unused_apps/publications/migrations/0005_auto_20190131_1100.py
diff --git a/app/publications/migrations/0006_auto_20190222_1819.py b/app/unused_apps/publications/migrations/0006_auto_20190222_1819.py
index 8c779dd..8c779dd 100644
--- a/app/publications/migrations/0006_auto_20190222_1819.py
+++ b/app/unused_apps/publications/migrations/0006_auto_20190222_1819.py
diff --git a/app/publications/migrations/__init__.py b/app/unused_apps/publications/migrations/__init__.py
index e69de29..e69de29 100644
--- a/app/publications/migrations/__init__.py
+++ b/app/unused_apps/publications/migrations/__init__.py
diff --git a/app/publications/models.py b/app/unused_apps/publications/models.py
index 05f7267..05f7267 100644
--- a/app/publications/models.py
+++ b/app/unused_apps/publications/models.py
diff --git a/app/publications/urls.py b/app/unused_apps/publications/urls.py
index 3f43b32..3f43b32 100644
--- a/app/publications/urls.py
+++ b/app/unused_apps/publications/urls.py
diff --git a/app/publications/views.py b/app/unused_apps/publications/views.py
index 0398dcb..0398dcb 100644
--- a/app/publications/views.py
+++ b/app/unused_apps/publications/views.py
diff --git a/config/base_urls.py b/config/base_urls.py
index 169b7f4..61dd565 100644
--- a/config/base_urls.py
+++ b/config/base_urls.py
@@ -5,8 +5,7 @@ from django.conf import settings
from django.contrib.sitemaps.views import sitemap
from django.views.generic.base import RedirectView
-from pages.views import PageDetailView, PageDetailTXTView
-from jrnl.views import HomepageList
+from pages.views import PageDetailView, PageDetailTXTView, HomePageList
from locations.models import WritingbyCountrySitemap
from photos.models import PhotoGallerySitemap
from books.models import BookSitemap
@@ -63,7 +62,7 @@ urlpatterns = [
path(r'work/', include('resume.urls', namespace='resume')),
path(r'map', include('locations.urls', namespace='map')),
path(r'map/', include('locations.urls', namespace='map')),
- path(r'', HomepageList.as_view(), name="homepage"),
+ path(r'', HomePageList.as_view(), {'pk':1,}, name="homepage"),
path(r'comments/', include('django_comments.urls')),
path(r'<slug>.txt', PageDetailTXTView.as_view()),
path(r'<slug>', include('pages.urls', namespace='pages')),
diff --git a/design/templates/base.html b/design/templates/base.html
index 0098e7f..7ed88c2 100644
--- a/design/templates/base.html
+++ b/design/templates/base.html
@@ -51,7 +51,7 @@
<li>Follow Along:
<ul>
<li><a href="/jrnl/feed.xml" title="RSS feed">RSS</a></li>
- <li><a href="/newsletter/" title="Luxagraf Email Updates">Email</a></li>
+ <li><a href="/newsletter/friends/" title="Luxagraf Email Updates">Email</a></li>
<li><a href="https://www.instagram.com/luxagraf" rel="me" title="luxagraf on Instagram">Instagram</a></li>
</ul>
</ul>