Skip to content

Commit

Permalink
Merge 0ce132e into 3282503
Browse files Browse the repository at this point in the history
  • Loading branch information
davidmiller committed Oct 26, 2018
2 parents 3282503 + 0ce132e commit 934d822
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 1 deletion.
8 changes: 7 additions & 1 deletion opal/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -200,11 +200,17 @@ def get_field_description(cls, name):
@classmethod
def get_field_enum(cls, name):
field = cls._get_field(name)
choices = getattr(field, "choices", [])

choices = getattr(field, "choices", [])
if choices:
return [i[1] for i in choices]

yes_no = ["Yes", "No"]
if cls._get_field_type(name) == models.fields.BooleanField:
return yes_no
elif cls._get_field_type(name) == models.fields.NullBooleanField:
return yes_no + ["Unknown"]

@classmethod
def get_lookup_list_api_name(cls, field_name):
lookup_list = None
Expand Down
1 change: 1 addition & 0 deletions opal/tests/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ class HatWearer(models.EpisodeSubrecord):
name = dmodels.CharField(max_length=200)
hats = dmodels.ManyToManyField(Hat, related_name="hat_wearers")
wearing_a_hat = dmodels.BooleanField(default=True)
suits_a_hat = dmodels.NullBooleanField()

class Meta:
verbose_name = 'Wearer of Hats'
Expand Down
8 changes: 8 additions & 0 deletions opal/tests/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -434,6 +434,14 @@ def test_enum(self):
enum = FavouriteColour.get_field_enum('name')
self.assertEqual(enum, ["purple", "yellow", "blue"])

def test_get_field_enum_for_boolean_field(self):
enum = HatWearer.get_field_enum('wearing_a_hat')
self.assertEqual(enum, ['Yes', 'No'])

def test_get_field_enum_for_null_boolean_field(self):
enum = HatWearer.get_field_enum('suits_a_hat')
self.assertEqual(enum, ['Yes', 'No', 'Unknown'])

def test_description(self):
description = FavouriteColour.get_field_description('name')
self.assertEqual(description, "orange is the new black")
Expand Down
14 changes: 14 additions & 0 deletions opal/tests/test_templatetags_forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,20 @@ def test_radio_infer_lookuplists(self):
rendered = template.render(Context({}))
self.assertIn('purple', rendered)

def test_radio_infer_lookuplists_with_boolean(self):
template = Template('{% load forms %}{% radio field="HatWearer.wearing_a_hat" %}')
rendered = template.render(Context({}))
self.assertIn('Yes', rendered)
self.assertIn('No', rendered)
self.assertNotIn('Unknown', rendered)

def test_radio_infer_lookuplists_with_quantum_boolean(self):
template = Template('{% load forms %}{% radio field="HatWearer.suits_a_hat" %}')
rendered = template.render(Context({}))
self.assertIn('Yes', rendered)
self.assertIn('No', rendered)
self.assertIn('Unknown', rendered)

def test_element_name(self):
tpl = Template('{% load forms %}{% radio label="hai" model="bai" element_name="onions"%}')
rendered = tpl.render(Context({}))
Expand Down

0 comments on commit 934d822

Please sign in to comment.