Skip to content

Commit ed22a65

Browse files
Merge pull request open5e#535 from calumbell/feature/v2-search-fields-for-CharacterClass
V2 Feature: `/search` now returns more helpful data
2 parents f7305bf + e1651f0 commit ed22a65

File tree

6 files changed

+35
-11
lines changed

6 files changed

+35
-11
lines changed

api_v2/models/characterclass.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,4 +113,12 @@ def as_text(self):
113113

114114
return text
115115

116+
def search_result_extra_fields(self):
117+
return {
118+
"subclass_of": {
119+
"name": self.subclass_of.name,
120+
"key": self.subclass_of.key
121+
} if self.subclass_of else None
122+
}
123+
116124
#TODO add verbose name plural

api_v2/models/creature.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,10 @@ def as_text(self):
8282

8383
def search_result_extra_fields(self):
8484
return {
85-
"armor_class":self.armor_class,
86-
"hit_points":self.hit_points,
87-
"ability_scores":self.get_ability_scores(),
88-
}
85+
"cr": self.challenge_rating_text,
86+
"type": self.type.name,
87+
"size": self.size.name,
88+
}
8989

9090
@property
9191
def creatureset(self):

api_v2/models/item.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,11 @@ def is_magic_item(self):
8181
return self.rarity is not None
8282

8383
def search_result_extra_fields(self):
84-
fields = {"type":self.category.key}
85-
if self.is_magic_item:
86-
fields["rarity"]=self.rarity.key
87-
return fields
88-
84+
return {
85+
"is_magic_item": self.is_magic_item,
86+
"type": self.category.name if self.is_magic_item else None,
87+
"rarity": self.rarity.name if self.is_magic_item else None,
88+
}
8989

9090

9191
class ItemSet(HasName, HasDescription, FromDocument):

api_v2/models/race.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,13 @@ def traits(self):
3939
"""Returns the set of traits that are related to this race."""
4040
return self.racetrait_set
4141

42+
def search_result_extra_fields(self):
43+
return {
44+
"subrace_of": {
45+
"name": self.subrace_of.name,
46+
"key": self.subrace_of.key
47+
} if self.subrace_of else None
48+
}
4249
class Meta:
4350
"""To assist with the UI layer."""
4451

api_v2/models/spell.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,12 @@ def get_range_unit(self):
142142
return self.document.distance_unit
143143
return self.range_unit
144144

145-
145+
def search_result_extra_fields(self):
146+
return {
147+
"school": self.school.name,
148+
"level": self.level,
149+
}
150+
146151
class SpellCastingOption(models.Model):
147152
"""An object representing an alternative way to cast a spell."""
148153

api_v2/serializers/search.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,18 @@ def get_object(self, obj):
3939
result_detail = v1.Spell.objects.get(slug=obj.object_pk)
4040
if obj.object_model == 'Section':
4141
result_detail = v1.Section.objects.get(slug=obj.object_pk)
42-
42+
4343
if obj.schema_version == 'v2':
4444
if obj.object_model == 'Item':
4545
result_detail = models.Item.objects.get(pk=obj.object_pk)
4646
if obj.object_model == 'Creature':
4747
result_detail = models.Creature.objects.get(pk=obj.object_pk)
4848
if obj.object_model == 'Spell':
4949
result_detail = models.Spell.objects.get(pk=obj.object_pk)
50+
if obj.object_model == 'CharacterClass':
51+
result_detail = models.CharacterClass.objects.get(pk=obj.object_pk)
52+
if obj.object_model == 'Race':
53+
result_detail = models.Race.objects.get(pk=obj.object_pk)
5054

5155
if result_detail is not None:
5256
return result_detail.search_result_extra_fields()

0 commit comments

Comments
 (0)