provide simple checkout process with 'thank you' page

git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@2016 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2007-09-07 15:56:48 +00:00
parent b6ef57f389
commit 5fd78bccca
2 changed files with 69 additions and 17 deletions

View file

@ -41,6 +41,14 @@ class BaseView(object):
self.context = context
self.request = request
def getUrlForObject(self, obj):
from zope.traversing.browser import absoluteURL
return absoluteURL(obj, self.request)
def getLanguage(self):
# TODO: take from request or whatever...
return 'en'
def getClientName(self):
clientName = self.clientName
if clientName:
@ -77,10 +85,10 @@ class BaseView(object):
context = self.context
idx = templates.find(context)
if idx > 0:
#return templates[idx-1].name
return templates.keys()[idx-1]
return self.getUrlForObject(templates[idx-1])
#return templates.keys()[idx-1]
else:
return None
return ''
@Lazy
def nextTemplate(self):
@ -92,30 +100,38 @@ class BaseView(object):
idx = templates.find(context)
if 0 <= idx < len(templates) - 1:
#return templates[idx+1].name
return templates.keys()[idx+1]
return self.getUrlForObject(templates[idx+1])
#return templates.keys()[idx+1]
else:
return None
return ''
@Lazy
def url(self):
from zope.traversing.browser import absoluteURL
return absoluteURL(self.context, self.request)
def getCheckoutView(self):
manager = self.context.getManager()
return self.getUrlForObject(manager) + '/checkout.html'
buttonActions = dict(
submit_previous=getPreviousTemplate,
submit_next=getNextTemplate,
submit=getCheckoutView,
)
#@Lazy
def nextUrl(self):
#viewName = 'thankyou.html'
viewName = ''
url = ''
form = self.request.form
for bn in self.buttonActions:
if bn in form:
viewName = self.buttonActions[bn](self)
url = self.buttonActions[bn](self)
break
return '%s/%s?id=%s' % (self.url, viewName, self.clientName)
return '%s?id=%s' % (url, self.clientName)
#return '%s/%s?id=%s' % (self.url, viewName, self.clientName)
@Lazy
def url(self):
from zope.traversing.browser import absoluteURL
return absoluteURL(self.context, self.request)
def setSessionInfo(self, key, value, packageId=packageId):
session = ISession(self.request)[packageId]

View file

@ -45,13 +45,13 @@ class BaseView(SchemaBaseView):
def url(self):
return self.getUrlForObject(self.context)
def getUrlForObject(self, obj):
from zope.traversing.browser import absoluteURL
return absoluteURL(obj, self.request)
def getClient(self):
clientName = self.getClientName()
if clientName is None:
return None
return self.manager.getClients().get(clientName)
def getLanguage(self):
# TODO: take from request or whatever...
return 'en'
# output formatting
def getFormattedDate(self, date=None, type='date', variant='medium'):
date = time.localtime(date)[:6]
@ -78,6 +78,10 @@ class ServiceManagerView(BaseView):
name=viewName)
return None
@Lazy
def manager(self):
return self.context
def findRegistrationTemplate(self, service):
""" Find a registration template that provides the registration
for the service given.
@ -128,6 +132,38 @@ class ServiceManagerView(BaseView):
return self.overview(includeCategories=('event',))
class CheckoutView(ServiceManagerView):
def getServices(self):
return self.manager.getServices()
def getClientData(self):
client = self.getClient()
if client is None:
return {}
regs = IClientRegistrations(client)
instance = IInstance(client)
data = instance.applyTemplate()
data['service_registrations'] = regs.getRegistrations()
return data
def update(self):
form = self.request.form
clientName = self.getClientName()
if not form.get('action'):
return True # TODO: error, redirect to overview
client = self.getClient()
if client is None:
return True # TODO: error, redirect to overview
regs = IClientRegistrations(client).getRegistrations()
for reg in regs:
pass # set state to submitted,
# send mail
# find thank you message and redirect to it
self.request.response.redirect(self.url + '/checkout.html?message=thankyou')
return False
class ServiceView(BaseView):
showCheckoutButton = False