Drop pre-rendered html: MediaComment.content_html
After a bit of discussion, we decided to drop the pre-rendered html from the database and render it on the fly. In another step, we will use some proper caching method to cache this stuff. This commit affects the MediaComment.content_html part.
This commit is contained in:
parent
1e72e075f8
commit
feba5c5287
@ -104,3 +104,13 @@ class MediaEntryMixin(object):
|
|||||||
def get_license_data(self):
|
def get_license_data(self):
|
||||||
"""Return license dict for requested license"""
|
"""Return license dict for requested license"""
|
||||||
return licenses.SUPPORTED_LICENSES[self.license or ""]
|
return licenses.SUPPORTED_LICENSES[self.license or ""]
|
||||||
|
|
||||||
|
|
||||||
|
class MediaCommentMixin(object):
|
||||||
|
@property
|
||||||
|
def content_html(self):
|
||||||
|
"""
|
||||||
|
the actual html-rendered version of the comment displayed.
|
||||||
|
Run through Markdown and the HTML cleaner.
|
||||||
|
"""
|
||||||
|
return cleaned_markdown_conversion(self.content)
|
||||||
|
@ -130,7 +130,12 @@ def mediaentry_add_license(database):
|
|||||||
@RegisterMigration(9)
|
@RegisterMigration(9)
|
||||||
def remove_calculated_html(database):
|
def remove_calculated_html(database):
|
||||||
"""
|
"""
|
||||||
Drop bio_html, description_html again and calculate things on the fly (and cache)
|
Drop pre-rendered html again and calculate things
|
||||||
|
on the fly (and cache):
|
||||||
|
- User.bio_html
|
||||||
|
- MediaEntry.description_html
|
||||||
|
- MediaComment.content_html
|
||||||
"""
|
"""
|
||||||
drop_table_field(database, 'users', 'bio_html')
|
drop_table_field(database, 'users', 'bio_html')
|
||||||
drop_table_field(database, 'media_entries', 'description_html')
|
drop_table_field(database, 'media_entries', 'description_html')
|
||||||
|
drop_table_field(database, 'media_comments', 'content_html')
|
||||||
|
@ -23,7 +23,7 @@ from mediagoblin.db.mongo import migrations
|
|||||||
from mediagoblin.db.mongo.util import ASCENDING, DESCENDING, ObjectId
|
from mediagoblin.db.mongo.util import ASCENDING, DESCENDING, ObjectId
|
||||||
from mediagoblin.tools.pagination import Pagination
|
from mediagoblin.tools.pagination import Pagination
|
||||||
from mediagoblin.tools import url
|
from mediagoblin.tools import url
|
||||||
from mediagoblin.db.mixin import UserMixin, MediaEntryMixin
|
from mediagoblin.db.mixin import UserMixin, MediaEntryMixin, MediaCommentMixin
|
||||||
|
|
||||||
###################
|
###################
|
||||||
# Custom validators
|
# Custom validators
|
||||||
@ -251,7 +251,7 @@ class MediaEntry(Document, MediaEntryMixin):
|
|||||||
return self.db.User.find_one({'_id': self.uploader})
|
return self.db.User.find_one({'_id': self.uploader})
|
||||||
|
|
||||||
|
|
||||||
class MediaComment(Document):
|
class MediaComment(Document, MediaCommentMixin):
|
||||||
"""
|
"""
|
||||||
A comment on a MediaEntry.
|
A comment on a MediaEntry.
|
||||||
|
|
||||||
@ -260,8 +260,6 @@ class MediaComment(Document):
|
|||||||
- author: user who posted this comment
|
- author: user who posted this comment
|
||||||
- created: when the comment was created
|
- created: when the comment was created
|
||||||
- content: plaintext (but markdown'able) version of the comment's content.
|
- content: plaintext (but markdown'able) version of the comment's content.
|
||||||
- content_html: the actual html-rendered version of the comment displayed.
|
|
||||||
Run through Markdown and the HTML cleaner.
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__collection__ = 'media_comments'
|
__collection__ = 'media_comments'
|
||||||
@ -272,7 +270,7 @@ class MediaComment(Document):
|
|||||||
'author': ObjectId,
|
'author': ObjectId,
|
||||||
'created': datetime.datetime,
|
'created': datetime.datetime,
|
||||||
'content': unicode,
|
'content': unicode,
|
||||||
'content_html': unicode}
|
}
|
||||||
|
|
||||||
required_fields = [
|
required_fields = [
|
||||||
'media_entry', 'author', 'created', 'content']
|
'media_entry', 'author', 'created', 'content']
|
||||||
|
@ -133,7 +133,7 @@ def convert_media_comments(mk_db):
|
|||||||
new_entry = MediaComment()
|
new_entry = MediaComment()
|
||||||
copy_attrs(entry, new_entry,
|
copy_attrs(entry, new_entry,
|
||||||
('created',
|
('created',
|
||||||
'content', 'content_html',))
|
'content',))
|
||||||
copy_reference_attr(entry, new_entry, "media_entry")
|
copy_reference_attr(entry, new_entry, "media_entry")
|
||||||
copy_reference_attr(entry, new_entry, "author")
|
copy_reference_attr(entry, new_entry, "author")
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ from sqlalchemy.ext.associationproxy import association_proxy
|
|||||||
|
|
||||||
from mediagoblin.db.sql.extratypes import PathTupleWithSlashes
|
from mediagoblin.db.sql.extratypes import PathTupleWithSlashes
|
||||||
from mediagoblin.db.sql.base import Base, DictReadAttrProxy
|
from mediagoblin.db.sql.base import Base, DictReadAttrProxy
|
||||||
from mediagoblin.db.mixin import UserMixin, MediaEntryMixin
|
from mediagoblin.db.mixin import UserMixin, MediaEntryMixin, MediaCommentMixin
|
||||||
|
|
||||||
|
|
||||||
class SimpleFieldAlias(object):
|
class SimpleFieldAlias(object):
|
||||||
@ -218,7 +218,7 @@ class MediaTag(Base):
|
|||||||
return DictReadAttrProxy(self)
|
return DictReadAttrProxy(self)
|
||||||
|
|
||||||
|
|
||||||
class MediaComment(Base):
|
class MediaComment(Base, MediaCommentMixin):
|
||||||
__tablename__ = "media_comments"
|
__tablename__ = "media_comments"
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True)
|
id = Column(Integer, primary_key=True)
|
||||||
@ -227,7 +227,6 @@ class MediaComment(Base):
|
|||||||
author = Column(Integer, ForeignKey('users.id'), nullable=False)
|
author = Column(Integer, ForeignKey('users.id'), nullable=False)
|
||||||
created = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
created = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
||||||
content = Column(UnicodeText, nullable=False)
|
content = Column(UnicodeText, nullable=False)
|
||||||
content_html = Column(UnicodeText)
|
|
||||||
|
|
||||||
get_author = relationship(User)
|
get_author = relationship(User)
|
||||||
|
|
||||||
|
@ -18,7 +18,6 @@ from webob import exc
|
|||||||
|
|
||||||
from mediagoblin import messages, mg_globals
|
from mediagoblin import messages, mg_globals
|
||||||
from mediagoblin.db.util import DESCENDING, ObjectId
|
from mediagoblin.db.util import DESCENDING, ObjectId
|
||||||
from mediagoblin.tools.text import cleaned_markdown_conversion
|
|
||||||
from mediagoblin.tools.response import render_to_response, render_404, redirect
|
from mediagoblin.tools.response import render_to_response, render_404, redirect
|
||||||
from mediagoblin.tools.translate import pass_to_ugettext as _
|
from mediagoblin.tools.translate import pass_to_ugettext as _
|
||||||
from mediagoblin.tools.pagination import Pagination
|
from mediagoblin.tools.pagination import Pagination
|
||||||
@ -146,7 +145,6 @@ def media_post_comment(request, media):
|
|||||||
comment['media_entry'] = media._id
|
comment['media_entry'] = media._id
|
||||||
comment['author'] = request.user._id
|
comment['author'] = request.user._id
|
||||||
comment['content'] = unicode(request.POST['comment_content'])
|
comment['content'] = unicode(request.POST['comment_content'])
|
||||||
comment['content_html'] = cleaned_markdown_conversion(comment['content'])
|
|
||||||
|
|
||||||
if not comment['content'].strip():
|
if not comment['content'].strip():
|
||||||
messages.add_message(
|
messages.add_message(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user