Index: tractags/wiki.py =================================================================== --- tractags/wiki.py (revision 4364) +++ tractags/wiki.py (working copy) @@ -19,6 +19,8 @@ from trac.util.compat import sorted from genshi.builder import tag from genshi.filters.transform import Transformer +from datetime import datetime +from trac.util.datefmt import utc, to_timestamp class WikiTagProvider(DefaultTagProvider): @@ -74,7 +76,24 @@ # If the page hasn't been otherwise modified, save the tags # and redirect so we don't get the "page has not been modified" # warning - if self._update_tags(req, page): + tags_changed = self._update_tags(req, page) + if tags_changed: + # create comment if tags have changed + comment = [] + if tags_changed[0]: + comment.append(u"tags added: %s" % ' '.join(tags_changed[0])) + if tags_changed[1]: + comment.append(u"tags removed: %s" % ' '.join(tags_changed[1])) + db = self.env.get_db_cnx() + t = datetime.now(utc) + cursor = db.cursor() + # saving new wiki page version + cursor.execute("INSERT INTO wiki (name,version,time,author,ipnr," + "text,comment,readonly) VALUES (%s,%s,%s,%s,%s,%s," + "%s,%s)", (page.name, page.version + 1, + to_timestamp(t), req.args.get('authname'), req.args.get('remote_adress()'), + page.text, ' -- '.join(comment), page.readonly)) + db.commit() req.redirect(get_resource_url(self.env, page.resource, req.href, version=None)) return [] @@ -128,8 +147,11 @@ if oldtags != newtags: tag_system.set_tags(req, page.resource, newtags) - return True - return False + # return changed tags for comment in wiki change + addedtags = [t for t in newtags if t not in oldtags] + removedtags = [t for t in oldtags if t not in newtags] + return (addedtags, removedtags) + return None def _wiki_edit(self, req, stream):