datatracker/ietf/community/forms.py
2012-06-27 08:26:18 +00:00

102 lines
3.2 KiB
Python

import hashlib
import datetime
from django import forms
from django.conf import settings
from django.contrib.sites.models import Site
from ietf.utils.mail import send_mail
from ietf.community.models import Rule, DisplayConfiguration, RuleManager
from ietf.community.display import DisplayField
class RuleForm(forms.ModelForm):
class Meta:
model = Rule
fields = ('rule_type', 'value')
def __init__(self, *args, **kwargs):
self.clist = kwargs.pop('clist', None)
super(RuleForm, self).__init__(*args, **kwargs)
def save(self):
self.instance.community_list = self.clist
super(RuleForm, self).save()
def get_all_options(self):
result = []
for i in RuleManager.__subclasses__():
options = i(None).options()
if options:
result.append({'type': i.codename,
'options': options})
return result
class DisplayForm(forms.ModelForm):
class Meta:
model = DisplayConfiguration
fields = ('sort_method', )
def save(self):
data = self.data
fields = []
for i in DisplayField.__subclasses__():
if data.get(i.codename, None):
fields.append(i.codename)
self.instance.display_fields = ','.join(fields)
super(DisplayForm, self).save()
class SubscribeForm(forms.Form):
email = forms.EmailField("Your email")
def __init__(self, *args, **kwargs):
self.clist = kwargs.pop('clist')
self.significant = kwargs.pop('significant')
super(SubscribeForm, self).__init__(*args, **kwargs)
def save(self, *args, **kwargs):
self.send_email()
return True
def send_email(self):
domain = Site.objects.get_current().domain
today = datetime.date.today().strftime('%Y%m%d')
subject = 'Confirm list subscription: %s' % self.clist
from_email = settings.DEFAULT_FROM_EMAIL
to_email = self.cleaned_data['email']
auth = hashlib.md5('%s%s%s%s%s' % (settings.SECRET_KEY, today, to_email, 'subscribe', self.significant)).hexdigest()
context = {
'domain': domain,
'clist': self.clist,
'today': today,
'auth': auth,
'to_email': to_email,
'significant': self.significant,
}
send_mail(None, to_email, from_email, subject, 'community/public/subscribe_email.txt', context)
class UnSubscribeForm(SubscribeForm):
def send_email(self):
domain = Site.objects.get_current().domain
today = datetime.date.today().strftime('%Y%m%d')
subject = 'Confirm list subscription cancelation: %s' % self.clist
from_email = settings.DEFAULT_FROM_EMAIL
to_email = self.cleaned_data['email']
auth = hashlib.md5('%s%s%s%s%s' % (settings.SECRET_KEY, today, to_email, 'unsubscribe', self.significant)).hexdigest()
context = {
'domain': domain,
'clist': self.clist,
'today': today,
'auth': auth,
'to_email': to_email,
'significant': self.significant,
}
send_mail(None, to_email, from_email, subject, 'community/public/unsubscribe_email.txt', context)