Contact: fumanchu@aminus.org

Log in as guest/dejavu to create tickets

I think I've seen this ORM somewhere before...

Changeset 384

Show
Ignore:
Timestamp:
01/09/07 18:48:19
Author:
fumanchu
Message:

Improvements to FB hints.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/storage/db.py

    r383 r384  
    834834        for cname, c in table.iteritems(): 
    835835            ptype = self.db.python_type(c.dbtype) 
    836             if ptype == int and c.hints.get('bytes') in (1, '1'): 
     836            if ptype == int and c.hints.get('bytes') in (0, '0', 1, '1'): 
    837837                # This is probably a bool 
    838838                ptype = bool 
  • trunk/storage/storefirebird.py

    r383 r384  
    122122     
    123123    def coerce_bool(self, col): 
    124         return "INTEGER
     124        return "SMALLINT
    125125     
    126126    def int_type(self, bytes): 
     
    277277        for name, dbtype, fieldlen, default, prec, scale in data: 
    278278            hints = {} 
    279             hints['precision'] = prec 
    280             hints['scale'] = abs(scale) 
     279            if prec: 
     280                hints['precision'] = prec 
     281                if scale: 
     282                    hints['scale'] = abs(scale) 
     283            hints['bytes'] = fieldlen 
    281284             
    282285            # FB pads name and type values to 31 chars. 
  • trunk/test/zoo_fixture.py

    r383 r384  
    11161116            raise self.failureException, (msg or '%r not in %r' % (second, first)) 
    11171117     
    1118     def test_discovery(self): 
     1118    def setUp(self): 
     1119        self.modeler = None 
     1120         
    11191121        s = arena.stores.values()[0] 
    11201122        if not hasattr(s, "db"): 
    1121             print "not a db (skipped) ", 
    11221123            return 
    11231124         
     
    11281129        from dejavu.storage import db 
    11291130        self.modeler = db.Modeler(s.db) 
    1130          
    1131         self.make_classes() 
    1132         self.make_source() 
    1133      
    1134     def make_classes(self): 
     1131     
     1132    def test_make_classes(self): 
     1133        if not self.modeler: 
     1134            print "not a db (skipped) ", 
     1135            return 
     1136         
    11351137        for cls in (Zoo, Animal): 
    11361138            tkey = self.modeler.db.table_name(cls.__name__) 
     
    11681170                        self.assertEqual(copy.hints[k], v) 
    11691171     
    1170     def make_source(self): 
     1172    def test_make_source(self): 
     1173        if not self.modeler: 
     1174            print "not a db (skipped) ", 
     1175            return 
     1176         
    11711177        tkey = self.modeler.db.table_name('Exhibit') 
    11721178        source = self.modeler.make_source(tkey, 'Exhibit')