New notifications
- Added request.notifications
- Email configuration fixes
- Set config_spec default SMTP port to `0` and switch to SSL/non-SSL
default if `port == 0`
- Added email_smtp_use_ssl configuration setting
- Added migrations for notification tables
- Added __repr__ to MediaComment(Mixin)
- Added MediaComment.get_entry => MediaEntry
- Added CommentSubscription, CommentNotification, Notification,
ProcessingNotification tables
- Added notifications.task to celery init
- Fixed a bug in the video transcoder where pygst would hijack the
--help argument.
- Added notifications
- views
- silence
- subscribe
- routes
- utility methods
- celery task
- Added half-hearted .active comment CSS style
- Added quick JS to show header_dropdown
- Added fragment template to show notifications in header_dropdown
- Added fragment template to show subscribe/unsubscribe buttons on
media/comment pages
- Updated celery setup tests with notifications.task
- Tried to fix test_misc tests that I broke
- Added notification tests
- Added and extended tests.tools fixtures
- Integrated new notifications into media_home, media_post_comment views
- Bumped SQLAlchemy dependency to >= 0.8.0 since we need polymorphic for
the notifications to work
This commit is contained in:
@@ -25,8 +25,9 @@ from mediagoblin.tools.response import render_to_response, render_404, \
|
||||
from mediagoblin.tools.translate import pass_to_ugettext as _
|
||||
from mediagoblin.tools.pagination import Pagination
|
||||
from mediagoblin.user_pages import forms as user_forms
|
||||
from mediagoblin.user_pages.lib import (send_comment_email,
|
||||
add_media_to_collection)
|
||||
from mediagoblin.user_pages.lib import add_media_to_collection
|
||||
from mediagoblin.notifications import trigger_notification, \
|
||||
add_comment_subscription, mark_comment_notification_seen
|
||||
|
||||
from mediagoblin.decorators import (uses_pagination, get_user_media_entry,
|
||||
get_media_entry_by_id,
|
||||
@@ -34,6 +35,7 @@ from mediagoblin.decorators import (uses_pagination, get_user_media_entry,
|
||||
get_user_collection, get_user_collection_item, active_user_from_url)
|
||||
|
||||
from werkzeug.contrib.atom import AtomFeed
|
||||
from werkzeug.exceptions import MethodNotAllowed
|
||||
|
||||
|
||||
_log = logging.getLogger(__name__)
|
||||
@@ -110,6 +112,7 @@ def user_gallery(request, page, url_user=None):
|
||||
'media_entries': media_entries,
|
||||
'pagination': pagination})
|
||||
|
||||
|
||||
MEDIA_COMMENTS_PER_PAGE = 50
|
||||
|
||||
|
||||
@@ -121,6 +124,9 @@ def media_home(request, media, page, **kwargs):
|
||||
"""
|
||||
comment_id = request.matchdict.get('comment', None)
|
||||
if comment_id:
|
||||
if request.user:
|
||||
mark_comment_notification_seen(comment_id, request.user)
|
||||
|
||||
pagination = Pagination(
|
||||
page, media.get_comments(
|
||||
mg_globals.app_config['comments_ascending']),
|
||||
@@ -154,7 +160,8 @@ def media_post_comment(request, media):
|
||||
"""
|
||||
recieves POST from a MediaEntry() comment form, saves the comment.
|
||||
"""
|
||||
assert request.method == 'POST'
|
||||
if not request.method == 'POST':
|
||||
raise MethodNotAllowed()
|
||||
|
||||
comment = request.db.MediaComment()
|
||||
comment.media_entry = media.id
|
||||
@@ -179,11 +186,9 @@ def media_post_comment(request, media):
|
||||
request, messages.SUCCESS,
|
||||
_('Your comment has been posted!'))
|
||||
|
||||
media_uploader = media.get_uploader
|
||||
#don't send email if you comment on your own post
|
||||
if (comment.author != media_uploader and
|
||||
media_uploader.wants_comment_notification):
|
||||
send_comment_email(media_uploader, comment, media, request)
|
||||
trigger_notification(comment, media, request)
|
||||
|
||||
add_comment_subscription(request.user, media)
|
||||
|
||||
return redirect_obj(request, media)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user