[silva.infrae.contact][Emiliano D'Alterio] Fixed problem with ca...

[email protected] Thu, 17 Oct 2013 13:53:48 +0200
Newsgroups gmane.comp.web.zope.silva.cvs
Message-ID <[email protected]>
author:    Emiliano D'Alterio
date:      Thu Oct 17 13:53:44 2013 +0200
revision:  9:f7770115b8b6 in silva.infrae.contact
branch:    
details:   https://hg.infrae.com/silva.infrae.contact?cmd=changeset;node=f7770115b8b6
modified:  setup.py src/silva/infrae/contact/contactform.py
added:     
removed:   
log:       Fixed problem with caching, now no-cache header value is forced.
	Subject is now a required field.


diffstat:

 setup.py                                |   1 +
 src/silva/infrae/contact/contactform.py |  21 ++++++++++++++++-----
 2 files changed, 17 insertions(+), 5 deletions(-)

diffs (78 lines):

diff -r 1fa61bea7977 -r f7770115b8b6 setup.py
--- a/setup.py	Wed Oct 16 16:29:48 2013 +0200
+++ b/setup.py	Thu Oct 17 13:53:44 2013 +0200
@@ -40,5 +40,6 @@
           'silva.fanstatic',
           'megrok.pagetemplate',
           'js.jquery',
+          'silva.core.views',
           ],
       )
diff -r 1fa61bea7977 -r f7770115b8b6 src/silva/infrae/contact/contactform.py
--- a/src/silva/infrae/contact/contactform.py	Wed Oct 16 16:29:48 2013 +0200
+++ b/src/silva/infrae/contact/contactform.py	Thu Oct 17 13:53:44 2013 +0200
@@ -7,10 +7,12 @@
 
 from five import grok
 from zope import interface, schema
+from silva.core.views.httpheaders import ResponseHeaders
 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
 from zope.traversing.browser import absoluteURL
 from silva.core.cache import store
 from zope.publisher.interfaces.browser import IDefaultBrowserLayer
+from zope.publisher.interfaces.browser import IBrowserRequest
 from z3c.schema.email import RFC822MailAddress
 from zeam.form import silva as silvaforms
 from zeam.form.viewlet.interfaces import IInlineForm
@@ -68,7 +70,7 @@
     subject = schema.Choice(
         title=u'Message subject',
         source=subjects,
-        required=False)
+        required=True)
     message = schema.Text(
         title=u'Message',
         required=True)
@@ -91,10 +93,13 @@
     """
 
 
-class ContactFormTemplate(pt.PageTemplate):
-    """Template for the public contact form.
+class ContactFormHeaders(ResponseHeaders):
+    """ Prevent caching to let session checking work.
     """
-    pt.view(IPublicContactForm)
+    grok.adapts(IBrowserRequest, IPublicContactForm)
+
+    def cachable(self):
+        return False
 
 
 class ContactForm(silvaforms.PublicContentProviderForm):
@@ -102,7 +107,6 @@
     """
     grok.name('contactform')
     grok.context(IViewableObject)
-    grok.implements(IPublicContactForm)
 
     label = _(u'Contact us')
 
@@ -132,6 +136,7 @@
 
     def update(self):
         need(IContactFormResources)
+        interface.alsoProvides(self.view, IPublicContactForm)
         if self.sstore is None:
             self.sstore = store.SessionStore(self.request)
 
@@ -175,3 +180,9 @@
         self.status = _(u'Thank you for your message.')
         self.sent = True
         return silvaforms.SUCCESS
+
+
+class ContactFormTemplate(pt.PageTemplate):
+    """Template for the public contact form.
+    """
+    pt.view(ContactForm)