Changeset 3064
- Timestamp:
- 01/15/08 19:43:59 (10 months ago)
- Files:
-
- announcerplugin/0.11/announcerplugin/api.py (modified) (1 diff)
- announcerplugin/0.11/announcerplugin/pref.py (modified) (1 diff)
- announcerplugin/0.11/announcerplugin/producers/ticket.py (modified) (1 diff)
- announcerplugin/0.11/announcerplugin/query.py (added)
- announcerplugin/0.11/announcerplugin/subscribers/__init__.py (modified) (1 diff)
- announcerplugin/0.11/announcerplugin/subscribers/ticket.py (modified) (2 diffs)
- announcerplugin/0.11/announcerplugin/templates/prefs_announcer_rules.html (added)
- announcerplugin/0.11/setup.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
announcerplugin/0.11/announcerplugin/api.py
r3047 r3064 226 226 self.category = category 227 227 self.target = target 228 229 def get_basic_terms(self): 230 return (self.realm, self.category) 231 232 def get_session_terms(self, session_id): 233 return tuple() 228 234 229 235 _TRUE_VALUES = ('yes', 'true', 'enabled', 'on', 'aye', '1', 1, True) announcerplugin/0.11/announcerplugin/pref.py
r3041 r3064 18 18 19 19 def get_htdocs_dirs(self): 20 return [] 20 resource_dir = resource_filename(__name__, 'htdocs') 21 return [resource_dir] 21 22 22 23 def get_templates_dirs(self): announcerplugin/0.11/announcerplugin/producers/ticket.py
r3046 r3064 15 15 self.attachment = attachment 16 16 17 def get_basic_terms(self): 18 for term in AnnouncementEvent.get_basic_terms(self): 19 yield term 20 21 ticket = self.target 22 yield ticket['component'] 23 24 def get_session_terms(self, session_id): 25 ticket = self.target 26 27 if session_id == self.author: 28 yield "updater" 29 30 if session_id == ticket['owner']: 31 yield "owner" 32 33 if session_id == ticket['reporter']: 34 yield "reporter" 35 36 17 37 class TicketChangeProducer(Component): 18 38 implements(ITicketChangeListener) announcerplugin/0.11/announcerplugin/subscribers/__init__.py
r3047 r3064 1 import ticket1 #import ticket 2 2 import ticket_compat 3 3 import ticket_groups announcerplugin/0.11/announcerplugin/subscribers/ticket.py
r3046 r3064 1 1 from trac.core import Component, implements, TracError 2 from announcerplugin.api import IAnnouncementSubscriber 3 2 from trac.web.chrome import add_stylesheet 3 from announcerplugin.api import IAnnouncementSubscriber, IAnnouncementPreferenceProvider 4 from announcerplugin.query import * 4 5 5 6 class RuleBasedTicketSubscriber(Component): 6 7 7 implements(IAnnouncementSubscriber) 8 implements(IAnnouncementSubscriber, IAnnouncementPreferenceProvider) 9 10 # IAnnouncementSubscriber 8 11 9 12 def get_subscription_realms(self): 10 return (' ticket', )13 return ('*', ) 11 14 12 15 def get_subscription_categories(self, realm): 13 return (' created', 'changed', 'attachment added')16 return ('*', ) 14 17 15 18 def get_subscriptions_for_event(self, event): 19 terms = self._get_basic_terms(event) 20 21 db = self.env.get_db_ctx() 22 cursor = db.cursor() 23 24 cursor.execute(""" 25 SELECT id, sid, authenticated, rule 26 FROM subscriptions 27 WHERE enabled=1 AND managed='' 28 AND realm=%s 29 AND category=%s 30 """, (event.realm, event.category)) 31 32 for rule_id, session_id, authenticated, rule in cursor.fetchall(): 33 query = Query(rule) 34 print "For", session_id, "Rule:", rule 35 if query(terms + self._get_session_terms(session_id, event)): 36 print True 37 else: 38 print False 39 16 40 return 17 41 yield … … 28 52 # """, (event.realm, event.category)) 29 53 54 def _get_basic_terms(self, event): 55 terms = [event.realm, event.category] 56 try: 57 terms.extend(event.get_basic_terms()) 58 except: 59 pass 30 60 61 print "Basic terms", terms 62 return terms 31 63 64 def _get_session_terms(self, session_id, event): 65 terms = [] 66 67 try: 68 terms.extend(event.get_session_terms(session_id)) 69 except: 70 pass 71 72 print "Session terms", terms 73 74 return terms 75 76 # IAnnouncementPreferenceProvider 77 78 def get_announcement_preference_boxes(self, req): 79 yield ('rules', 'Rule-based subscriptions') 80 81 def render_announcement_preference_box(self, req, box): 82 # db = self.env.get_db_ctx() 83 # cursor = db.cursor() 84 85 # if req.method == "POST": 86 # cursor.execute(""" 87 # DELETE FROM subscriptions 88 # WHERE enabled=1 AND managed='' 89 # AND sid=%s AND authenticated=%s 90 # AND 91 # """) 92 add_stylesheet(req, 'announcerplugin/css/rulediv.css') 93 94 categories = { 95 'ticket': ('created', 'changed', 'attachment added', 'deleted'), 96 'wiki': ('created', 'changed', 'attachment added', 'deleted') 97 } 98 99 # cursor.execute(""" 100 # SELECT rule 101 # FROM subscriptions 102 # WHERE enabled=1 AND managed='' 103 # AND sid=%s AND authenticated=%s 104 # AND realm=%s 105 # AND category=%s 106 # """, (req.session.id, not req.authname == 'anonymous', event.realm, event.category)) 107 108 rules = [ 109 dict( 110 id=1, 111 enabled=True, 112 realm="ticket", 113 category="changed", 114 value="this or that", 115 ), 116 dict( 117 id=3, 118 enabled=False, 119 realm="wiki", 120 category="created", 121 value="this or that", 122 ), 123 dict( 124 id=5, 125 enabled=True, 126 realm="ticket", 127 category="changed", 128 value="this or that", 129 ), 130 ] 131 132 data = dict( 133 # announcer_rules="\n".join(x[0] for x in cursor.fetchall()), 134 # realms=realms, 135 categories=categories, 136 rules=rules, 137 ) 138 return "prefs_announcer_rules.html", data 139 announcerplugin/0.11/setup.py
r3015 r3064 39 39 """Copyright (c) 2008, Stephen Hansen. All rights reserved. Released under the 3-clause BSD license. """, 40 40 url = "http://www.trac-hacks.org/wiki/AnnouncerPlugin", 41 packages = ['announcerplugin'],42 package_data = {'announcerplugin': ['templates/*.html' ]},41 packages = find_packages(exclude=['*.tests*']), 42 package_data = {'announcerplugin': ['templates/*.html', 'templates/*.txt', 'htdocs/*.*', 'htdocs/css/*.*']}, 43 43 install_requires = [ 44 44 #'trac>=0.11',
