mirror of
https://github.com/veekun/pokedex.git
synced 2024-08-20 18:16:34 +00:00
Split up MoveEffectProperty; don't detect dict proxies.
(It didn't work anyway!)
This commit is contained in:
parent
adbd3b628f
commit
50b3adf949
2 changed files with 17 additions and 16 deletions
|
@ -72,12 +72,10 @@ class MoveEffectProperty(object):
|
||||||
some_move.effect # returns a MarkdownString
|
some_move.effect # returns a MarkdownString
|
||||||
some_move.effect.as_html # returns a chunk of HTML
|
some_move.effect.as_html # returns a chunk of HTML
|
||||||
|
|
||||||
This class attempts to detect if the wrapped property is a dict-based
|
|
||||||
association proxy, and will act like such a dict if so. Don't rely on it
|
|
||||||
for querying, of course.
|
|
||||||
|
|
||||||
This class also performs simple substitution on the effect, replacing
|
This class also performs simple substitution on the effect, replacing
|
||||||
`$effect_chance` with the move's actual effect chance.
|
`$effect_chance` with the move's actual effect chance.
|
||||||
|
|
||||||
|
Use `MoveEffectPropertyMap` for dict-like association proxies.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, effect_column):
|
def __init__(self, effect_column):
|
||||||
|
@ -85,16 +83,19 @@ class MoveEffectProperty(object):
|
||||||
|
|
||||||
def __get__(self, obj, cls):
|
def __get__(self, obj, cls):
|
||||||
prop = getattr(obj.move_effect, self.effect_column)
|
prop = getattr(obj.move_effect, self.effect_column)
|
||||||
if isinstance(prop, dict):
|
return _markdownify_effect_text(obj, prop)
|
||||||
# Looks like a dict proxy; markdownify everyone
|
|
||||||
|
class MoveEffectPropertyMap(MoveEffectProperty):
|
||||||
|
"""Similar to `MoveEffectProperty`, but works on dict-like association
|
||||||
|
proxies.
|
||||||
|
"""
|
||||||
|
def __get__(self, obj, cls):
|
||||||
|
prop = getattr(obj.move_effect, self.effect_column)
|
||||||
newdict = dict(prop)
|
newdict = dict(prop)
|
||||||
for key in newdict:
|
for key in newdict:
|
||||||
newdict[key] = _markdownify_effect_text(obj, newdict[key])
|
newdict[key] = _markdownify_effect_text(obj, newdict[key])
|
||||||
return newdict
|
return newdict
|
||||||
|
|
||||||
# Otherwise, scalar prop. Boring
|
|
||||||
return _markdownify_effect_text(obj, prop)
|
|
||||||
|
|
||||||
class MarkdownColumn(sqlalchemy.types.TypeDecorator):
|
class MarkdownColumn(sqlalchemy.types.TypeDecorator):
|
||||||
"""Generic SQLAlchemy column type for Markdown text.
|
"""Generic SQLAlchemy column type for Markdown text.
|
||||||
|
|
||||||
|
|
|
@ -1781,18 +1781,18 @@ Move.target = relation(MoveTarget, backref='moves')
|
||||||
Move.type = relation(Type, backref='moves')
|
Move.type = relation(Type, backref='moves')
|
||||||
|
|
||||||
Move.effect = markdown.MoveEffectProperty('effect')
|
Move.effect = markdown.MoveEffectProperty('effect')
|
||||||
Move.effect_map = markdown.MoveEffectProperty('effect_map')
|
Move.effect_map = markdown.MoveEffectPropertyMap('effect_map')
|
||||||
Move.short_effect = markdown.MoveEffectProperty('short_effect')
|
Move.short_effect = markdown.MoveEffectProperty('short_effect')
|
||||||
Move.short_effect_map = markdown.MoveEffectProperty('short_effect_map')
|
Move.short_effect_map = markdown.MoveEffectPropertyMap('short_effect_map')
|
||||||
|
|
||||||
MoveChangelog.changed_in = relation(VersionGroup, backref='move_changelog')
|
MoveChangelog.changed_in = relation(VersionGroup, backref='move_changelog')
|
||||||
MoveChangelog.move_effect = relation(MoveEffect, backref='move_changelog')
|
MoveChangelog.move_effect = relation(MoveEffect, backref='move_changelog')
|
||||||
MoveChangelog.type = relation(Type, backref='move_changelog')
|
MoveChangelog.type = relation(Type, backref='move_changelog')
|
||||||
|
|
||||||
MoveChangelog.effect = markdown.MoveEffectProperty('effect')
|
MoveChangelog.effect = markdown.MoveEffectProperty('effect')
|
||||||
MoveChangelog.effect_map = markdown.MoveEffectProperty('effect_map')
|
MoveChangelog.effect_map = markdown.MoveEffectPropertyMap('effect_map')
|
||||||
MoveChangelog.short_effect = markdown.MoveEffectProperty('short_effect')
|
MoveChangelog.short_effect = markdown.MoveEffectProperty('short_effect')
|
||||||
MoveChangelog.short_effect_map = markdown.MoveEffectProperty('short_effect_map')
|
MoveChangelog.short_effect_map = markdown.MoveEffectPropertyMap('short_effect_map')
|
||||||
|
|
||||||
MoveEffect.category_map = relation(MoveEffectCategoryMap)
|
MoveEffect.category_map = relation(MoveEffectCategoryMap)
|
||||||
MoveEffect.categories = association_proxy('category_map', 'category')
|
MoveEffect.categories = association_proxy('category_map', 'category')
|
||||||
|
|
Loading…
Reference in a new issue