from django import newforms as forms
from django import http
from django.template import RequestContext, Context, loader
from django.shortcuts import render_to_response
from django.core.mail import send_mail
from django.conf import settings
from ghestalt.app.utils import bad_or_missing
N_ = lambda x: x

#Choices displayed to the user to categorize the type of contact request
email_choices = (
    ("General Question", _("General question")),
    ("Improvement Suggestion", _("Improvement suggestion")),
)

class ContactForm(forms.Form):
    name = forms.CharField(label=N_('Name'),max_length=20,translate=True)
    email = forms.EmailField(label=N_('E-mail address'),translate=True)
    subject = forms.CharField(label=N_('Subject'),max_length=30,translate=True)
    inquiry = forms.ChoiceField(label=N_('Inquiry'),choices=email_choices,translate=True)
    contents = forms.CharField(label=N_('Contents'),widget=forms.Textarea(attrs={'rows': 14, 'cols': 60}),translate=True)
    def clean(self):
        return self.clean_data

def form(request):
    if request.POST:
        form = ContactForm(request.POST)
        if form.is_valid():
            t = loader.get_template('email/contact_us.txt')
            c = Context({
            'request_type': form.clean_data.get('inquiry'),
            'name': form.clean_data.get('name'),
            'email': form.clean_data.get('email'),    
            'request_text': form.clean_data.get('contents') })
            subject = form.clean_data.get('subject')
            site_email = settings.SITE_EMAIL
            if settings.ENABLE_MAIL:
                try:
                    send_mail(subject, t.render(c), site_email,
                             [site_email], fail_silently=False)
                except:
                    return bad_or_missing(request,'Problems sending mail.')
            return http.HttpResponseRedirect('%s/contact/thankyou' % (settings.SITE_BASE))
    else:
        form = ContactForm()
    return render_to_response('contact_form.html', {'form': form},
                                RequestContext(request))
