Move POST_friend notifications to a system messages lib.

This commit is contained in:
Max Goodman
2012-09-24 18:47:22 -07:00
parent ca3ce29cf4
commit f23bef2445
3 changed files with 87 additions and 43 deletions

View File

@@ -64,6 +64,7 @@ from r2.lib.scraper import str_to_image
from r2.controllers.api_docs import api_doc, api_section
from r2.lib.search import SearchQuery
from r2.controllers.oauth2 import OAuth2ResourceController, require_oauth2_scope
from r2.lib.system_messages import notify_user_added
from r2.models import wiki
from r2.lib.merge import ConflictException
@@ -643,33 +644,8 @@ class ApiController(RedditController, OAuth2ResourceController):
jquery("#" + type + "-table").show(
).find("table").insert_table_rows(user_row)
if type != 'friend' and (type != 'banned' or
friend.has_interacted_with(container)):
msg = strings.msg_add_friend.get(type)
subj = strings.subj_add_friend.get(type)
if msg and subj and friend.name != c.user.name:
# fullpath with domain needed or the markdown link
# will break
if isinstance(container, Subreddit):
title = "%s: %s" % (container.path.rstrip("/"),
container.title)
else:
title = container.title
d = dict(url = container.path,
title = title)
msg = msg % d
subj = subj % d
if type == 'banned':
from_sr = True
sr = container
else:
from_sr = False
sr = None
item, inbox_rel = Message._new(c.user, friend, subj, msg,
ip, from_sr=from_sr, sr=sr)
queries.new_message(item, inbox_rel)
if new:
notify_user_added(type, c.user, friend, container)
@validatedForm(VGold(),
friend = VExistingUname('name'),

View File

@@ -91,22 +91,6 @@ string_dict = dict(
finished_trials = _("it's too late to change your vote on these things (the verdict has been issued):"),
more_info_link = _("visit [%(link)s](%(link)s) for more information"),
msg_add_friend = dict(
friend = None,
moderator = _("you have been added as a moderator to [%(title)s](%(url)s)."),
contributor = _("you have been added as an approved submitter to [%(title)s](%(url)s)."),
banned = _("you have been banned from posting to [%(title)s](%(url)s)."),
traffic = _('you have been added to the list of users able to see [traffic for the sponsored link "%(title)s"](%(traffic_url)s).')
),
subj_add_friend = dict(
friend = None,
moderator = _("you are a moderator"),
contributor = _("you are an approved submitter"),
banned = _("you've been banned"),
traffic = _("you can view traffic on a promoted link")
),
sr_messages = dict(
empty = _('you have not subscribed to any reddits.'),
subscriber = _('below are the reddits you have subscribed to'),

View File

@@ -0,0 +1,84 @@
# The contents of this file are subject to the Common Public Attribution
# License Version 1.0. (the "License"); you may not use this file except in
# compliance with the License. You may obtain a copy of the License at
# http://code.reddit.com/LICENSE. The License is based on the Mozilla Public
# License Version 1.1, but Sections 14 and 15 have been added to cover use of
# software over a computer network and provide for limited attribution for the
# Original Developer. In addition, Exhibit A has been modified to be consistent
# with Exhibit B.
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
# the specific language governing rights and limitations under the License.
#
# The Original Code is reddit.
#
# The Original Developer is the Initial Developer. The Initial Developer of
# the Original Code is reddit Inc.
#
# All portions of the code written by reddit are Copyright (c) 2006-2012 reddit
# Inc. All Rights Reserved.
###############################################################################
from pylons import request
from pylons.i18n import _
from r2.models import Message
from r2.lib.db import queries
user_added_messages = {
"moderator": {
"pm": {
"subject": _("you are a moderator"),
"msg": _("you have been added as a moderator to [%(title)s](%(url)s)."),
},
},
"contributor": {
"pm": {
"subject": _("you are an approved submitter"),
"msg": _("you have been added as an approved submitter to [%(title)s](%(url)s)."),
},
},
"banned": {
"pm": {
"subject": _("you've been banned"),
"msg": _("you have been banned from posting to [%(title)s](%(url)s)."),
},
},
"traffic": {
"pm": {
"subject": _("you can view traffic on a promoted link"),
"msg": _('you have been added to the list of users able to see [traffic for the sponsored link "%(title)s"](%(traffic_url)s).'),
},
},
}
def notify_user_added(rel_type, author, user, target):
msgs = user_added_messages.get(rel_type)
if not msgs:
return
srname = target.path.rstrip("/")
d = {
"url": srname,
"title": "%s: %s" % (srname, target.title),
"author": "/u/" + author.name,
"user": "/u/" + user.name,
}
if "pm" in msgs and author != user:
subject = msgs["pm"]["subject"] % d
msg = msgs["pm"]["msg"] % d
if rel_type == "banned":
if not user.has_interacted_with(target):
return
item, inbox_rel = Message._new(author, user, subject, msg, request.ip,
sr=target, from_sr=True)
else:
item, inbox_rel = Message._new(author, user, subject, msg, request.ip)
queries.new_message(item, inbox_rel)