Remove the DictReadProxy thing.
And some other stuff, that the converter does not need.
This commit is contained in:
parent
19535af4e5
commit
dda67f7152
@ -33,27 +33,14 @@ from sqlalchemy.ext.associationproxy import association_proxy
|
|||||||
from sqlalchemy.util import memoized_property
|
from sqlalchemy.util import memoized_property
|
||||||
|
|
||||||
from mediagoblin.db.sql.extratypes import PathTupleWithSlashes, JSONEncoded
|
from mediagoblin.db.sql.extratypes import PathTupleWithSlashes, JSONEncoded
|
||||||
from mediagoblin.db.sql.base import GMGTableBase, DictReadAttrProxy
|
from mediagoblin.db.sql.base import GMGTableBase
|
||||||
from mediagoblin.db.mixin import UserMixin, MediaEntryMixin, MediaCommentMixin
|
|
||||||
from mediagoblin.db.sql.base import Session
|
from mediagoblin.db.sql.base import Session
|
||||||
|
|
||||||
|
|
||||||
Base_v0 = declarative_base(cls=GMGTableBase)
|
Base_v0 = declarative_base(cls=GMGTableBase)
|
||||||
|
|
||||||
|
|
||||||
class SimpleFieldAlias(object):
|
class User(Base_v0):
|
||||||
"""An alias for any field"""
|
|
||||||
def __init__(self, fieldname):
|
|
||||||
self.fieldname = fieldname
|
|
||||||
|
|
||||||
def __get__(self, instance, cls):
|
|
||||||
return getattr(instance, self.fieldname)
|
|
||||||
|
|
||||||
def __set__(self, instance, val):
|
|
||||||
setattr(instance, self.fieldname, val)
|
|
||||||
|
|
||||||
|
|
||||||
class User(Base_v0, UserMixin):
|
|
||||||
"""
|
"""
|
||||||
TODO: We should consider moving some rarely used fields
|
TODO: We should consider moving some rarely used fields
|
||||||
into some sort of "shadow" table.
|
into some sort of "shadow" table.
|
||||||
@ -77,10 +64,8 @@ class User(Base_v0, UserMixin):
|
|||||||
## TODO
|
## TODO
|
||||||
# plugin data would be in a separate model
|
# plugin data would be in a separate model
|
||||||
|
|
||||||
_id = SimpleFieldAlias("id")
|
|
||||||
|
|
||||||
|
class MediaEntry(Base_v0):
|
||||||
class MediaEntry(Base_v0, MediaEntryMixin):
|
|
||||||
"""
|
"""
|
||||||
TODO: Consider fetching the media_files using join
|
TODO: Consider fetching the media_files using join
|
||||||
"""
|
"""
|
||||||
@ -115,31 +100,15 @@ class MediaEntry(Base_v0, MediaEntryMixin):
|
|||||||
collection_class=attribute_mapped_collection("name"),
|
collection_class=attribute_mapped_collection("name"),
|
||||||
cascade="all, delete-orphan"
|
cascade="all, delete-orphan"
|
||||||
)
|
)
|
||||||
media_files = association_proxy('media_files_helper', 'file_path',
|
|
||||||
creator=lambda k, v: MediaFile(name=k, file_path=v)
|
|
||||||
)
|
|
||||||
|
|
||||||
attachment_files_helper = relationship("MediaAttachmentFile",
|
attachment_files_helper = relationship("MediaAttachmentFile",
|
||||||
cascade="all, delete-orphan",
|
cascade="all, delete-orphan",
|
||||||
order_by="MediaAttachmentFile.created"
|
order_by="MediaAttachmentFile.created"
|
||||||
)
|
)
|
||||||
attachment_files = association_proxy("attachment_files_helper", "dict_view",
|
|
||||||
creator=lambda v: MediaAttachmentFile(
|
|
||||||
name=v["name"], filepath=v["filepath"])
|
|
||||||
)
|
|
||||||
|
|
||||||
tags_helper = relationship("MediaTag",
|
tags_helper = relationship("MediaTag",
|
||||||
cascade="all, delete-orphan"
|
cascade="all, delete-orphan"
|
||||||
)
|
)
|
||||||
tags = association_proxy("tags_helper", "dict_view",
|
|
||||||
creator=lambda v: MediaTag(name=v["name"], slug=v["slug"])
|
|
||||||
)
|
|
||||||
|
|
||||||
## TODO
|
|
||||||
# media_data
|
|
||||||
# fail_error
|
|
||||||
|
|
||||||
_id = SimpleFieldAlias("id")
|
|
||||||
|
|
||||||
def get_comments(self, ascending=False):
|
def get_comments(self, ascending=False):
|
||||||
order_col = MediaComment.created
|
order_col = MediaComment.created
|
||||||
@ -261,11 +230,6 @@ class MediaAttachmentFile(Base_v0):
|
|||||||
filepath = Column(PathTupleWithSlashes)
|
filepath = Column(PathTupleWithSlashes)
|
||||||
created = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
created = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
||||||
|
|
||||||
@property
|
|
||||||
def dict_view(self):
|
|
||||||
"""A dict like view on this object"""
|
|
||||||
return DictReadAttrProxy(self)
|
|
||||||
|
|
||||||
|
|
||||||
class Tag(Base_v0):
|
class Tag(Base_v0):
|
||||||
__tablename__ = "core__tags"
|
__tablename__ = "core__tags"
|
||||||
@ -311,13 +275,8 @@ class MediaTag(Base_v0):
|
|||||||
if slug is not None:
|
if slug is not None:
|
||||||
self.tag_helper = Tag.find_or_new(slug)
|
self.tag_helper = Tag.find_or_new(slug)
|
||||||
|
|
||||||
@property
|
|
||||||
def dict_view(self):
|
|
||||||
"""A dict like view on this object"""
|
|
||||||
return DictReadAttrProxy(self)
|
|
||||||
|
|
||||||
|
class MediaComment(Base_v0):
|
||||||
class MediaComment(Base_v0, MediaCommentMixin):
|
|
||||||
__tablename__ = "core__media_comments"
|
__tablename__ = "core__media_comments"
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True)
|
id = Column(Integer, primary_key=True)
|
||||||
@ -329,8 +288,6 @@ class MediaComment(Base_v0, MediaCommentMixin):
|
|||||||
|
|
||||||
get_author = relationship(User)
|
get_author = relationship(User)
|
||||||
|
|
||||||
_id = SimpleFieldAlias("id")
|
|
||||||
|
|
||||||
|
|
||||||
class ImageData(Base_v0):
|
class ImageData(Base_v0):
|
||||||
__tablename__ = "image__mediadata"
|
__tablename__ = "image__mediadata"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user