Hi Anthony,
Thanks for your reply.
You could do:
>
> {{if organization:}}FN: {{=organization.name}}
> ORG: {{=organization.name}}{{pass}}
>
> and you won't get any blank lines when there is an organization, but I
> think you'll still get two blank lines when there is no organization.
>
This won't be a problem in case of the organization, however, in case of
telecom addresses this solution won't solve the problem.
I tried this solution:
Another option might be to render the response in the controller and then
> remove any blank lines from the text:
>
> def make_vcard():
> data = [code to generate vcard data]
> vcard = response.render(context=dict(data=data))
> return vcard.replace('\n\n', '\n')
>
>
... but got the following error:
Traceback (most recent call last):
File "/Library/Python/2.5/site-packages/web2py/gluon/restricted.py", line
205, in restricted
exec ccode in environment
File
"/Library/Python/2.5/site-packages/web2py/applications/bootstrap/views/addressbook/downloadvcard.vcf",
line 1, in <module>
{{response.headers['Content-Disposition'] = 'attachment;filename=%s.vcf' %
IS_SLUG()(organization.name)[0]}}BEGIN:VCARD
NameError: name 'organization' is not defined
In the address book controller I got a function vcard which returns a vcard to
an html view. In this function I store organization, address and telecom data
in session:
session.organization=db(db.Organization.nodeID==session.id).select(db.Organization.nodeID,db.Organization.name).first()
session.address=db(db.Address.nodeID==session.id).select(db.Address.ALL).first()
session.telecom=db(db.Telecom.nodeID==session.id).select(db.Telecom.ALL)
The view contains a button 'download vcard' which calls the function
downloadvcard:
def downloadvcard():
if request.args(0)!=session.id:
redirect(URL('vcard',args=request.args(0)))
else:
vcard=response.render(context=dict(organization=session.organization,\
address=session.address,telecom=session.telecom))
return vcard.replace('\n\n','\n')
I guess my problem lies in the data part of your solution. organization and
address are single row objects, telecom contains as many rows as an
organization has telecom addresses.
I hope I provided you with sufficient information to help me solve the problem.
Kind regards,
Annet.