[Maypole] bug in macros.tt?

Dave Howorth dhoworth@mrc-lmb.cam.ac.uk
Tue, 07 Dec 2004 17:04:08 +0000


I think there's a bug in the maybe_link_view macro.

It produces HTML links from fields that are foreign keys to rows in 
related tables, but is a bit overzealous. It divides fields into two 
categories, 'objects' and 'non-objects' and it assumes that every object 
can only be a foreign key. But this isn't true, it could just be a field 
with an inflated value (such as Time::Piece).

Its means of determining whether something is an object is to invoke the 
thing's 'table' method. This doesn't do the right thing on arbitrary 
objects :) I suggest instead testing whether the thing inherits from 
Maypole::Model::Base and this appears to work for me. Here's a patch:


--- factory/macros.tt	Mon Oct 25 12:21:55 2004
+++ custom/macros.tt	Tue Dec  7 16:50:49 2004

@@ -34,14 +33,13 @@

  [%
  MACRO maybe_link_view(object) BLOCK;
-    IF object.table; # It's an object, i.e. a has-a
+    IF object.isa('Maypole::Model::Base') ;
          link(object.table, "view", object.id, object);
      ELSE;
          object;

Cheers, Dave