mirror of
https://github.com/veekun/pokedex.git
synced 2024-08-20 18:16:34 +00:00
Add a mapped_classes list, and a translation_classes list to each mapped class
This commit is contained in:
parent
bd9fa0d6a6
commit
d961cfe1c7
2 changed files with 13 additions and 2 deletions
|
@ -145,6 +145,9 @@ def create_translation_table(_table_name, foreign_class, relation_name,
|
|||
setattr(foreign_class, name + '_map',
|
||||
association_proxy(relation_name, name, creator=creator))
|
||||
|
||||
# Add to the list of translation classes
|
||||
foreign_class.translation_classes.append(Translations)
|
||||
|
||||
# Done
|
||||
return Translations
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ import collections
|
|||
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
|
||||
|
@ -60,8 +60,16 @@ class TableSuperclass(object):
|
|||
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
|
||||
|
|
Loading…
Reference in a new issue