Is it possible, that self.use_version returns None or False? I think it returns always a version (manually set, actual, last, new in this order). Or do you want to keep the case, that a developer sets an ugly object to 'use_version'? Is this still possible?