16
16
class GeneralTests (TestCase ):
17
17
18
18
@classmethod
19
- def _find_subclasses_for_package_py32 (cls , base_class , package ):
19
+ def _find_localflavor_subclasses_py32 (cls , base_class ):
20
20
classes = []
21
21
for attr in dir (localflavor ):
22
22
if attr .startswith ('_' ):
23
23
continue
24
- sub_module = importlib .import_module (package .__name__ + '.' + attr )
25
- sub_module_fields = cls . _find_subclasses_for_package ( base_class , sub_module )
26
- if len ( sub_module_fields ) > 0 :
27
- classes . extend (sub_module_fields )
28
-
24
+ sub_module = importlib .import_module (localflavor .__name__ + '.' + attr )
25
+ if hasattr ( sub_module , '__path__' ):
26
+ sub_module_fields = cls . _find_subclasses_for_package ( base_class , sub_module )
27
+ if len (sub_module_fields ) > 0 :
28
+ classes . extend ( sub_module_fields )
29
29
return classes
30
30
31
31
@classmethod
32
32
def _find_subclasses_for_package (cls , base_class , package ):
33
- # Finding the localflavor model classes directly with walk_packages doesn't work with Python 3.2. The workaround
34
- # is to find the classes in all of the submodules.
35
- if sys .version_info [:2 ] == (3 , 2 ):
36
- return cls ._find_subclasses_for_package_py32 (base_class , package )
37
-
38
33
classes = []
39
34
for importer , modname , ispkg in pkgutil .walk_packages (path = package .__path__ , prefix = package .__name__ + '.' ,
40
35
onerror = lambda x : None ):
@@ -58,7 +53,12 @@ def test_model_field_deconstruct_methods_with_default_options(self):
58
53
# This test can only check the choices and max_length options. Specific tests are required for model fields
59
54
# with options that users can set. See to the IBAN tests for an example.
60
55
61
- model_classes = self ._find_subclasses_for_package (models .Field , localflavor )
56
+ # Finding the localflavor model classes directly with walk_packages doesn't work with Python 3.2. The workaround
57
+ # is to find the classes in all of the submodules.
58
+ if sys .version_info [:2 ] == (3 , 2 ):
59
+ model_classes = self ._find_localflavor_subclasses_py32 (models .Field )
60
+ else :
61
+ model_classes = self ._find_subclasses_for_package (models .Field , localflavor )
62
62
self .assertTrue (len (model_classes ) > 0 , 'No localflavor models.Field classes were found.' )
63
63
64
64
for cls in model_classes :
@@ -81,7 +81,12 @@ def test_model_field_deconstruct_methods_with_default_options(self):
81
81
self .assertEqual (getattr (test_instance , attr ), getattr (new_instance , attr ))
82
82
83
83
def test_forms_char_field_empty_value_allows_none (self ):
84
- form_classes = self ._find_subclasses_for_package (forms .CharField , localflavor )
84
+ # Finding the localflavor model classes directly with walk_packages doesn't work with Python 3.2. The workaround
85
+ # is to find the classes in all of the submodules.
86
+ if sys .version_info [:2 ] == (3 , 2 ):
87
+ form_classes = self ._find_localflavor_subclasses_py32 (forms .CharField )
88
+ else :
89
+ form_classes = self ._find_subclasses_for_package (forms .CharField , localflavor )
85
90
self .assertTrue (len (form_classes ) > 0 , 'No localflavor forms.CharField classes were found.' )
86
91
87
92
for cls in form_classes :
0 commit comments