Changeset 1006
- Timestamp:
- 07/06/06 15:11:08 (3 years ago)
- Files:
-
- discussionplugin/0.9/setup.py (modified) (1 diff)
- discussionplugin/0.9/tracdiscussion/admin.py (modified) (7 diffs)
- discussionplugin/0.9/tracdiscussion/api.py (modified) (13 diffs)
- discussionplugin/0.9/tracdiscussion/core.py (modified) (3 diffs)
- discussionplugin/0.9/tracdiscussion/db/db1.py (modified) (2 diffs)
- discussionplugin/0.9/tracdiscussion/db/db2.py (modified) (2 diffs)
- discussionplugin/0.9/tracdiscussion/init.py (modified) (1 diff)
- discussionplugin/0.9/tracdiscussion/search.py (added)
- discussionplugin/0.9/tracdiscussion/templates/forum-add.cs (modified) (1 diff)
- discussionplugin/0.9/tracdiscussion/templates/forum-admin.cs (modified) (3 diffs)
- discussionplugin/0.9/tracdiscussion/templates/forum-list.cs (modified) (1 diff)
- discussionplugin/0.9/tracdiscussion/templates/group-admin.cs (modified) (2 diffs)
- discussionplugin/0.9/tracdiscussion/timeline.py (modified) (3 diffs)
- discussionplugin/0.9/tracdiscussion/wiki.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
discussionplugin/0.9/setup.py
r909 r1006 13 13 'TracDiscussion.wiki = tracdiscussion.wiki', 14 14 'TracDiscussion.timeline = tracdiscussion.timeline', 15 'TracDiscussion.admin = tracdiscussion.admin']}, 15 'TracDiscussion.admin = tracdiscussion.admin', 16 'TracDiscussion.search = tracdiscussion.search']}, 16 17 keywords = 'trac discussion', 17 18 author = 'Alec Thomas, Radek BartoÅ', discussionplugin/0.9/tracdiscussion/admin.py
r981 r1006 1 from tracdiscussion.api import * 1 2 from trac.core import * 2 3 from trac.perm import IPermissionRequestor … … 55 56 if mode == 'group-admin': 56 57 # Display group list 57 req.hdf['discussion.groups'] = self._get_groups(cursor) 58 req.hdf['discussion.groups'] = get_groups(cursor, self.env, req, 59 self.log) 58 60 elif mode == 'group-post-add': 59 61 # Get form values … … 62 64 63 65 # Add new group 64 self._add_group(cursor, name, description)66 add_group(cursor, self.log, name, description) 65 67 66 68 # Display group list 67 req.hdf['discussion.groups'] = self._get_groups(cursor) 69 req.hdf['discussion.groups'] = get_groups(cursor, self.env, req, 70 self.log) 68 71 mode = 'group-admin' 69 72 elif mode == 'group-delete': … … 74 77 75 78 # Delete selected groups 76 self._delete_groups(cursor, selection) 79 if selection: 80 for group in selection: 81 delete_group(cursor, self.log, group) 77 82 78 83 # Display group list 79 req.hdf['discussion.groups'] = self._get_groups(cursor) 84 req.hdf['discussion.groups'] = get_groups(cursor, self.env, req, 85 self.log) 80 86 mode = 'group-admin' 81 87 elif mode == 'forum-admin': 82 88 # Display forum list 83 req.hdf['discussion.forums'] = self._get_forums(cursor) 84 req.hdf['discussion.groups'] = self._get_groups(cursor) 89 req.hdf['discussion.forums'] = get_forums(cursor, self.env, req, 90 self.log) 91 req.hdf['discussion.groups'] = get_groups(cursor, self.env, req, 92 self.log) 85 93 elif mode == 'forum-post-add': 86 94 # Get form values … … 90 98 description = req.args.get('description') 91 99 moderators = req.args.get('moderators') 92 if moderators: 93 moderators = moderators.split(' ') 94 else: 95 moderators = '' 100 group = req.args.get('group') 101 102 if not moderators: 103 moderators = [] 104 if not isinstance(moderators, list): 105 moderators = [moderators] 96 106 97 107 # Add new forum 98 self._add_forum(cursor, name, author, subject, description, moderators) 108 add_forum(cursor, self.log, name, author, subject, description, 109 moderators, group) 99 110 100 111 # Display forum list 101 req.hdf['discussion.forums'] = self._get_forums(cursor) 102 req.hdf['discussion.groups'] = self._get_groups(cursor) 112 req.hdf['discussion.forums'] = get_forums(cursor, self.env, req, 113 self.log) 114 req.hdf['discussion.groups'] = get_groups(cursor, self.env, req, 115 self.log) 103 116 mode = 'forum-admin' 104 117 elif mode == 'forum-delete': … … 109 122 110 123 # Delete selected forums 111 self._delete_forums(cursor, selection) 124 if selection: 125 for forum in selection: 126 delete_forum(cursor, self.log, forum) 112 127 113 128 # Display forum list 114 req.hdf['discussion.forums'] = self._get_forums(cursor) 115 req.hdf['discussion.groups'] = self._get_groups(cursor) 129 req.hdf['discussion.forums'] = get_forums(cursor, self.env, req, 130 self.log) 131 req.hdf['discussion.groups'] = get_groups(cursor, self.env, req, 132 self.log) 116 133 mode = 'forum-admin' 117 134 elif mode == 'forum-change-group': … … 121 138 122 139 # Set new group 123 se lf._set_group(cursor, forum, group)140 set_group(cursor, self.env, self.log, forum, group) 124 141 125 142 # Display forum list 126 req.hdf['discussion.forums'] = self._get_forums(cursor) 127 req.hdf['discussion.groups'] = self._get_groups(cursor) 143 req.hdf['discussion.forums'] = get_forums(cursor, self.env, req, 144 self.log) 145 req.hdf['discussion.groups'] = get_groups(cursor, self.env, req, 146 self.log) 128 147 mode = 'forum-admin' 129 148 130 149 # Fill template values and return mode template 131 150 req.hdf['discussion.href'] = self.env.href.admin(category, page) 132 req.hdf['discussion.users'] = self._get_users()151 req.hdf['discussion.users'] = get_users(self.env, self.log) 133 152 db.commit() 134 153 return mode + '.cs', None 135 136 def _get_groups(self, cursor):137 columns = ('id', 'name', 'description')138 sql = "SELECT id, name, description FROM forum_group"139 self.log.debug(sql)140 cursor.execute(sql)141 groups = []142 for row in cursor:143 row = dict(zip(columns, row))144 row['name'] = wiki_to_oneliner(row['name'], self.env)145 row['description'] = wiki_to_oneliner(row['description'], self.env)146 groups.append(row)147 return groups148 149 def _get_forums(self, cursor):150 columns = ('id', 'name', 'author', 'moderators', 'group', 'subject',151 'description')152 sql = "SELECT id, name, author, moderators, forum_group, subject," \153 " description FROM forum"154 self.log.debug(sql)155 cursor.execute(sql)156 forums = []157 for row in cursor:158 row = dict(zip(columns, row))159 row['name'] = wiki_to_oneliner(row['name'], self.env)160 row['subject'] = wiki_to_oneliner(row['subject'], self.env)161 row['description'] = wiki_to_oneliner(row['description'], self.env)162 row['moderators'] = wiki_to_oneliner(row['moderators'], self.env)163 forums.append(row)164 return forums165 166 def _get_users(self):167 users = []168 for user in self.env.get_known_users():169 users.append(user[0])170 return users171 172 def _add_group(self, cursor, name, description):173 sql = "INSERT INTO forum_group (name, description) VALUES ('%s', '%s')" \174 % (name, description)175 self.log.debug(sql)176 cursor.execute(sql)177 178 def _add_forum(self, cursor, name, author, subject, description, moderators):179 moderators = ' '.join(moderators)180 sql = "INSERT INTO forum (name, author, time, moderators, subject," \181 " description) VALUES ('%s', '%s', %s, '%s', '%s', '%s')" % (name,182 author, str(int(time.time())), moderators, subject, description)183 self.log.debug(sql)184 cursor.execute(sql)185 186 def _delete_groups(self, cursor, groups):187 if groups:188 groups = ', '.join(groups)189 sql = "DELETE FROM forum_group WHERE id IN (%s)" % (groups)190 self.log.debug(sql)191 cursor.execute(sql)192 sql = "UPDATE forum SET forum_group = NULL WHERE forum_group IN" \193 " (%s)" % (groups)194 cursor.execute(sql)195 196 def _delete_forums(self, cursor, forums):197 if forums:198 forums = ', '.join(forums)199 sql = "DELETE FROM message WHERE forum IN (%s)" % (forums)200 self.log.debug(sql)201 cursor.execute(sql)202 sql = "DELETE FROM topic WHERE forum IN (%s)" % (forums)203 self.log.debug(sql)204 cursor.execute(sql)205 sql = "DELETE FROM forum WHERE id IN (%s)" % (forums)206 self.log.debug(sql)207 cursor.execute(sql)208 209 def _set_group(self, cursor, forum, group):210 if not group:211 group = 'NULL'212 sql = "UPDATE forum SET forum_group = %s WHERE id = %s" % (group, forum)213 self.log.debug(sql)214 cursor.execute(sql)discussionplugin/0.9/tracdiscussion/api.py
r981 r1006 1 1 from trac.core import * 2 2 from trac.wiki import wiki_to_html, wiki_to_oneliner 3 from trac.util import format_datetime, pretty_timedelta 3 from trac.util import format_datetime, pretty_timedelta, escape, unescape 4 4 import time 5 5 … … 9 9 columns = ('id', 'forum', 'topic', 'replyto', 'time', 'author', 'body') 10 10 sql = "SELECT id, forum, topic, replyto, time, author, body FROM message" \ 11 " WHERE id = %s" % (id)12 log.debug(sql) 13 cursor.execute(sql )11 " WHERE id = %s" 12 log.debug(sql) 13 cursor.execute(sql, (id,)) 14 14 for row in cursor: 15 15 row = dict(zip(columns, row)) … … 22 22 columns = ('id', 'forum', 'time', 'subject', 'body', 'author') 23 23 sql = "SELECT id, forum, time, subject, body, author FROM topic WHERE id =" \ 24 " %s" % (id)25 log.debug(sql) 26 cursor.execute(sql )24 " %s" 25 log.debug(sql) 26 cursor.execute(sql, (id,)) 27 27 for row in cursor: 28 28 row = dict(zip(columns, row)) … … 36 36 columns = ('id', 'forum', 'time', 'subject', 'body', 'author') 37 37 sql = "SELECT id, forum, time, subject, body, author FROM topic WHERE subject =" \ 38 " '%s'" % (subject)39 log.debug(sql) 40 cursor.execute(sql )38 " %s" 39 log.debug(sql) 40 cursor.execute(sql, (subject,)) 41 41 for row in cursor: 42 42 row = dict(zip(columns, row)) … … 50 50 columns = ('name', 'moderators', 'id', 'time', 'subject', 'description') 51 51 sql = "SELECT name, moderators, id, time, subject, description FROM" \ 52 " forum WHERE id = %s" % (id)53 log.debug(sql) 54 cursor.execute(sql )52 " forum WHERE id = %s" 53 log.debug(sql) 54 cursor.execute(sql, (id,)) 55 55 for row in cursor: 56 56 row = dict(zip(columns, row)) … … 60 60 return None 61 61 62 # Set item functions 63 64 def set_group(cursor, env, log, forum, group): 65 if not group: 66 group = '0' 67 sql = "UPDATE forum SET forum_group = %s WHERE id = %s" 68 log.debug(sql) 69 cursor.execute(sql, (group, forum)) 70 62 71 # Get list of items functions 72 63 73 def get_groups(cursor, env, req, log): 64 columns = ('id', 'name', 'description')65 sql = "SELECT id, name, description FROM forum_group"74 # Get count of forums without group 75 sql = "SELECT COUNT(id) FROM forum WHERE forum_group = 0" 66 76 log.debug(sql) 67 77 cursor.execute(sql) 68 groups = [] 78 no_group_forums = 0 79 for row in cursor: 80 no_group_forums = row[0] 81 groups = [{'id' : 0, 'name' : 'None', 'description' : 'No Group', 82 'forums' : no_group_forums}] 83 84 # Get forum groups 85 columns = ('id', 'name', 'description', 'forums') 86 sql = "SELECT id, name, description, (SELECT COUNT(id) FROM forum f WHERE" \ 87 " f.forum_group = forum_group.id) FROM forum_group" 88 log.debug(sql) 89 cursor.execute(sql) 69 90 for row in cursor: 70 91 row = dict(zip(columns, row)) … … 72 93 row['description'] = wiki_to_oneliner(row['description'], env) 73 94 groups.append(row) 95 log.debug(groups) 74 96 return groups 75 97 … … 87 109 for row in cursor: 88 110 row = dict(zip(columns, row)) 111 #row['name'] = wiki_to_oneliner(row['name'], env) 112 #row['subject'] = wiki_to_oneliner(row['subject'], env) 89 113 row['moderators'] = wiki_to_oneliner(row['moderators'], env) 90 114 row['description'] = wiki_to_oneliner(row['description'], env) … … 107 131 " FROM message m WHERE m.topic = topic.id), (SELECT MAX(time) FROM" \ 108 132 " message m WHERE m.topic = topic.id) FROM topic WHERE forum = %s ORDER" \ 109 " BY time" % (forum)110 log.debug(sql) 111 cursor.execute(sql )133 " BY time" 134 log.debug(sql) 135 cursor.execute(sql, (forum,)) 112 136 topics = [] 113 137 for row in cursor: … … 126 150 columns = ('id', 'replyto', 'time', 'author', 'body') 127 151 sql = "SELECT id, replyto, time, author, body FROM message WHERE topic =" \ 128 " %s ORDER BY time" % (topic)129 log.debug(sql) 130 cursor.execute(sql )152 " %s ORDER BY time" 153 log.debug(sql) 154 cursor.execute(sql, (topic,)) 131 155 132 156 messagemap = {} … … 154 178 return messages; 155 179 156 def get_users(env ):180 def get_users(env, log): 157 181 users = [] 158 182 for user in env.get_known_users(): 183 log.debug(user) 159 184 users.append(user[0]) 160 185 return users 161 186 162 187 # Add items functions 188 189 def add_group(cursor, log, name, description): 190 sql = "INSERT INTO forum_group (name, description) VALUES (%s, %s)" 191 log.debug(sql) 192 cursor.execute(sql, (name, description)) 193 163 194 164 195 def add_forum(cursor, log, name, author, subject, description, moderators, … … 166 197 moderators = ' '.join(moderators) 167 198 if not group: 168 group = ' NULL'199 group = '0' 169 200 sql = "INSERT INTO forum (name, author, time, moderators, subject," \ 170 " description, forum_group) VALUES ('%s', '%s', %s, '%s', '%s', '%s'," \ 171 " %s)" % (name, author, str(int(time.time())), moderators, subject, 172 description, group) 173 log.debug(sql) 174 cursor.execute(sql) 201 " description, forum_group) VALUES (%s, %s, %s, %s, %s, %s, %s)" 202 log.debug(sql) 203 cursor.execute(sql, (name, author, str(int(time.time())), moderators, 204 subject, description, group)) 175 205 176 206 def add_topic(cursor, log, forum, subject, author, body): 177 207 sql = "INSERT INTO topic (forum, time, author, subject, body) VALUES" \ 178 " (%s, %s, '%s', '%s', '%s')" % (forum, str(int(time.time())), author, 179 subject, body) 180 log.debug(sql) 181 cursor.execute(sql) 208 " (%s, %s, %s, %s, %s)" 209 log.debug(sql) 210 cursor.execute(sql, (forum, str(int(time.time())), author, subject, body)) 182 211 183 212 def add_message(cursor, log, forum, topic, replyto, author, body): 184 213 sql = "INSERT INTO message (forum, topic, replyto, time, author, body)" \ 185 " VALUES (%s, %s, %s, %s, '%s', '%s')" % (forum, topic, replyto,186 str(int(time.time())), author, body)187 log.debug(sql)188 cursor.execute(sql)214 " VALUES (%s, %s, %s, %s, %s, %s)" 215 log.debug(sql) 216 cursor.execute(sql, (forum, topic, replyto, str(int(time.time())), 217 escape(author), escape(body))) 189 218 190 219 # Delete items functions 191 220 221 def delete_group(cursor, log, group): 222 sql = "DELETE FROM forum_group WHERE id = %s" 223 log.debug(sql) 224 cursor.execute(sql, (group,)) 225 sql = "UPDATE forum SET forum_group = 0 WHERE forum_group = %s" 226 log.debug(sql) 227 cursor.execute(sql, (group,)) 228 192 229 def delete_forum(cursor, log, forum): 193 sql = "DELETE FROM message WHERE forum = %s" % (forum)194 log.debug(sql) 195 cursor.execute(sql )196 sql = "DELETE FROM topic WHERE forum = %s" % (forum)197 log.debug(sql) 198 cursor.execute(sql )199 sql = "DELETE FROM forum WHERE id = %s" % (forum)200 log.debug(sql) 201 cursor.execute(sql )230 sql = "DELETE FROM message WHERE forum = %s" 231 log.debug(sql) 232 cursor.execute(sql, (forum,)) 233 sql = "DELETE FROM topic WHERE forum = %s" 234 log.debug(sql) 235 cursor.execute(sql, (forum,)) 236 sql = "DELETE FROM forum WHERE id = %s" 237 log.debug(sql) 238 cursor.execute(sql, (forum,)) 202 239 203 240 def delete_topic(cursor, log, topic): 204 sql = "DELETE FROM message WHERE topic = %s" % (topic)205 log.debug(sql) 206 cursor.execute(sql )207 sql = "DELETE FROM topic WHERE id = %s" % (topic)208 log.debug(sql) 209 cursor.execute(sql )241 sql = "DELETE FROM message WHERE topic = %s" 242 log.debug(sql) 243 cursor.execute(sql, (topic,)) 244 sql = "DELETE FROM topic WHERE id = %s" 245 log.debug(sql) 246 cursor.execute(sql, (topic,)) 210 247 211 248 def delete_message(cursor, log, message): 212 249 # Get message replies 213 sql = "SELECT id FROM message WHERE replyto = %s" % (message)214 log.debug(sql) 215 cursor.execute(sql )250 sql = "SELECT id FROM message WHERE replyto = %s" 251 log.debug(sql) 252 cursor.execute(sql, (message,)) 216 253 replies = [] 217 254 for row in cursor: … … 223 260 224 261 # Delete message itself 225 sql = "DELETE FROM message WHERE id = %s" % (message)226 log.debug(sql) 227 cursor.execute(sql )262 sql = "DELETE FROM message WHERE id = %s" 263 log.debug(sql) 264 cursor.execute(sql, (message,)) discussionplugin/0.9/tracdiscussion/core.py
r909 r1006 153 153 req.hdf['discussion.forums'] = get_forums(cursor, self.env, req, 154 154 self.log) 155 self.log.debug(req.hdf.get('discussion.forums')) 155 156 elif mode == 'forum-add': 156 157 req.perm.assert_permission('DISCUSSION_MODIFY') … … 158 159 req.hdf['discussion.groups'] = get_groups(cursor, self.env, req, 159 160 self.log) 160 req.hdf['discussion.users'] = get_users(self.env )161 req.hdf['discussion.users'] = get_users(self.env, self.log) 161 162 elif mode == 'forum-post-add': 162 163 req.perm.assert_permission('DISCUSSION_MODIFY') … … 169 170 moderators = req.args.get('moderators') 170 171 group = req.args.get('group') 171 if moderators:172 moderators = moderators.split(' ')173 else:174 moderators = ''172 if not moderators: 173 moderators = [] 174 if not isinstance(moderators, list): 175 moderators = [moderators] 175 176 176 177 # Add new forum discussionplugin/0.9/tracdiscussion/db/db1.py
r981 r1006 1 # Commont SQL statements 1 2 sql = ["""CREATE TABLE forum ( 2 3 id integer PRIMARY KEY, … … 26 27 """INSERT INTO system (name, value) VALUES ('discussion_version', 1);""" ] 27 28 28 def do_upgrade(cursor): 29 for statement in sql: 30 cursor.execute(statement) 29 # PostgreSQL statements 30 postrge_sql = ["""CREATE TABLE forum ( 31 id serial PRIMARY KEY, 32 name text, 33 time integer, 34 moderators text, 35 subject text, 36 description text 37 );""", 38 """CREATE TABLE topic ( 39 id serial PRIMARY KEY, 40 forum integer, 41 time integer, 42 author text, 43 subject text, 44 body text 45 );""", 46 """CREATE TABLE message ( 47 id serial PRIMARY KEY, 48 forum integer, 49 topic integer, 50 replyto integer, 51 time integer, 52 author text, 53 body text 54 );""", 55 """INSERT INTO system (name, value) VALUES ('discussion_version', 1);""" ] 56 57 58 def do_upgrade(env, cursor): 59 if env.config.get('trac', 'database').startswith('postgres'): 60 for statement in postgre_sql: 61 cursor.execute(statement) 62 else: 63 for statement in sql: 64 cursor.execute(statement) 65 discussionplugin/0.9/tracdiscussion/db/db2.py
r981 r1006 1 # Common statements 1 2 sql = ["""CREATE TABLE forum_group ( 2 3 id integer PRIMARY KEY, … … 8 9 """UPDATE system SET value = 2 WHERE name='discussion_version';"""] 9 10 10 def do_upgrade(cursor): 11 for statement in sql: 12 cursor.execute(statement) 11 # PostgreSQL statements 12 postgre_sql = ["""CREATE TABLE forum_group ( 13 id serial PRIMARY KEY, 14 name text, 15 description text 16 );""", 17 """ALTER TABLE forum ADD COLUMN forum_group integer;""", 18 """ALTER TABLE forum ADD COLUMN author text;""", 19 """UPDATE system SET value = 2 WHERE name='discussion_version';"""] 20 21 def do_upgrade(env, cursor): 22 if env.config.get('trac', 'database').startswith('postgres'): 23 for statement in postgre_sql: 24 cursor.execute(statement) 25 else: 26 for statement in sql: 27 cursor.execute(statement) discussionplugin/0.9/tracdiscussion/init.py
r844 r1006 32 32 module = __import__('tracdiscussion.db.%s' % (script_name), 33 33 globals(), locals(), ['do_upgrade']) 34 module.do_upgrade( cursor)34 module.do_upgrade(self.env, cursor) 35 35 #except: 36 36 # raise TracError('Error upgrading database to version %i' % I) discussionplugin/0.9/tracdiscussion/templates/forum-add.cs
r909 r1006 31 31 <?cs /if ?> 32 32 </div> 33 <?cs if:discussion.groups. 0.id ?>33 <?cs if:discussion.groups.1.id ?> 34 34 <div class="group"> 35 35 <label for="group">Forum Group:</label><br/> 36 36 <select name="group"> 37 <option value="">None</option>38 37 <?cs each:group = discussion.groups ?> 39 38 <option value="<?cs var:group.id ?>"><?cs var:group.name ?></option> discussionplugin/0.9/tracdiscussion/templates/forum-admin.cs
r909 r1006 42 42 <?cs /if ?> 43 43 </div> 44 <?cs if:discussion.groups.1.id ?> 45 <div class="group"> 46 <label for="group">Forum Group:</label><br/> 47 <select name="group"> 48 <?cs each:group = discussion.groups ?> 49 <option value="<?cs var:group.id ?>"><?cs var:group.name ?></option> 50 <?cs /each ?> 51 </select><br/> 52 </div> 53 <?cs else ?> 54 <input type="hidden" name="group" value=""/> 55 <?cs /if ?> 44 56 <div class="buttons"> 45 57 <input type="submit" name="submit" value="Add"/> … … 59 71 <th class="description">Description</th> 60 72 <th class="moderators">Moderators</th> 61 <?cs if:discussion.groups. 0.id ?>73 <?cs if:discussion.groups.1.id ?> 62 74 <th class="group">Group</th> 63 75 <?cs /if ?> … … 82 94 <div class="moderators"><?cs var:forum.moderators ?></div> 83 95 </td> 84 <?cs if:discussion.groups. 0.id ?>96 <?cs if:discussion.groups.1.id ?> 85 97 <td class="group"> 86 98 <div class="group"> 87 99 <select id="group-select-<?cs var:forum.id ?>" name="group-<?cs var:forum.id ?>" onChange="submit_group_change(<?cs var:forum.id ?>)"> 88 <option value="">None</option>89 100 <?cs each:group = discussion.groups ?> 90 101 <?cs if:group.id == forum.group ?> discussionplugin/0.9/tracdiscussion/templates/forum-list.cs
r909 r1006 71 71 <h1>Forum List</h1> 72 72 73 <?cs call:display_group(nogroup, discussion.forums) ?>74 73 <?cs each:group = discussion.groups ?> 75 <?cs call:display_group(group, discussion.forums) ?> 74 <?cs if:group.forums ?> 75 <?cs call:display_group(group, discussion.forums) ?> 76 <?cs /if ?> 76 77 <?cs /each ?> 77 78 discussionplugin/0.9/tracdiscussion/templates/group-admin.cs
r909 r1006 21 21 </form> 22 22 23 <?cs if:discussion.groups. 0.name?>23 <?cs if:discussion.groups.1.id ?> 24 24 <form class="forum-list" method="post"> 25 25 <table class="listing"> … … 33 33 </tbody> 34 34 <?cs each:group = discussion.groups ?> 35 <tr class="<?cs if:name(group) % #2 ?>even<?cs else ?>odd<?cs /if ?>"> 36 <td class="selection"> 37 <input type="checkbox" name="selection" value="<?cs var:group.id ?>"/> 38 </td> 39 <td class="name"> 40 <div class="name"><?cs var:group.name ?></div> 41 </td> 42 <td class="description"> 43 <div class="description" ><?cs var:group.description ?></div> 44 </td> 45 </tr> 35 <?cs if:group.id ?> 36 <tr class="<?cs if:name(group) % #2 ?>even<?cs else ?>odd<?cs /if ?>"> 37 <td class="selection"> 38 <input type="checkbox" name="selection" value="<?cs var:group.id ?>"/> 39 </td> 40 <td class="name"> 41 <div class="name"><?cs var:group.name ?></div> 42 </td> 43 <td class="description"> 44 <div class="description" ><?cs var:group.description ?></div> 45 </td> 46 </tr> 47 <?cs /if ?> 46 48 <?cs /each ?> 47 49 </tbody> discussionplugin/0.9/tracdiscussion/timeline.py
r981 r1006 79 79 columns = ('id', 'name', 'author', 'subject', 'description', 'time') 80 80 sql = "SELECT id, name, author, subject, description, time FROM forum" \ 81 " WHERE time BETWEEN %s AND %s" % (start, stop)81 " WHERE time BETWEEN %s AND %s" 82 82 self.log.debug(sql) 83 cursor.execute(sql )83 cursor.execute(sql, (start, stop)) 84 84 for row in cursor: 85 85 row = dict(zip(columns, row)) … … 89 89 columns = ('id', 'subject', 'author', 'time', 'forum', 'forum_name') 90 90 sql = "SELECT id, subject, author, time, forum, (SELECT name FROM forum" \ 91 " f WHERE f.id = topic.forum) FROM topic WHERE time BETWEEN %s AND %s" \ 92 % (start, stop) 91 " f WHERE f.id = topic.forum) FROM topic WHERE time BETWEEN %s AND %s" 93 92 self.log.debug(sql) 94 cursor.execute(sql )93 cursor.execute(sql, (start, stop)) 95 94 for row in cursor: 96 95 row = dict(zip(columns, row)) … … 102 101 sql = "SELECT id, author, time, forum, topic, (SELECT name FROM forum f" \ 103 102 " WHERE f.id = message.forum), (SELECT subject FROM topic t WHERE" \ 104 " t.id = message.topic) FROM message WHERE time BETWEEN %s AND %s" \ 105 % (start, stop) 103 " t.id = message.topic) FROM message WHERE time BETWEEN %s AND %s" 106 104 self.log.debug(sql) 107 cursor.execute(sql )105 cursor.execute(sql, (start, stop)) 108 106 for row in cursor: 109 107 row = dict(zip(columns, row)) discussionplugin/0.9/tracdiscussion/wiki.py
r981 r1006 146 146 if ns == 'forum': 147 147 columns = ('subject',) 148 sql = "SELECT subject FROM forum WHERE id = %s" % (id)148 sql = "SELECT subject FROM forum WHERE id = %s" 149 149 self.log.debug(sql) 150 cursor.execute(sql )150 cursor.execute(sql, (id,)) 151 151 for row in cursor: 152 152 row = dict(zip(columns, row)) … … 158 158 columns = ('forum', 'forum_subject', 'subject') 159 159 sql = "SELECT forum, (SELECT subject FROM forum WHERE id =" \ 160 " topic.forum), subject FROM topic WHERE id = %s" % (id)160 " topic.forum), subject FROM topic WHERE id = %s" 161 161 self.log.debug(sql) 162 cursor.execute(sql )162 cursor.execute(sql, (id,)) 163 163 for row in cursor: 164 164 row = dict(zip(columns, row)) … … 173 173 sql = "SELECT forum, topic, (SELECT subject FROM forum WHERE id =" \ 174 174 " message.forum), (SELECT subject FROM topic WHERE id =" \ 175 " message.topic) FROM message WHERE id = %s" % (id)175 " message.topic) FROM message WHERE id = %s" 176 176 self.log.debug(sql) 177 cursor.execute(sql )177 cursor.execute(sql, (id,)) 178 178 for row in cursor: 179 179 row = dict(zip(columns, row))
