mirror of
https://github.com/postgres/pgweb.git
synced 2025-07-29 11:59:36 +00:00
Add handling of mailinglist subscription
This commit is contained in:
11
pgweb/lists/forms.py
Normal file
11
pgweb/lists/forms.py
Normal file
@ -0,0 +1,11 @@
|
||||
from django import forms
|
||||
|
||||
from models import MailingList
|
||||
|
||||
class SubscribeForm(forms.Form):
|
||||
email = forms.EmailField(max_length=100,required=True,label="Email address")
|
||||
action = forms.ChoiceField(required=True, choices=(('subscribe','Subscribe'),('unsubscribe','Unsubscribe')))
|
||||
receive = forms.BooleanField(required=False, label="Receive mail", initial=True)
|
||||
digest = forms.BooleanField(required=False, label="Digest only")
|
||||
lists = forms.ModelChoiceField(required=True, queryset=MailingList.objects.filter(active=True), label="Mailinglist")
|
||||
|
@ -2,10 +2,15 @@ from django.shortcuts import render_to_response, get_object_or_404
|
||||
from django.http import HttpResponse, Http404, HttpResponseRedirect
|
||||
from django.template import TemplateDoesNotExist, loader, Context
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.conf import settings
|
||||
|
||||
from email.mime.text import MIMEText
|
||||
|
||||
from pgweb.util.contexts import NavContext
|
||||
from pgweb.util.misc import sendmail
|
||||
|
||||
from models import MailingList, MailingListGroup
|
||||
from forms import SubscribeForm
|
||||
|
||||
def root(request):
|
||||
lists = MailingList.objects.all().order_by('group__sortkey', 'listname')
|
||||
@ -14,3 +19,35 @@ def root(request):
|
||||
'lists': lists,
|
||||
}, NavContext(request, 'community'))
|
||||
|
||||
def subscribe(request):
|
||||
if request.POST:
|
||||
form = SubscribeForm(request.POST)
|
||||
if form.is_valid():
|
||||
mailtxt = ""
|
||||
if form.cleaned_data['action'] == 'subscribe':
|
||||
mailtxt += "subscribe %s\n" % form.cleaned_data['lists']
|
||||
if not form.cleaned_data['receive']:
|
||||
mailtxt += "set nomail\n"
|
||||
if form.cleaned_data['digest']:
|
||||
mailtxt += "set digest\n"
|
||||
else:
|
||||
mailtxt += "unsubscribe %s\n" % form.cleaned_data['lists']
|
||||
msg = MIMEText(mailtxt, _charset='utf-8')
|
||||
msg['Subject'] = ''
|
||||
msg['To'] = settings.LISTSERVER_EMAIL
|
||||
msg['From'] = form.cleaned_data['email']
|
||||
sendmail(msg)
|
||||
return render_to_response('lists/subscribed.html', {
|
||||
}, NavContext(request, "community"))
|
||||
else:
|
||||
# GET, so render up the form
|
||||
form = SubscribeForm()
|
||||
|
||||
return render_to_response('base/form.html', {
|
||||
'form': form,
|
||||
'form_intro': """
|
||||
Please do not subscribe to mailing lists using e-mail accounts protected by
|
||||
mail-back anti-spam systems. These are extremely annoying to the list maintainers
|
||||
and other members, and you may be automatically unsubscribed."""
|
||||
}, NavContext(request, "community"))
|
||||
|
||||
|
Reference in New Issue
Block a user