add user prefrence for insite notifications
This commit is contained in:
parent
4a2aa93c6a
commit
93d805ad6b
@ -425,7 +425,7 @@ class RequestToken_v0(declarative_base()):
|
|||||||
callback = Column(Unicode, nullable=False, default=u"oob")
|
callback = Column(Unicode, nullable=False, default=u"oob")
|
||||||
created = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
created = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
||||||
updated = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
updated = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
||||||
|
|
||||||
class AccessToken_v0(declarative_base()):
|
class AccessToken_v0(declarative_base()):
|
||||||
"""
|
"""
|
||||||
Model for representing the access tokens
|
Model for representing the access tokens
|
||||||
@ -438,7 +438,7 @@ class AccessToken_v0(declarative_base()):
|
|||||||
request_token = Column(Unicode, ForeignKey(RequestToken_v0.token))
|
request_token = Column(Unicode, ForeignKey(RequestToken_v0.token))
|
||||||
created = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
created = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
||||||
updated = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
updated = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
||||||
|
|
||||||
|
|
||||||
class NonceTimestamp_v0(declarative_base()):
|
class NonceTimestamp_v0(declarative_base()):
|
||||||
"""
|
"""
|
||||||
@ -460,3 +460,15 @@ def create_oauth1_tables(db):
|
|||||||
NonceTimestamp_v0.__table__.create(db.bind)
|
NonceTimestamp_v0.__table__.create(db.bind)
|
||||||
|
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
|
|
||||||
|
@RegisterMigration(15, MIGRATIONS)
|
||||||
|
def wants_notifications(db):
|
||||||
|
"""Add a wants_notifications field to User model"""
|
||||||
|
metadata = MetaData(bind=db.bind)
|
||||||
|
user_table = inspect_table(metadata, "core__users")
|
||||||
|
|
||||||
|
col = Column('wants_notifications', Boolean, default=True)
|
||||||
|
col.create(user_table)
|
||||||
|
|
||||||
|
db.commit()
|
||||||
|
@ -69,6 +69,7 @@ class User(Base, UserMixin):
|
|||||||
# Intented to be nullable=False, but migrations would not work for it
|
# Intented to be nullable=False, but migrations would not work for it
|
||||||
# set to nullable=True implicitly.
|
# set to nullable=True implicitly.
|
||||||
wants_comment_notification = Column(Boolean, default=True)
|
wants_comment_notification = Column(Boolean, default=True)
|
||||||
|
wants_notifications = Column(Boolean, default=True)
|
||||||
license_preference = Column(Unicode)
|
license_preference = Column(Unicode)
|
||||||
is_admin = Column(Boolean, default=False, nullable=False)
|
is_admin = Column(Boolean, default=False, nullable=False)
|
||||||
url = Column(Unicode)
|
url = Column(Unicode)
|
||||||
|
@ -67,6 +67,8 @@ class EditAccountForm(wtforms.Form):
|
|||||||
normalize_user_or_email_field(allow_user=False)])
|
normalize_user_or_email_field(allow_user=False)])
|
||||||
wants_comment_notification = wtforms.BooleanField(
|
wants_comment_notification = wtforms.BooleanField(
|
||||||
description=_("Email me when others comment on my media"))
|
description=_("Email me when others comment on my media"))
|
||||||
|
wants_notifications = wtforms.BooleanField(
|
||||||
|
description=_("Enable/Disable insite notifications"))
|
||||||
license_preference = wtforms.SelectField(
|
license_preference = wtforms.SelectField(
|
||||||
_('License preference'),
|
_('License preference'),
|
||||||
[
|
[
|
||||||
|
@ -228,10 +228,12 @@ def edit_account(request):
|
|||||||
user = request.user
|
user = request.user
|
||||||
form = forms.EditAccountForm(request.form,
|
form = forms.EditAccountForm(request.form,
|
||||||
wants_comment_notification=user.wants_comment_notification,
|
wants_comment_notification=user.wants_comment_notification,
|
||||||
license_preference=user.license_preference)
|
license_preference=user.license_preference,
|
||||||
|
wants_notifications=user.wants_notifications)
|
||||||
|
|
||||||
if request.method == 'POST' and form.validate():
|
if request.method == 'POST' and form.validate():
|
||||||
user.wants_comment_notification = form.wants_comment_notification.data
|
user.wants_comment_notification = form.wants_comment_notification.data
|
||||||
|
user.wants_notifications = form.wants_notifications.data
|
||||||
|
|
||||||
user.license_preference = form.license_preference.data
|
user.license_preference = form.license_preference.data
|
||||||
|
|
||||||
|
@ -17,7 +17,8 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from mediagoblin.db.models import Notification, \
|
from mediagoblin.db.models import Notification, \
|
||||||
CommentNotification, CommentSubscription
|
CommentNotification, CommentSubscription, User
|
||||||
|
from mediagoblin.notifications.task import email_notification_task
|
||||||
from mediagoblin.notifications.tools import generate_comment_message
|
from mediagoblin.notifications.tools import generate_comment_message
|
||||||
|
|
||||||
_log = logging.getLogger(__name__)
|
_log = logging.getLogger(__name__)
|
||||||
@ -121,6 +122,12 @@ NOTIFICATION_FETCH_LIMIT = 100
|
|||||||
|
|
||||||
def get_notifications(user_id, only_unseen=True):
|
def get_notifications(user_id, only_unseen=True):
|
||||||
query = Notification.query.filter_by(user_id=user_id)
|
query = Notification.query.filter_by(user_id=user_id)
|
||||||
|
wants_notifications = User.query.filter_by(id=user_id).first()\
|
||||||
|
.wants_notifications
|
||||||
|
|
||||||
|
# If the user does not want notifications, don't return any
|
||||||
|
if not wants_notifications:
|
||||||
|
return None
|
||||||
|
|
||||||
if only_unseen:
|
if only_unseen:
|
||||||
query = query.filter_by(seen=False)
|
query = query.filter_by(seen=False)
|
||||||
@ -130,12 +137,19 @@ def get_notifications(user_id, only_unseen=True):
|
|||||||
|
|
||||||
return notifications
|
return notifications
|
||||||
|
|
||||||
|
|
||||||
def get_notification_count(user_id, only_unseen=True):
|
def get_notification_count(user_id, only_unseen=True):
|
||||||
query = Notification.query.filter_by(user_id=user_id)
|
query = Notification.query.filter_by(user_id=user_id)
|
||||||
|
wants_notifications = User.query.filter_by(id=user_id).first()\
|
||||||
|
.wants_notifications
|
||||||
|
|
||||||
if only_unseen:
|
if only_unseen:
|
||||||
query = query.filter_by(seen=False)
|
query = query.filter_by(seen=False)
|
||||||
|
|
||||||
count = query.count()
|
# If the user doesn't want notifications, don't show any
|
||||||
|
if not wants_notifications:
|
||||||
|
count = None
|
||||||
|
else:
|
||||||
|
count = query.count()
|
||||||
|
|
||||||
return count
|
return count
|
||||||
|
Loading…
x
Reference in New Issue
Block a user