Django 1.6 and some cleaning.
[wolnelektury.git] / apps / suggest / forms.py
1 # -*- coding: utf-8 -*-
2 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
3 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
4 #
5 from django import forms
6 from django.contrib.sites.models import Site
7 from django.core.mail import send_mail, mail_managers
8 from django.core.urlresolvers import reverse
9 from django.core.validators import validate_email
10 from django.utils.translation import ugettext_lazy as _
11 from django.utils.translation import ugettext
12 from suggest.models import PublishingSuggestion, Suggestion
13
14
15 class SuggestForm(forms.Form):
16     contact = forms.CharField(label=_('Contact'), max_length=120, required=False)
17     description = forms.CharField(label=_('Description'), widget=forms.Textarea, required=True)
18
19     def save(self, request):
20         contact = self.cleaned_data['contact']
21         description = self.cleaned_data['description']
22
23         suggestion = Suggestion(contact=contact,
24             description=description, ip=request.META['REMOTE_ADDR'])
25         if request.user.is_authenticated():
26             suggestion.user = request.user
27         suggestion.save()
28
29         mail_managers(u'Nowa sugestia na stronie WolneLektury.pl', u'''\
30 Zgłoszono nową sugestię w serwisie WolneLektury.pl.
31 http://%(site)s%(url)s
32
33 Użytkownik: %(user)s
34 Kontakt: %(contact)s
35
36 %(description)s''' % {
37             'site': Site.objects.get_current().domain,
38             'url': reverse('admin:suggest_suggestion_change', args=[suggestion.id]),
39             'user': str(request.user) if request.user.is_authenticated() else '',
40             'contact': contact,
41             'description': description,
42             }, fail_silently=True)
43
44         if validate_email(contact):
45             send_mail(u'[WolneLektury] ' +
46                     ugettext(u'Thank you for your suggestion.'),
47                     ugettext(u"""\
48 Thank you for your comment on WolneLektury.pl.
49 The suggestion has been referred to the project coordinator.""") +
50 u"""
51
52 -- 
53 """ + ugettext(u'''Message sent automatically. Please do not reply.'''),
54                     'no-reply@wolnelektury.pl', [contact], fail_silently=True)
55
56
57 class PublishingSuggestForm(forms.Form):
58     contact = forms.CharField(label=_('Contact'), max_length=120, required=False)
59     books = forms.CharField(label=_('books'), widget=forms.Textarea, required=False)
60     audiobooks = forms.CharField(label=_('audiobooks'), widget=forms.Textarea, required=False)
61
62     def clean(self, *args, **kwargs):
63         if not self.cleaned_data['books'] and not self.cleaned_data['audiobooks']:
64             msg = ugettext(u"One of these fields is required.")
65             self._errors["books"] = self.error_class([msg])
66             self._errors["audiobooks"] = self.error_class([msg])
67         return super(PublishingSuggestForm, self).clean(*args, **kwargs)
68
69     def save(self, request):
70         contact = self.cleaned_data['contact']
71         books = self.cleaned_data['books']
72         audiobooks = self.cleaned_data['audiobooks']
73
74         suggestion = PublishingSuggestion(contact=contact, books=books,
75             audiobooks=audiobooks, ip=request.META['REMOTE_ADDR'])
76         if request.user.is_authenticated():
77             suggestion.user = request.user
78         suggestion.save()
79
80         mail_managers(u'Konsultacja planu wydawniczego na WolneLektury.pl', u'''\
81 Zgłoszono nową sugestię nt. planu wydawniczego w serwisie WolneLektury.pl.
82 %(url)s
83
84 Użytkownik: %(user)s
85 Kontakt: %(contact)s
86
87 Książki:
88 %(books)s
89
90 Audiobooki:
91 %(audiobooks)s''' % {
92             'url': request.build_absolute_uri(reverse('admin:suggest_suggestion_change', args=[suggestion.id])),
93             'user': str(request.user) if request.user.is_authenticated() else '',
94             'contact': contact,
95             'books': books,
96             'audiobooks': audiobooks,
97             }, fail_silently=True)
98
99         if validate_email(contact):
100             send_mail(u'[WolneLektury] ' +
101                     ugettext(u'Thank you for your suggestion.'),
102                     ugettext(u"""\
103 Thank you for your comment on WolneLektury.pl.
104 The suggestion has been referred to the project coordinator.""") +
105 u"""
106
107 -- 
108 """ + ugettext(u'''Message sent automatically. Please do not reply.'''),
109                     'no-reply@wolnelektury.pl', [contact], fail_silently=True)