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:
parent
b6ef57f389
commit
5fd78bccca
2 changed files with 69 additions and 17 deletions
|
@ -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]
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue