diff mysite/band/admin_views.py @ 1:0dcfcdf50c62

Initial import of Madeira project from the private repository.
author Brian Neal <bgneal@gmail.com>
date Mon, 06 Apr 2009 03:10:59 +0000
parents
children 3e22a6fde2d2
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mysite/band/admin_views.py	Mon Apr 06 03:10:59 2009 +0000
@@ -0,0 +1,77 @@
+#######################################################################
+#
+# PyBand Copyright (C) 2008 by Brian Neal
+#
+#######################################################################
+from django import forms
+from django.core.urlresolvers import reverse
+from django.core.mail import EmailMessage
+from django.template import RequestContext
+from django.http import HttpResponseRedirect
+from django.shortcuts import render_to_response
+from django.contrib.admin.views.decorators import staff_member_required
+
+from mysite.band.models import SiteConfig
+from mysite.band.models import Fan
+
+#######################################################################
+
+unsubscribeText = '''
+
+----
+You are receiving this message because you are subscribed to our mailing list.
+If you would like to unsubscribe please visit %s.
+'''
+
+#######################################################################
+
+class EmailForm(forms.Form):
+   subject = forms.CharField(max_length = 255, required = True, label = 'Subject:',
+         widget = forms.TextInput(attrs = {'class' : 'vTextField required', 'size' : '60'}))
+   message = forms.CharField(label = 'Message:',
+         widget = forms.Textarea(attrs = {'class' : 'vLargeTextField required'}))
+
+#######################################################################
+
+def email_sent(request):
+   return render_to_response('admin/band/email_sent.html',
+         {},
+         context_instance = RequestContext(request))
+
+#######################################################################
+
+def email(request):
+
+   config = SiteConfig.objects.get(pk = 1)
+   bandTag = '[%s] ' % (config.band_name, )
+
+   if request.method == 'POST':
+      form = EmailForm(request.POST)
+      if form.is_valid():
+         subject = form.cleaned_data['subject']
+         message = form.cleaned_data['message']
+
+         unsubscribeUrl = config.url
+         if unsubscribeUrl[-1] != '/':
+            unsubscribeUrl += '/'
+         unsubscribeUrl += 'contact'
+
+         footer = unsubscribeText % (unsubscribeUrl, )
+         message += footer
+         
+         fans = Fan.objects.all()
+         bcc = [fan.email for fan in fans]
+
+         email = EmailMessage(subject, message, config.contact_email,
+               [config.contact_email], bcc)
+         email.send()
+         return HttpResponseRedirect(reverse(email_sent))
+
+   else:
+      form = EmailForm(initial = { 'subject' : bandTag })
+
+   return render_to_response('admin/band/email.html',
+         { 'form' : form },
+         context_instance = RequestContext(request))
+
+email = staff_member_required(email)