Ticket #1579: tracdiscussion.new.patch

File tracdiscussion.new.patch, 6.5 kB (added by bewst, 2 years ago)

updated patch that also handles notification properly

  • setup.py

    old new  
    11#!/usr/bin/env python 
    2 # -*- coding: utf8 -*- 
    32 
    43from setuptools import setup 
    54 
     
    76  name = 'TracDiscussion', 
    87  version = '0.5', 
    98  packages = ['tracdiscussion', 'tracdiscussion.db'], 
    10   package_data = {'tracdiscussion' : ['templates/*.cs', 'htdocs/css/*.css']}, 
     9  package_data = {'tracdiscussion' : ['templates/*.cs', 'templates/*.txt', 'htdocs/css/*.css']}, 
    1110  entry_points = {'trac.plugins': ['TracDiscussion.core = tracdiscussion.core', 
    1211    'TracDiscussion.init = tracdiscussion.init', 
    1312    'TracDiscussion.wiki = tracdiscussion.wiki', 
     
    1514    'TracDiscussion.admin = tracdiscussion.admin', 
    1615    'TracDiscussion.search = tracdiscussion.search', 
    1716    'TracDiscussion.notification = tracdiscussion.notification']}, 
    18   install_requires = ['TracWebAdmin'], 
     17 # install_requires = ['TracWebAdmin'], 
    1918  keywords = 'trac discussion', 
    2019  author = 'Alec Thomas, Radek Bartoň', 
    2120  author_email = 'trac-hacks@swapoff.org', 
  • tracdiscussion/admin.py

    old new  
    1 # -*- coding: utf8 -*- 
    2  
    31from tracdiscussion.api import * 
    42from trac.core import * 
    53from trac.perm import IPermissionRequestor 
    64from trac.web.chrome import add_stylesheet 
    75from trac.wiki import wiki_to_html, wiki_to_oneliner 
    8 from webadmin.web_ui import IAdminPageProvider 
    96import time 
    107 
     8try: # Trac 0.11 
     9   from trac.admin import IAdminPanelProvider 
     10 
     11except ImportError: 
     12    IAdminPanelProvider = None 
     13 
     14    try: # Trac 0.10 with WebAdmin plugin 
     15        require("TracWebAdmin") 
     16        from webadmin.web_ui import IAdminPageProvider 
     17    except (ResolutionError, ImportError): 
     18        IAdminPageProvider = None 
     19         
     20 
    1121class DiscussionWebAdmin(Component): 
    1222    """ 
    1323        The webadmin module implements discussion plugin administration 
    1424        via WebAdminPlugin. 
    1525    """ 
    16     implements(IAdminPageProvider) 
     26    if IAdminPanelProvider: 
     27        implements(IAdminPanelProvider) 
     28    elif IAdminPageProvider: 
     29        implements(IAdminPageProvider) 
    1730 
     31    # IAdminPanelProvider 
     32    def get_admin_panels(self, req): 
     33        return self.get_admin_pages(req) 
     34 
    1835    # IAdminPageProvider 
    1936    def get_admin_pages(self, req): 
    2037        if req.perm.has_permission('DISCUSSION_ADMIN'): 
  • tracdiscussion/search.py

    old new  
    1 # -*- coding: utf8 -*- 
    2  
    31from trac.core import * 
    42from trac.config import Option 
    5 from trac.Search import ISearchSource, shorten_result 
     3from trac.search import ISearchSource, shorten_result 
    64from trac import util 
    75 
    86class DiscussionSearch(Component): 
  • tracdiscussion/notification.py

    old new  
    1 # -*- coding: utf8 -*- 
    2  
    31from trac.notification import NotifyEmail 
    42from trac.util import format_datetime 
    53from trac.util.text import CRLF, wrap 
     4from trac.web.chrome import Chrome 
    65 
    76class DiscussionNotifyEmail(NotifyEmail): 
    87 
    9     template_name = "discussion-notify-body.cs
     8    template_name = "discussion-notify-body.txt
    109    forum = None 
    1110    topic = None 
    1211    message = None 
    1312    torcpts = [] 
    1413    ccrcpts = [] 
    1514    COLS = 75 
    16  
     15     
    1716    def __init__(self, env): 
    1817        NotifyEmail.__init__(self, env) 
    1918 
     
    7473        subject = self.topic['subject'] 
    7574 
    7675        # Set set e-mail template values. 
    77         self.hdf.set_unescaped('discussion.re', re) 
    78         self.hdf.set_unescaped('discussion.prefix', prefix) 
    79         self.hdf.set_unescaped('discussion.title', title) 
    80         self.hdf.set_unescaped('discussion.id', id
    81         self.hdf.set_unescaped('discussion.author', author) 
    82         self.hdf.set_unescaped('discussion.time', time) 
    83         self.hdf.set_unescaped('discussion.moderators', moderators) 
    84         self.hdf.set_unescaped('discussion.subject', subject) 
    85         self.hdf.set_unescaped('discussion.body', body) 
    86         self.hdf.set_unescaped('discussion.link', link
     76        try: 
     77            hdf = self.hdf 
     78        except AttributeError: 
     79            set_data = lambda k,v: self.data.__setitem__(k,v
     80            hdf = None 
     81        else: 
     82            set_data = hdf.set_unescaped 
     83             
     84        for a in 're prefix title id author time moderators subject body link'.split(): 
     85            set_data(a, locals()[a]
    8786 
    8887        # Render body and send notification. 
    89         subject = self.hdf.render('discussion-notify-subject.cs') 
     88        if hdf is not None: 
     89            subject = hdf.render('discussion-notify-subject.cs') 
     90        else: 
     91            subject = Chrome(self.env).load_template(  
     92                'discussion-notify-subject.txt', method='text' 
     93                ).generate(**self.data).render('text', encoding=None).strip() 
     94             
    9095        self.env.log.debug(subject) 
    9196        NotifyEmail.notify(self, id, subject) 
    9297 
  • tracdiscussion/timeline.py

    old new  
    1 # -*- coding: utf8 -*- 
    2  
    31from trac.core import * 
    4 from trac.Timeline import ITimelineEventProvider 
     2from trac.timeline import ITimelineEventProvider 
    53from trac.wiki import wiki_to_html, wiki_to_oneliner 
    64from trac.util import Markup 
    75from trac.util.html import html 
  • tracdiscussion/templates/discussion-notify-body.txt

    old new  
     1$title #$id - $subject 
     2---------------------------------------------------------------------------- 
     3$author 
     4$time 
     5$moderators 
     6---------------------------------------------------------------------------- 
     7 
     8$body 
     9 
     10-- 
     11$title URL: <$link> 
     12$project.name <$project.url> 
     13$project.descr 
  • tracdiscussion/templates/discussion-notify-subject.txt

    old new