+ @classmethod
+ def scoped(base_class, base_dn):
+ """
+ Returns a copy of the current class with a different base_dn.
+ """
+ import new
+ import re
+ suffix = re.sub('[=,]', '_', base_dn)
+ name = "%s_%s" % (base_class.__name__, str(suffix))
+ new_class = new.classobj(name, (base_class,), {'base_dn': base_dn, '__module__': base_class.__module__})
+ return new_class
+