def lookuplists(): """ Generator function for lookuplists """ for lookuplist in utils._itersubclasses(LookupList): if not lookuplist._meta.abstract: yield lookuplist
def list(klass): """ Return a list of all ward rounds """ if not IMPORTED_FROM_APPS: import_from_apps() return _itersubclasses(klass)
def patient_subrecords(): """ Generator function for patient subrecords. """ from opal.models import PatientSubrecord for model in _itersubclasses(PatientSubrecord): if model._meta.abstract: continue yield model
def episode_subrecords(): """ Generator function for episode subrecords. """ from opal.models import EpisodeSubrecord for model in _itersubclasses(EpisodeSubrecord): if model._meta.abstract or model._exclude_from_subrecords: continue yield model
def patient_subrecords(): """ Generator function for patient subrecords. """ from opal.models import PatientSubrecord for model in _itersubclasses(PatientSubrecord): if model._meta.abstract or model._exclude_from_subrecords: continue yield model
def episode_subrecords(): """ Generator function for episode subrecords. """ from opal.models import EpisodeSubrecord for model in _itersubclasses(EpisodeSubrecord): if model._meta.abstract: continue yield model
def has_delete_permission(self, request, obj=None): if obj is None: return True for sub in _itersubclasses(models.TrackedModel): if not hasattr(sub, 'objects'): continue # It's another abstract model! instances = sub.objects.filter( Q(created_by=obj) | Q(updated_by=obj)).count() if instances > 0: return False return True
def on_delete_cb(sender, instance, *args, **kwargs): if not cls._meta.abstract: cls.objects.filter(**{ self.fk_field_name: instance }).update(**{self.ft_field_name: instance.name}) else: subclasses = _itersubclasses(cls) for sub_class in subclasses: if not sub_class._meta.proxy or sub_class._meta.abstract: sub_class.objects.filter(**{ self.fk_field_name: instance }).update(**{self.ft_field_name: instance.name})
def has_delete_permission(self, request, obj=None): if obj is None: return True for sub in _itersubclasses(models.TrackedModel): if not hasattr(sub, 'objects'): continue # It's another abstract model! instances = sub.objects.filter( Q(created_by=obj) | Q(updated_by=obj) ).count() if instances > 0: return False return True
def test_tree_structure(self): class A(object): pass class B(A): pass class C(B, utils.AbstractBase): pass class D(C): pass results = {i for i in utils._itersubclasses(A)} self.assertEqual(results, set([B, D]))
def test_old_style_classes(self): class Old: pass with self.assertRaises(TypeError): list(utils._itersubclasses(Old))
def test_when_called_with_type(self): expected = type.__subclasses__(type) for s in expected: self.assertIn(s, list(utils._itersubclasses(type)))
def get_class_from_test_name(cls, test_name): for test_class in _itersubclasses(cls): if test_class.get_display_name() == test_name: return test_class
def get_subclass(module, klass): import_from_apps(module) return _itersubclasses(klass)
def list(cls): for test_class in _itersubclasses(cls): if not isinstance(cls, AbstractBase): yield test_class