|
Julien Cigar
jcigar at ulb.ac.be
Mon Jun 12 11:03:35 EDT 2006
With the help of a knowledge I resolved my problem with:
def access( path , current , default = '' ) :
if not isinstance(current, dict):
current = current.__dict__
parts = path.split('.')
if not parts:
return default
for part in parts[:-1]:
if part not in current:
return default
current = current[part].__dict__
return current.get(parts[-1] , default)
I think it could be a good idea in psp to have a predefined bunch of
standard "template tags". I wondered whether somebody would have already
thought to that ? I think It could improve the clearness of the
templates a lot ...
Regards,
Julien
Julien Cigar wrote:
> Hello list,
>
> I have a little problem with psp (I'm using psp as a template engine)
>
> In one of my templates I have :
> <input type="text" class="scientific_name" name="scientific_name"
> value="<%= invasive.scientific_name %>" />
>
> The problem I have is that I'm using this form in different context
> and sometimes the 'invasive' object doesn't exists.
> Is there a way to "display-only-if-object-exist" ? What I would like
> to avoid is things like :
>
> <%
> try:
> # BEGIN
> %>
> <%= invasive.scientific_name %>
> <%
> #END
> except:
> #BEGIN
> %>
> blabla
> <%
> # NED
> %>
>
> I tried something like :
>
> def show_if_defined(s, obj=globals()):
> for part in s.split('.') :
> if not hasattr(obj, part):
> return ''
> obj = getattr(obj, part)
> return obj
>
> and
> <input type="text" class="scientific_name" name="scientific_name"
> value="<%= show_if_defined('invasive.scientific_name') %>" />
>
> but without success ...
>
> Any idea ?
>
> Thanks
>
--
Julien Cigar
Belgian Biodiversity Platform
http://www.biodiversity.be
Université Libre de Bruxelles
Campus de la Plaine CP 257
Bâtiment NO, Bureau 4 N4 115C (Niveau 4)
Boulevard du Triomphe, entrée ULB 2
B-1050 Bruxelles
office: jcigar at ulb.ac.be
home: mage at mordor.ath.cx
|