diff roundup/backends/back_metakit.py @ 926:3216c4f06ec4

Fixes to the search form and saving queries. Fixes to sorting in back_metakit.py.
author Gordon B. McMillan <gmcm@users.sourceforge.net>
date Wed, 31 Jul 2002 22:40:50 +0000
parents 9f291a3c6d81
children 51519406b73e
line wrap: on
line diff
--- a/roundup/backends/back_metakit.py	Wed Jul 31 22:04:48 2002 +0000
+++ b/roundup/backends/back_metakit.py	Wed Jul 31 22:40:50 2002 +0000
@@ -46,6 +46,8 @@
             except KeyError:
                 x = 0
             return x
+        elif classname == 'transactions':
+            return self.dirty
         return self.getclass(classname)
     def getclass(self, classname):
         return self.classes[classname]
@@ -479,10 +481,11 @@
         row._isdel = 1
         if self.do_journal:
             self.db.addjournal(self.classname, nodeid, _RETIRE, {})
-        iv = self.getindexview(1)
-        ndx = iv.find(k=getattr(row, self.keyname),i=row.id)
-        if ndx > -1:
-            iv.delete(ndx)
+        if self.keyname:
+            iv = self.getindexview(1)
+            ndx = iv.find(k=getattr(row, self.keyname),i=row.id)
+            if ndx > -1:
+                iv.delete(ndx)
         self.db.dirty = 1
         self.fireReactors('retire', nodeid, None)
     def history(self, nodeid):
@@ -732,7 +735,24 @@
                 try:
                     prop = getattr(v, propname)
                 except AttributeError:
+                    print "MK has no property %s" % propname
                     continue
+                propclass = self.ruprops.get(propname, None)
+                if propclass is None:
+                    propclass = self.privateprops.get(propname, None)
+                    if propclass is None:
+                        print "Schema has no property %s" % propname
+                        continue
+                if isinstance(propclass, hyperdb.Link):
+                    linkclass = self.db.getclass(propclass.classname)
+                    lv = linkclass.getview()
+                    lv = lv.rename('id', propname)
+                    v = v.join(lv, prop, 1)
+                    if linkclass.getprops().has_key('order'):
+                        propname = 'order'
+                    else:
+                        propname = linkclass.labelprop()
+                    prop = getattr(v, propname)
                 if isreversed:
                     rev.append(prop)
                 sortspec.append(prop)

Roundup Issue Tracker: http://roundup-tracker.org/