summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/lttr/templates/lttr/friends_list.html (renamed from app/lttr/templates/lttr/subscriber_form.html)11
-rw-r--r--app/lttr/templates/lttr/friends_subscribe.html12
-rw-r--r--app/lttr/urls.py36
-rw-r--r--app/lttr/views.py59
4 files changed, 64 insertions, 54 deletions
diff --git a/app/lttr/templates/lttr/subscriber_form.html b/app/lttr/templates/lttr/friends_list.html
index c2adcc0..4ec6c52 100644
--- a/app/lttr/templates/lttr/subscriber_form.html
+++ b/app/lttr/templates/lttr/friends_list.html
@@ -11,16 +11,7 @@
<main role="main" id="essay-archive" class="essay-archive archive-list">
<div class="essay-intro">
<h1 class="list-hed">Join the <em>Friends of a Long Year</em>.</h1>
- <form action="" method="post" class="generic-form flex newsletter-subscribe">{% csrf_token %}
- {% for field in form %}
- <fieldset>
- {{field.label_tag}}
- {{field}}
- </fieldset>
- {% if forloop.last %}<input type="submit" name="post" class="btn" value="Subscribe" />{%endif%}
- </form>
- <small class="alert">{% if field.errors %}{{field.errors}}{% endif %}</small>
- {%endfor%}
+ <iframe style="border:none; background:white;" title="embedded form for subscribing the the Friends of a Long Year newsletter" src="{% url 'lttr:subscribe' slug='friends' %}"></iframe>
<h2 class="subhead">Say what? </h2>
<p><em>Friends of a Long Year</em> is a monthly letter about living outdoors, travel, reading, walking, and other ephemera. Unsubscribing is easy. It's all self-hosted, secure, and&nbsp;<a href="/privacy" title="My privacy policy">private</a>.</p>
<p>The name <em>Friends of a Long Year</em> comes from the early 20th century explorer and desert rat, Mary Hunter Austin, whose collected essays, <a href="https://archive.org/details/lostbordersillu00brotgoog/page/n8"><cite>Lost Borders</cite></a> is dedicated to the "Friends of a Long Year".</p>
diff --git a/app/lttr/templates/lttr/friends_subscribe.html b/app/lttr/templates/lttr/friends_subscribe.html
new file mode 100644
index 0000000..07cff24
--- /dev/null
+++ b/app/lttr/templates/lttr/friends_subscribe.html
@@ -0,0 +1,12 @@
+{% load typogrify_tags %}
+
+ <form action="" method="post" class="generic-form flex newsletter-subscribe">{% csrf_token %}
+ {% for field in form %}
+ <fieldset>
+ {{field.label_tag}}
+ {{field}}
+ </fieldset>
+ {% if forloop.last %}<input type="submit" name="post" class="btn" value="Subscribe" />{%endif%}
+ </form>
+ <small class="alert">{% if field.errors %}{{field.errors}}{% endif %}</small>
+ {%endfor%}
diff --git a/app/lttr/urls.py b/app/lttr/urls.py
index f103cec..f8f888b 100644
--- a/app/lttr/urls.py
+++ b/app/lttr/urls.py
@@ -16,6 +16,11 @@ urlpatterns = [
name="detail"
),
path(
+ r'<str:slug>/subscribe',
+ views.NewsletterSubscribeView.as_view(),
+ name="subscribe"
+ ),
+ path(
r'<str:slug>/<int:page>',
views.NewsletterListView.as_view(),
name="list"
@@ -24,26 +29,12 @@ urlpatterns = [
'<str:slug>/activate/<str:activation_code>/',
views.ConfirmSubscriptionView.as_view(), name='newsletter_activate'
),
- #path(
- # '/subscribe/confirm/',
- # views.SubscribeRequestView.as_view(confirm=True),
- # name='newsletter_subscribe_confirm'
- #),
- #path(
- # '^<newsletter_slug:s>/update/$',
- # views.UpdateRequestView.as_view(),
- # name='newsletter_update_request'
- #),
- #path(
- # '^<newsletter_slug:s>/unsubscribe/$',
- # views.UnsubscribeRequestView.as_view(),
- # name='newsletter_unsubscribe_request'
- #),
- #path(
- # '^<newsletter_slug:s>/unsubscribe/confirm/$',
- # views.UnsubscribeRequestView.as_view(confirm=True),
- # name='newsletter_unsubscribe_confirm'
- #),
+ path(
+ r'<str:slug>/',
+ views.NewsletterListView.as_view(),
+ {'page': 1},
+ name="list"
+ ),
path(
r'subscribed/',
views.NewsletterSubscribedView.as_view(),
@@ -51,8 +42,7 @@ urlpatterns = [
),
path(
r'',
- views.NewsletterListView.as_view(),
- {'page': 1},
- name="list"
+ views.NewsletterOptionsView.as_view(),
+ name="newsletters"
),
]
diff --git a/app/lttr/views.py b/app/lttr/views.py
index bf3df4c..2573334 100644
--- a/app/lttr/views.py
+++ b/app/lttr/views.py
@@ -37,24 +37,52 @@ class NewsletterSubscribedView(TemplateView):
template_name = "lttr/subscribed.html"
-class NewsletterListView(CreateView):
+class NewsletterListView(ListView):
"""
- Return a subscribe form and list of Newsletter posts in reverse chronological order
+ Return a list of Newsletter posts in reverse chronological order
+ """
+ model = NewsletterMailing
+
+ def get_template_names(self):
+ return ["lttr/%s_list.html" % self.kwargs['slug'], 'newsletter_list.html']
+
+ def get_queryset(self):
+ queryset = super(NewsletterListView, self).get_queryset()
+ return queryset.filter(newsletter__slug=self.kwargs['slug'])
+
+class NewsletterOptionsView(ListView):
+ model = Newsletter
+
+
+class ConfirmSubscriptionView(DetailView):
+ model = Subscriber
+ template_name = "lttr/confirm_activate.html"
+
+ def get_object(self):
+ obj = Subscriber.objects.get(newsletter__slug=self.kwargs['slug'], activation_code=self.kwargs['activation_code'])
+ if obj.subscribed is False:
+ obj.update('subscribe')
+ return obj
+
+
+class NewsletterSubscribeView(CreateView):
+ """
+ Return a subscribe form for iframe embedding
"""
model = Subscriber
form_class = SubscribeRequestForm
action = 'subscribe'
+
+
+ def get_template_names(self):
+ return "lttr/%s_subscribe.html" % self.kwargs['slug']
def get_form_kwargs(self):
- kwargs = super(NewsletterListView, self).get_form_kwargs()
- kwargs['newsletter'] = Newsletter.objects.get(title="Friends of a Long Year")
+ kwargs = super(NewsletterSubscribeView, self).get_form_kwargs()
+ nl = Newsletter.objects.get(slug=self.kwargs['slug'])
+ kwargs['newsletter'] = nl
return kwargs
- def get_context_data(self, **kwargs):
- context = super(NewsletterListView, self).get_context_data(**kwargs)
- context['mailings'] = NewsletterMailing.objects.filter(status=1)
- return context
-
def get_success_url(self):
return reverse_lazy('lttr:subscribed')
@@ -76,18 +104,6 @@ class NewsletterListView(CreateView):
return super(NewsletterListView, self).form_invalid(form)
return super(NewsletterListView, self).form_valid(form)
-
-class ConfirmSubscriptionView(DetailView):
- model = Subscriber
- template_name = "lttr/confirm_activate.html"
-
- def get_object(self):
- obj = Subscriber.objects.get(newsletter__slug=self.kwargs['slug'], activation_code=self.kwargs['activation_code'])
- if obj.subscribed is False:
- obj.update('subscribe')
- return obj
-
-
class UnsubscribeRequestView(DetailView):
model = Subscriber
template_name = "lttr/unsubscribe.html"
@@ -104,3 +120,4 @@ class UnsubscribeRequestView(DetailView):
context['subscriber'] = self.get_object()
context['newsletter'] = self.kwargs['slug']
return context
+