diff options
-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.html | 12 | ||||
-rw-r--r-- | app/lttr/urls.py | 36 | ||||
-rw-r--r-- | app/lttr/views.py | 59 |
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 <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 + |