def prepare(self): from eplasty.relation import OneToMany self.backref = self.backref or clsname2tname(self.owner_class.__name__) self.foreign_class.add_field(self.backref, OneToMany( self.owner_class, backref=self.name, dependent=self.dependent )) return self
def _setup_non_abstract(cls, classname, bases, dict_, fields): #@NoSelf """Setups the non-abstract class creating primary key if needed and selecting a table name""" cls.parent_classes = [b for b in bases if not b._abstract] cls.inh_fields = sum([ p_cls.fields for p_cls in cls.parent_classes ], []) if '__pk__' not in dict_: if cls.parent_classes: dict_['__pk__'] = cls.parent_classes[0].__pk__ else: primary_key = SimplePK('id') fields.insert(0, primary_key) cls.id = dict_['id'] = primary_key dict_['__pk__'] = ('id',) cls.__pk__ = dict_['__pk__'] dict_.pop('__pk__', None) cls.columns = sum((field.columns for field in fields), []) cls.indexes += sum((field.indexes for field in fields), []) for col in cls.columns: col.bind(cls) cls.inh_columns = sum([ p_cls.columns for p_cls in cls.parent_classes ], []) cls.fields = fields if '__table_name__' in dict_: cls.__table_name__ = dict_['__table_name__'] else: cls.__table_name__ = clsname2tname(classname) dict_.pop('__table_name__', None) for field in cls.fields: field.prepare()
def test_tname(self): """Test if the __table_name__ is set""" self.assertEqual( util.clsname2tname('RoundTableKnight'), 'round_table_knights' )
def test_tnamey(self): """Test the __table_name__ is set correcly when singular ends with y""" self.assertEqual( util.clsname2tname('BitterCherry'), 'bitter_cherries' )