Esempio n. 1
0
 def _finishSet(self):
     if self.intermediateTable is None:
         names = [self.soClass.sqlmeta.table, self.otherClass.sqlmeta.table]
         names.sort()
         self.intermediateTable = '%s_%s' % (names[0], names[1])
     if not self.otherColumn:
         self.otherColumn = self.soClass.sqlmeta.style.tableReference(
             self.otherClass.sqlmeta.table)
     if not self.joinColumn:
         self.joinColumn = styles.getStyle(self.soClass).tableReference(
             self.soClass.sqlmeta.table)
     events.listen(self.event_CreateTableSignal, self.soClass,
                   events.CreateTableSignal)
     events.listen(self.event_CreateTableSignal, self.otherClass,
                   events.CreateTableSignal)
     self.clause = (
         (self.otherClass.q.id == sqlbuilder.Field(self.intermediateTable,
                                                   self.otherColumn))
         & (sqlbuilder.Field(self.intermediateTable, self.joinColumn)
            == self.soClass.q.id))
Esempio n. 2
0
    def __addtoclass__(self, cls, added_class, attr_name):
        me = self or cls
        attrs = {}
        for name in me._all_attrs:
            attrs[name] = getattr(me, name)
        attrs['added_class'] = added_class
        attrs['attr_name'] = attr_name
        obj = me.make_object(**attrs)

        if self.clone_for_subclass:
            def on_rebind(new_class_name, bases, new_attrs,
                          post_funcs, early_funcs):
                def rebind(new_class):
                    me.set_object(
                        new_class, attr_name,
                        me.make_object(**attrs))
                post_funcs.append(rebind)
            events.listen(receiver=on_rebind, soClass=added_class,
                          signal=events.ClassCreateSignal, weak=False)

        me.set_object(added_class, attr_name, obj)
Esempio n. 3
0
 def _finishSet(self):
     if self.intermediateTable is None:
         names = [self.soClass.sqlmeta.table,
                  self.otherClass.sqlmeta.table]
         names.sort()
         self.intermediateTable = '%s_%s' % (names[0], names[1])
     if not self.otherColumn:
         self.otherColumn = self.soClass.sqlmeta.style.tableReference(
             self.otherClass.sqlmeta.table)
     if not self.joinColumn:
         self.joinColumn = styles.getStyle(
             self.soClass).tableReference(self.soClass.sqlmeta.table)
     events.listen(self.event_CreateTableSignal,
                   self.soClass, events.CreateTableSignal)
     events.listen(self.event_CreateTableSignal,
                   self.otherClass, events.CreateTableSignal)
     self.clause = (
         (self.otherClass.q.id ==
          sqlbuilder.Field(self.intermediateTable, self.otherColumn))
         & (sqlbuilder.Field(self.intermediateTable, self.joinColumn)
            == self.soClass.q.id))
Esempio n. 4
0
    def __addtoclass__(self, cls, added_class, attr_name):
        me = self or cls
        attrs = {}
        for name in me._all_attrs:
            attrs[name] = getattr(me, name)
        attrs['added_class'] = added_class
        attrs['attr_name'] = attr_name
        obj = me.make_object(**attrs)

        if self.clone_for_subclass:
            def on_rebind(new_class_name, bases, new_attrs,
                          post_funcs, early_funcs):
                def rebind(new_class):
                    me.set_object(
                        new_class, attr_name,
                        me.make_object(**attrs))
                post_funcs.append(rebind)
            events.listen(receiver=on_rebind, soClass=added_class,
                          signal=events.ClassCreateSignal, weak=False)

        me.set_object(added_class, attr_name, obj)