minor improvements on navigation and template layout
git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@2189 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
29d8e216b5
commit
064fb5a4ee
3 changed files with 46 additions and 21 deletions
|
@ -43,6 +43,7 @@ Working with message instances
|
||||||
>>> mi = MessageInstance(None, manager.messages['feedback_text'], manager)
|
>>> mi = MessageInstance(None, manager.messages['feedback_text'], manager)
|
||||||
>>> for key, value in mi.applyTemplate().items():
|
>>> for key, value in mi.applyTemplate().items():
|
||||||
... print key + ':', value
|
... print key + ':', value
|
||||||
|
url:
|
||||||
text: Dear $person.firstname $person.lastname,
|
text: Dear $person.firstname $person.lastname,
|
||||||
You have been registered for the following events.
|
You have been registered for the following events.
|
||||||
$@@list_registrations_text
|
$@@list_registrations_text
|
||||||
|
|
|
@ -26,6 +26,12 @@ from string import Template
|
||||||
from zope import component
|
from zope import component
|
||||||
from zope.interface import implements
|
from zope.interface import implements
|
||||||
from zope.publisher.browser import TestRequest
|
from zope.publisher.browser import TestRequest
|
||||||
|
try:
|
||||||
|
from zope.traversing.browser.absoluteurl import absoluteURL
|
||||||
|
zope29 = False
|
||||||
|
except ImportError:
|
||||||
|
from zope.app.traversing.browser.absoluteurl import absoluteURL
|
||||||
|
zope29 = True
|
||||||
|
|
||||||
from cybertools.composer.instance import Instance
|
from cybertools.composer.instance import Instance
|
||||||
from cybertools.composer.interfaces import IInstance
|
from cybertools.composer.interfaces import IInstance
|
||||||
|
@ -44,12 +50,24 @@ class MessageInstance(Instance):
|
||||||
def applyTemplate(self, data=None, **kw):
|
def applyTemplate(self, data=None, **kw):
|
||||||
if data is None:
|
if data is None:
|
||||||
data = {}
|
data = {}
|
||||||
|
request = data.get('request') or TestRequest()
|
||||||
|
data['url'] = self.getClientUrl(request)
|
||||||
dp = DataProvider(self, data)
|
dp = DataProvider(self, data)
|
||||||
text = MessageTemplate(self.template.text).safe_substitute(dp)
|
text = MessageTemplate(self.template.text).safe_substitute(dp)
|
||||||
subject = self.template.subjectLine
|
subject = self.template.subjectLine
|
||||||
data.update(dict(subjectLine=subject, text=text))
|
data.update(dict(subjectLine=subject, text=text))
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
def getClientUrl(self, request):
|
||||||
|
if self.client is None:
|
||||||
|
return ''
|
||||||
|
if zope29: # evil hack to get rid of acquisition stuff
|
||||||
|
parts = absoluteURL(self.client.manager, request).split('/')
|
||||||
|
url = '/'.join(parts[:-3])
|
||||||
|
else:
|
||||||
|
url = absoluteURL(self.client.manager, request)
|
||||||
|
return '%s?id=%s' % (url, self.client.__name__)
|
||||||
|
|
||||||
|
|
||||||
class DataProvider(object):
|
class DataProvider(object):
|
||||||
|
|
||||||
|
@ -59,7 +77,6 @@ class DataProvider(object):
|
||||||
|
|
||||||
def __getitem__(self, key):
|
def __getitem__(self, key):
|
||||||
client = self.context.client
|
client = self.context.client
|
||||||
#messageManager = self.context.template.getManager()
|
|
||||||
messageManager = self.context.manager
|
messageManager = self.context.manager
|
||||||
if key.startswith('@@'):
|
if key.startswith('@@'):
|
||||||
if client is None:
|
if client is None:
|
||||||
|
@ -83,8 +100,6 @@ class DataProvider(object):
|
||||||
return ''
|
return ''
|
||||||
return value
|
return value
|
||||||
elif key in messageManager.messages:
|
elif key in messageManager.messages:
|
||||||
#mi = component.getMultiAdapter(
|
|
||||||
# (client, messageManager.messages[key]), IInstance)
|
|
||||||
mi = MessageInstance(client, messageManager.messages[key],
|
mi = MessageInstance(client, messageManager.messages[key],
|
||||||
messageManager)
|
messageManager)
|
||||||
return mi.applyTemplate()['text']
|
return mi.applyTemplate()['text']
|
||||||
|
@ -97,6 +112,8 @@ class DataProvider(object):
|
||||||
instance.template = schema
|
instance.template = schema
|
||||||
data = instance.applyTemplate()
|
data = instance.applyTemplate()
|
||||||
return data[fieldName]
|
return data[fieldName]
|
||||||
|
elif key in self.data:
|
||||||
|
return self.data[key]
|
||||||
else:
|
else:
|
||||||
raise KeyError(key)
|
raise KeyError(key)
|
||||||
|
|
||||||
|
|
|
@ -66,8 +66,9 @@ class BaseView(SchemaBaseView):
|
||||||
if service is None:
|
if service is None:
|
||||||
service = self.context
|
service = self.context
|
||||||
if service.start and service.end:
|
if service.start and service.end:
|
||||||
return ('%s - %s' %
|
return ('%s-%s' %
|
||||||
(self.getFormattedDate(service.start, type='dateTime', variant='short'),
|
(self.getFormattedDate(service.start,
|
||||||
|
type='dateTime', variant='short').replace(' ', ' '),
|
||||||
self.getFormattedDate(service.end, type='time', variant='short')))
|
self.getFormattedDate(service.end, type='time', variant='short')))
|
||||||
else:
|
else:
|
||||||
return '-'
|
return '-'
|
||||||
|
@ -247,7 +248,8 @@ class CheckoutView(ServiceManagerView):
|
||||||
def listRegistrationsHtml(self):
|
def listRegistrationsHtml(self):
|
||||||
result = []
|
result = []
|
||||||
for info in self.getRegistrationsInfo():
|
for info in self.getRegistrationsInfo():
|
||||||
line = self.row % (info['number'], info['service'], info['fromTo'])
|
line = self.row % (info['number'], info['service'],
|
||||||
|
info['fromTo'].replace(' ', ' '))
|
||||||
result.append(line)
|
result.append(line)
|
||||||
return self.html % '\n'.join(result)
|
return self.html % '\n'.join(result)
|
||||||
|
|
||||||
|
@ -320,27 +322,32 @@ class ServiceView(BaseView):
|
||||||
form = self.request.form
|
form = self.request.form
|
||||||
clientName = self.getClientName()
|
clientName = self.getClientName()
|
||||||
if not form.get('action'):
|
if not form.get('action'):
|
||||||
data = self.getClientData()
|
#data = self.getClientData()
|
||||||
if ('service_registration' in data
|
#if ('service_registration' in data
|
||||||
and data['service_registration'].number > 0):
|
# and data['service_registration'].number > 0):
|
||||||
self.showCheckoutButton = True
|
# self.showCheckoutButton = True
|
||||||
return True
|
return True
|
||||||
manager = self.context.getManager()
|
manager = self.context.getManager()
|
||||||
if clientName:
|
|
||||||
client = manager.getClients().get(clientName)
|
|
||||||
if client is None:
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
client = IClientFactory(manager)()
|
|
||||||
newClient = True
|
|
||||||
nextUrl = self.getSchemaUrl()
|
|
||||||
regs = self.state = IClientRegistrations(client)
|
|
||||||
try:
|
try:
|
||||||
number = int(form.get('number', 0))
|
number = int(form.get('number', 0))
|
||||||
if number < 0:
|
if number < 0:
|
||||||
number = 0
|
number = 0
|
||||||
except ValueError:
|
except ValueError:
|
||||||
number = 1
|
number = 0
|
||||||
|
if clientName:
|
||||||
|
client = manager.getClients().get(clientName)
|
||||||
|
if client is None:
|
||||||
|
self.request.response.redirect(self.getSchemaUrl())
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
if number == 0:
|
||||||
|
self.request.response.redirect(self.getSchemaUrl())
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
client = IClientFactory(manager)()
|
||||||
|
newClient = True
|
||||||
|
nextUrl = self.getSchemaUrl()
|
||||||
|
regs = self.state = IClientRegistrations(client)
|
||||||
regs.validate(clientName, [self.context], [number])
|
regs.validate(clientName, [self.context], [number])
|
||||||
if regs.severity > 0:
|
if regs.severity > 0:
|
||||||
return True
|
return True
|
||||||
|
@ -351,7 +358,7 @@ class ServiceView(BaseView):
|
||||||
regs.register([self.context], numbers=[number])
|
regs.register([self.context], numbers=[number])
|
||||||
self.showCheckoutButton = True
|
self.showCheckoutButton = True
|
||||||
nextUrl = self.getSchemaUrl()
|
nextUrl = self.getSchemaUrl()
|
||||||
elif 'submit_unregister' in form:
|
elif 'submit_register' in form and number == 0 or 'submit_unregister' in form:
|
||||||
regs.unregister([self.context])
|
regs.unregister([self.context])
|
||||||
number = 0
|
number = 0
|
||||||
nextUrl = self.getSchemaUrl()
|
nextUrl = self.getSchemaUrl()
|
||||||
|
|
Loading…
Add table
Reference in a new issue