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.

Reply via email to