Ticket #725: notification.patch
| File notification.patch, 11.1 kB (added by imme, 2 years ago) |
|---|
-
0.10/tracdiscussion/api.py
old new 1 1 # -*- coding: utf8 -*- 2 2 from tracdiscussion.notification import DiscussionNotifyEmail 3 3 from trac.core import * 4 4 from trac.web.chrome import add_stylesheet 5 5 from trac.wiki import wiki_to_html, wiki_to_oneliner … … 735 735 sql = "UPDATE forum_group SET name = %s, description = %s WHERE id = %s" 736 736 self.log.debug(sql % (name, description, group)) 737 737 cursor.execute(sql, (name, description, group)) 738 self._get_notifier().notify('group_edited', group, name, 739 description=description) 738 740 739 741 def edit_forum(self, cursor, forum, name, subject, description, moderators, 740 742 group): … … 747 749 group, forum)) 748 750 cursor.execute(sql, (name, subject, description, moderators, group, 749 751 forum)) 752 self._get_notifier().notify('forum_edited', forum, name, subject=subject, 753 description=description, moderators=moderators, group=group, 754 cursor=cursor) 750 755 756 751 757 def edit_topic(self, cursor, topic, forum, subject, body): 752 758 sql = "UPDATE topic SET forum = %s, subject = %s, body = %s WHERE id" \ 753 759 " = %s" 754 760 self.log.debug(sql % (forum, subject, body, topic)) 755 761 cursor.execute(sql, (forum, subject, body, topic)) 762 self._get_notifier().notify('topic_edited', topic, subject=subject, 763 body=body, forum=forum, cursor=cursor) 756 764 757 765 def edit_message(self, cursor, message, forum, topic, replyto, body): 758 766 sql = "UPDATE message SET forum = %s, topic = %s, replyto = %s, body" \ 759 767 " = %s WHERE id = %s" 760 768 self.log.debug(sql % (forum, topic, replyto, body, message)) 761 769 cursor.execute(sql, (forum, topic, replyto, body, message)) 770 self._get_notifier().notify('message_edited', message, topic=topic, 771 body=body, forum=forum, replyto=replyto, cursor=cursor) 762 772 763 773 # Get list functions 764 774 … … 919 929 sql = "INSERT INTO forum_group (name, description) VALUES (%s, %s)" 920 930 self.log.debug(sql % (name, description)) 921 931 cursor.execute(sql, (name, description)) 932 id = self._get_db().get_last_id(cursor, 'forum_group') 933 self._get_notifier().notify('group_added', id, name, 934 description=description) 922 935 923 936 def add_forum(self, cursor, name, author, subject, description, moderators, 924 937 group): … … 931 944 subject, description, group)) 932 945 cursor.execute(sql, (name, author, str(int(time.time())), moderators, 933 946 subject, description, group)) 947 id = self._get_db().get_last_id(cursor, 'forum') 948 self._get_notifier().notify('forum_added', id, name, author, 949 subject, description, moderators, group, cursor) 934 950 935 951 def add_topic(self, cursor, forum, subject, author, body): 936 952 sql = "INSERT INTO topic (forum, time, author, subject, body) VALUES" \ 937 953 " (%s, %s, %s, %s, %s)" 938 954 self.log.debug(sql % (forum, int(time.time()), author, subject, body)) 939 955 cursor.execute(sql, (forum, int(time.time()), author, subject, body)) 956 id = self._get_db().get_last_id(cursor, 'topic') 957 self._get_notifier().notify('topic_added', id, subject=subject, 958 author=author, body=body, forum=forum, cursor=cursor) 940 959 941 960 def add_message(self, cursor, forum, topic, replyto, author, body): 942 961 sql = "INSERT INTO message (forum, topic, replyto, time, author," \ … … 945 964 author, body)) 946 965 cursor.execute(sql, (forum, topic, replyto, int(time.time()), 947 966 author, body)) 967 id = self._get_db().get_last_id(cursor, 'message') 968 self._get_notifier().notify('message_added', id, topic=topic, 969 author=author, body=body, forum=forum, 970 replyto=replyto, cursor=cursor) 948 971 949 972 # Delete items functions 950 973 951 974 def delete_group(self, cursor, group): 975 self._get_notifier().notify('group_deleted', group, cursor=cursor) 952 976 sql = "DELETE FROM forum_group WHERE id = %s" 953 977 self.log.debug(sql % (group,)) 954 978 cursor.execute(sql, (group,)) … … 957 981 cursor.execute(sql, (group,)) 958 982 959 983 def delete_forum(self, cursor, forum): 984 self._get_notifier().notify('forum_deleted', forum, cursor=cursor) 960 985 sql = "DELETE FROM message WHERE forum = %s" 961 986 self.log.debug(sql % (forum,)) 962 987 cursor.execute(sql, (forum,)) … … 971 996 sql = "DELETE FROM message WHERE topic = %s" 972 997 self.log.debug(sql % (topic,)) 973 998 cursor.execute(sql, (topic,)) 999 self._get_notifier().notify('topic_deleted', topic, cursor=cursor) 974 1000 sql = "DELETE FROM topic WHERE id = %s" 975 1001 self.log.debug(sql % (topic,)) 976 1002 cursor.execute(sql, (topic,)) … … 981 1007 self.log.debug(sql % (message,)) 982 1008 cursor.execute(sql, (message,)) 983 1009 replies = [] 1010 984 1011 for row in cursor: 985 1012 replies.append(row[0]) 986 1013 … … 989 1016 self.delete_message(cursor, reply) 990 1017 991 1018 # Delete message itself 1019 self._get_notifier().notify('message_deleted', message, cursor=cursor) 992 1020 sql = "DELETE FROM message WHERE id = %s" 993 1021 self.log.debug(sql % (message,)) 994 1022 cursor.execute(sql, (message,)) 1023 1024 def _get_db(self): 1025 return self.env.get_db_cnx() 1026 1027 def _get_notifier(self): 1028 return DiscussionNotifyEmail(self) 1029 -
0.10/tracdiscussion/notification.py
old new 1 from trac.notification import NotifyEmail 2 3 class DiscussionNotifyEmail(NotifyEmail): 4 template_name = "notification-body.cs" 5 href = None 6 discussion_api = None 7 8 def __init__(self, discussion_api): 9 NotifyEmail.__init__(self, discussion_api.env) 10 self.href = discussion_api.env.abs_href 11 self.discussion_api = discussion_api 12 def get_db_cnx(self): 13 if self.db_cnx == None: 14 self.db_cnx = self.env.get_db_cnx() 15 return self.db_cnx 16 17 def notify(self, action, id=None, name=None, author=None, subject=None, 18 description=None, moderators=None, group=None, cursor=None, 19 body=None, forum=None,replyto=None, topic=None): 20 item_type, action_type = action.split('_') 21 if item_type == 'forum': 22 if action_type == 'deleted': 23 name = self.discussion_api.get_forum(cursor, id)['name'] 24 else: 25 self.hdf.set_unescaped('forum_url', self.href.discussion(id)) 26 if not group == '0': 27 self.hdf.set_unescaped('group_name', 28 self.discussion_api.get_group(cursor, group)['name']) 29 elif action == 'group_deleted': 30 name = self.discussion_api.get_group(cursor, id)['name'] 31 elif item_type == 'topic': 32 if action_type == 'deleted': 33 topic_obj = self.discussion_api.get_topic(cursor, id) 34 subject = topic_obj['subject'] 35 forum = topic_obj['forum'] 36 body = topic_obj['body'] 37 else: 38 self.hdf.set_unescaped('topic_url', 39 self.href.discussion(`forum` + '/' + `id`)) 40 name = subject 41 elif item_type == 'message': 42 if action_type == 'deleted': 43 message_obj = self.discussion_api.get_message(cursor, id) 44 forum = message_obj['forum'] 45 topic = message_obj['topic'] 46 body = message_obj['body'] 47 else: 48 self.hdf.setValue('message_url', 49 self.href.discussion(`forum` + '/' + `topic` + '/' 50 + `id`) + '#' + `id`) 51 self.hdf.set_unescaped('topic_subject', 52 self.discussion_api.get_topic(cursor, topic)['subject']) 53 if item_type == 'topic' or item_type == 'message': 54 self.hdf.set_unescaped('forum_name', 55 self.discussion_api.get_forum(cursor, forum)['name']) 56 57 # Set remaining template data 58 self.hdf.set_unescaped('author', author) 59 self.hdf.set_unescaped('subject', subject) 60 self.hdf.set_unescaped('description', description) 61 self.hdf.set_unescaped('discussion_url', self.href.discussion()) 62 self.hdf.set_unescaped('body', body) 63 self.hdf.set_unescaped('forum', forum) 64 self.hdf.set_unescaped('group', group) 65 self.hdf.set_unescaped('topic', topic) 66 if moderators and len(moderators) > 0: 67 self.hdf.set_unescaped('moderators', moderators) 68 self.hdf.set_unescaped('action', action_type) 69 self.hdf.set_unescaped('name', name) 70 self.hdf.set_unescaped('id', id) 71 self.hdf.set_unescaped('item_type', item_type.capitalize()) 72 73 # Render subject and start notification 74 subject = self.hdf.render('notification-subject.cs') 75 NotifyEmail.notify(self, id, subject) 76 77 def get_recipients(self, resid): 78 return ([], []) -
0.10/tracdiscussion/templates/notification-body.cs
old new 1 <?cs var:item_type ?> #<?cs var:id ?> <?cs var:action ?><?cs if:author ?> by <?cs var:author ?><?cs /if ?> 2 3 <?cs if:(name && item_type != 'Topic') ?>Name: <?cs var:name ?> 4 <?cs /if ?><?cs if:subject ?>Subject: <?cs var:subject ?> 5 <?cs /if ?><?cs if:forum_name ?>Forum: <?cs var:forum_name ?> 6 <?cs /if ?><?cs if:topic_subject ?>Topic: <?cs var:topic_subject ?> 7 <?cs /if ?><?cs if:description ?>Description: <?cs var:description ?> 8 <?cs /if ?><?cs if:moderators ?>Moderators: <?cs var:moderators ?> 9 <?cs /if ?><?cs if:group_name ?>Group: <?cs var:group_name ?> 10 <?cs /if ?><?cs if:forum_url ?>Forum URL: <<?cs var:forum_url ?>> 11 <?cs /if ?><?cs if:topic_url ?>Topic URL: <<?cs var:topic_url ?>> 12 <?cs /if ?><?cs if:message_url ?>Message URL: <<?cs var:message_url ?>> 13 <?cs /if ?><?cs if:body ?>Body: 14 15 <?cs var:body ?> 16 <?cs /if ?> 17 -- 18 Discussion URL: <<?cs var:discussion_url ?>> 19 <?cs var:project.name ?> <<?cs var:project.url ?>> 20 <?cs var:project.descr ?> -
0.10/tracdiscussion/templates/notification-subject.cs
old new
