from functools import partial
from sqlalchemy import Column, ForeignKey, MetaData, PrimaryKeyConstraint, Table, UniqueConstraint
-from sqlalchemy.ext.declarative import declarative_base
+from sqlalchemy.ext.declarative import declarative_base, DeclarativeMeta
from sqlalchemy.ext.associationproxy import association_proxy
from sqlalchemy.orm import backref, relation
from sqlalchemy.orm.session import Session
def __str__(self):
return unicode(self).encode('utf8')
+mapped_classes = []
+class TableMetaclass(DeclarativeMeta):
+ def __init__(cls, name, bases, attrs):
+ super(TableMetaclass, cls).__init__(name, bases, attrs)
+ if hasattr(cls, '__tablename__'):
+ mapped_classes.append(cls)
+ cls.translation_classes = []
+
metadata = MetaData()
-TableBase = declarative_base(metadata=metadata, cls=TableSuperclass)
+TableBase = declarative_base(metadata=metadata, cls=TableSuperclass, metaclass=TableMetaclass)
### Need Language first, to create the partial() below
create_translation_table('move_meta_category_prose', MoveMetaCategory, 'prose',
relation_lazy='joined',
description = Column(Unicode(64), nullable=False,
- info=dict(description="A description of the category")),
+ info=dict(description="A description of the category", format="plaintext", official=False)),
)
class MoveMetaStatChange(TableBase):
info=dict(description=u"The weight of the Pokémon, in tenths of a kilogram (decigrams)"))
color_id = Column(Integer, ForeignKey('pokemon_colors.id'), nullable=False,
info=dict(description=u"ID of this Pokémon's Pokédex color, as used for a gimmick search function in the games."))
- pokemon_shape_id = Column(Integer, ForeignKey('pokemon_shapes.id'), nullable=True,
+ pokemon_shape_id = Column(Integer, ForeignKey('pokemon_shapes.id'), nullable=False,
info=dict(description=u"ID of this Pokémon's body shape, as used for a gimmick search function in the games."))
habitat_id = Column(Integer, ForeignKey('pokemon_habitats.id'), nullable=True,
info=dict(description=u"ID of this Pokémon's habitat, as used for a gimmick search function in the games."))