def matches(self, event): if event.realm != 'ticket': return if event.category not in ('created', 'changed', 'attachment added'): return klass = self.__class__.__name__ cc = event.target['cc'] or '' sids = set() for chunk in re.split('\s|,', cc): chunk = chunk.strip() if not chunk or chunk.startswith('@'): continue if re.match(r'^[^@]+@.+', chunk): sid, auth, addr = None, 0, chunk else: sid, auth, addr = chunk, 1, None # Default subscription for s in self.default_subscriptions(): yield (s[0], s[1], sid, auth, addr, None, s[2], s[3]) if sid: sids.add((sid, auth)) for s in Subscription.find_by_sids_and_class(self.env, sids, klass): yield s.subscription_tuple()
def matches(self, event): if event.realm != "ticket": return if event.category not in ('created', 'changed', 'attachment added'): return ticket = event.target if not ticket['reporter'] or ticket['reporter'] == 'anonymous': return if re.match(r'^[^@]+@.+', ticket['reporter']): sid, auth, addr = None, 0, ticket['reporter'] else: sid, auth, addr = ticket['reporter'], 1, None # Default subscription for s in self.default_subscriptions(): yield (s[0], s[1], sid, auth, addr, None, s[2], s[3]) if sid: klass = self.__class__.__name__ for s in Subscription.find_by_sids_and_class(self.env, ((sid,auth),), klass): yield s.subscription_tuple()
def matches(self, event): if event.realm != "ticket": return if event.category not in ('created', 'changed', 'attachment added'): return ticket = event.target try: component = model.Component(self.env, ticket['component']) if not component.owner: return if re.match(r'^[^@]+@.+', component.owner): sid, auth, addr = None, 0, component.owner else: sid, auth, addr = component.owner, 1, None # Default subscription for s in self.default_subscriptions(): yield (s[0], s[1], sid, auth, addr, None, s[2], s[3]) if sid: klass = self.__class__.__name__ for s in Subscription.find_by_sids_and_class( self.env, ((sid, auth), ), klass): yield s.subscription_tuple() except: self.log.debug("Component for ticket (%s) not found" % ticket['id'])
def matches(self, event): if event.realm != 'ticket': return if event.category not in ('created', 'changed', 'attachment added'): return ticket = event.target try: component = model.Component(self.env, ticket['component']) if not component.owner: return if re.match(r'^[^@]+@.+', component.owner): sid, auth, addr = None, 0, component.owner else: sid, auth, addr = component.owner, 1, None # Default subscription for s in self.default_subscriptions(): yield s[0], s[1], sid, auth, addr, None, s[2], s[3] if sid: klass = self.__class__.__name__ for s in Subscription.find_by_sids_and_class(self.env, ((sid, auth),), klass): yield s.subscription_tuple() except: self.log.debug("Component for ticket (%s) not found", ticket['id'])
def matches(self, event): if event.realm != "ticket": return if event.category not in ("changed", "created", "attachment added"): return klass = self.__class__.__name__ ticket = event.target sids = set() for field in self.custom_cc_fields: subs = ticket[field] or "" for chunk in re.split("\s|,", subs): chunk = chunk.strip() if not chunk or chunk.startswith("@"): continue if re.match(r"^[^@]+@.+", chunk): sid, auth, addr = None, None, chunk else: sid, auth, addr = chunk, True, None # Default subscription for s in self.default_subscriptions(): yield (s[0], s[1], sid, auth, addr, None, s[3], s[4]) if sid: sids.add((sid, auth)) for i in Subscription.find_by_sids_and_class(self.env, sids, klass): yield i.subscription_tuple()
def matches(self, event): if event.realm != 'ticket': return if event.category not in ('changed', 'created', 'attachment added'): return klass = self.__class__.__name__ ticket = event.target sids = set() for field in self.custom_cc_fields: subs = ticket[field] or '' for chunk in re.split('\s|,', subs): chunk = chunk.strip() if not chunk or chunk.startswith('@'): continue if re.match(r'^[^@]+@.+', chunk): sid, auth, addr = None, None, chunk else: sid, auth, addr = chunk, True, None # Default subscription for s in self.default_subscriptions(): yield (s[0], s[1], sid, auth, addr, None, s[3], s[4]) if sid: sids.add((sid, auth)) for i in Subscription.find_by_sids_and_class(self.env, sids, klass): yield i.subscription_tuple()
def matches(self, event): if event.realm != 'wiki': return if event.category not in ('changed', 'created', 'attachment added', 'deleted', 'version deleted'): return klass = self.__class__.__name__ attrs = SubscriptionAttribute.find_by_class_and_realm( self.env, klass, 'wiki') def match(pattern): for raw in pattern['target'].split(' '): if raw != '': pat = urllib.unquote(raw).replace('*', '.*') if re.match(pat, event.target.name): return True sids = set( map(lambda x: (x['sid'], x['authenticated']), filter(match, attrs))) for i in Subscription.find_by_sids_and_class(self.env, sids, klass): yield i.subscription_tuple()
def matches(self, event): klass = self.__class__.__name__ attrs = SubscriptionAttribute.find_by_class_realm_and_target(self.env, klass, "user", event.author) sids = set(map(lambda x: (x["sid"], x["authenticated"]), attrs)) for i in Subscription.find_by_sids_and_class(self.env, sids, klass): yield i.subscription_tuple()
def matches(self, event): klass = self.__class__.__name__ attrs = SubscriptionAttribute.find_by_class_realm_and_target(self.env, klass, event.realm, self._get_target_id(event.target)) sids = set(map(lambda x: (x['sid'],x['authenticated']), attrs)) for i in Subscription.find_by_sids_and_class(self.env, sids, klass): yield i.subscription_tuple()
def matches(self, event): klass = self.__class__.__name__ attrs = SubscriptionAttribute.find_by_class_realm_and_target( self.env, klass, event.realm, get_target_id(event.target)) sids = set(map(lambda x: (x['sid'], x['authenticated']), attrs)) for i in Subscription.find_by_sids_and_class(self.env, sids, klass): yield i.subscription_tuple()
def matches(self, event): if event.realm != "ticket": return if event.category not in ('created', 'changed', 'attachment added'): return ticket = event.target if (not ticket['owner'] or ticket['owner'] == 'anonymous') and \ not 'owner' in event.changes: return sid = sid_old = None if ticket['owner'] and ticket['owner'] != 'anonymous': if re.match(r'^[^@]+@.+', ticket['owner']): sid, auth, addr = None, 0, ticket['owner'] else: sid, auth, addr = ticket['owner'], 1, None if 'owner' in event.changes: previous_owner = event.changes['owner'] if re.match(r'^[^@]+@.+', previous_owner): sid_old, auth_old, addr_old = None, 0, previous_owner else: sid_old, auth_old, addr_old = previous_owner, 1, None # Default subscription for s in self.default_subscriptions(): if sid: yield (s[0], s[1], sid, auth, addr, None, s[2], s[3]) if sid_old: yield (s[0], s[1], sid_old, auth_old, addr_old, None, s[2], s[3]) if sid: klass = self.__class__.__name__ for s in Subscription.find_by_sids_and_class(self.env, ((sid, auth),), klass): yield s.subscription_tuple() if sid_old: klass = self.__class__.__name__ for s in Subscription.find_by_sids_and_class(self.env, ((sid_old, auth_old),), klass): yield s.subscription_tuple()
def matches(self, event): if event.realm != 'blog': return if event.category not in ('post changed', 'post deleted', 'comment created', 'comment changed', 'comment deleted'): return sids = ((event.blog_post.author, 1),) klass = self.__class__.__name__ for i in Subscription.find_by_sids_and_class(self.env, sids, klass): yield i.subscription_tuple()
def matches(self, event): if event.realm != 'blog': return if not event.category in ('post changed', 'post deleted', 'comment created', 'comment changed', 'comment deleted'): return sids = ((event.blog_post.author, 1), ) klass = self.__class__.__name__ for i in Subscription.find_by_sids_and_class(self.env, sids, klass): yield i.subscription_tuple()
def matches(self, event): if event.realm != 'blog': return if not event.category in ('post created', 'post changed', 'post deleted', 'comment created', 'comment changed', 'comment deleted'): return klass = self.__class__.__name__ attrs = SubscriptionAttribute.find_by_class_realm_and_target( self.env, klass, 'blog', event.blog_post.name) sids = set(map(lambda x: (x['sid'], x['authenticated']), attrs)) for i in Subscription.find_by_sids_and_class(self.env, sids, klass): yield i.subscription_tuple()
def matches(self, event): if event.realm != 'blog': return if event.category not in ('post created', 'post changed', 'post deleted', 'comment created', 'comment changed', 'comment deleted'): return klass = self.__class__.__name__ sids = set(map(lambda x: (x['sid'], x['authenticated']), SubscriptionAttribute.find_by_class_realm_and_target( self.env, klass, 'blog', event.blog_post.author))) for i in Subscription.find_by_sids_and_class(self.env, sids, klass): yield i.subscription_tuple()
def matches(self, event): if event.realm != "ticket": return if event.category not in ("changed", "created", "attachment added"): return component = event.target["component"] if not component: return klass = self.__class__.__name__ attrs = SubscriptionAttribute.find_by_class_realm_and_target(self.env, klass, "ticket", component) sids = set(map(lambda x: (x["sid"], x["authenticated"]), attrs)) for i in Subscription.find_by_sids_and_class(self.env, sids, klass): yield i.subscription_tuple()
def matches(self, event): if event.realm != 'ticket': return if event.category not in ('changed', 'created', 'attachment added'): return component = event.target['component'] if not component: return klass = self.__class__.__name__ attrs = SubscriptionAttribute.find_by_class_realm_and_target( self.env, klass, 'ticket', component) sids = set(map(lambda x: (x['sid'], x['authenticated']), attrs)) for i in Subscription.find_by_sids_and_class(self.env, sids, klass): yield i.subscription_tuple()
def matches(self, event): if event.realm != 'ticket': return if event.category not in ('changed', 'created', 'attachment added'): return component = event.target['component'] if not component: return klass = self.__class__.__name__ attrs = SubscriptionAttribute.find_by_class_realm_and_target( self.env, klass, 'ticket', component) sids = set(map(lambda x: (x['sid'], x['authenticated']), attrs)) for i in Subscription.find_by_sids_and_class(self.env, sids, klass): yield i.subscription_tuple()
def matches(self, event): if event.realm != "wiki": return if event.category not in ("changed", "created", "attachment added", "deleted", "version deleted"): return klass = self.__class__.__name__ attrs = SubscriptionAttribute.find_by_class_and_realm(self.env, klass, "wiki") def match(pattern): for raw in pattern["target"].split(" "): if raw != "": pat = urllib.unquote(raw).replace("*", ".*") if re.match(pat, event.target.name): return True sids = set(map(lambda x: (x["sid"], x["authenticated"]), filter(match, attrs))) for i in Subscription.find_by_sids_and_class(self.env, sids, klass): yield i.subscription_tuple()
def matches(self, event): if event.realm != "ticket": return if event.category not in ('created', 'changed', 'attachment added'): return if not event.author or event.author == 'anonymous': return if re.match(r'^[^@]+@.+', event.author): sid, auth, addr = None, 0, event.author else: sid, auth, addr = event.author, 1, None # Default subscription for s in self.default_subscriptions(): yield (s[0], s[1], sid, auth, addr, None, s[2], s[3]) if sid: klass = self.__class__.__name__ for s in Subscription.find_by_sids_and_class(self.env, ((sid,auth),), klass): yield s.subscription_tuple()
def matches(self, event): if event.realm != "ticket": return if event.category not in ("changed", "created", "attachment added"): return klass = self.__class__.__name__ ticket = event.target sids = set() cc = event.target["cc"] or "" for chunk in re.split("\s|,", cc): chunk = chunk.strip() if chunk and chunk.startswith("@"): member = None grp = chunk[1:] attrs = SubscriptionAttribute.find_by_class_realm_and_target(self.env, klass, "ticket", grp) sids.update(set(map(lambda x: (x["sid"], x["authenticated"]), attrs))) for i in Subscription.find_by_sids_and_class(self.env, sids, klass): yield i.subscription_tuple()
def matches(self, event): if event.realm != 'wiki': return if event.category not in ('changed', 'created', 'attachment added', 'deleted', 'version deleted'): return klass = self.__class__.__name__ attrs = SubscriptionAttribute.find_by_class_and_realm( self.env, klass, 'wiki') def match(pattern): for raw in pattern['target'].split(' '): if raw != '': pat = urllib.unquote(raw).replace('*', '.*') if re.match(pat, event.target.name): return True sids = set(map(lambda x: (x['sid'],x['authenticated']), filter(match, attrs))) for i in Subscription.find_by_sids_and_class(self.env, sids, klass): yield i.subscription_tuple()
def matches(self, event): if event.realm != 'ticket': return if event.category not in ('changed', 'created', 'attachment added'): return klass = self.__class__.__name__ sids = set() cc = event.target['cc'] or '' for chunk in re.split('\s|,', cc): chunk = chunk.strip() if chunk and chunk.startswith('@'): grp = chunk[1:] attrs = SubscriptionAttribute.\ find_by_class_realm_and_target(self.env, klass, 'ticket', grp) sids.update( set(map(lambda x: (x['sid'], x['authenticated']), attrs))) for i in Subscription.find_by_sids_and_class(self.env, sids, klass): yield i.subscription_tuple()
def matches(self, event): if event.realm != 'ticket': return if event.category not in ('changed', 'created', 'attachment added'): return klass = self.__class__.__name__ sids = set() cc = event.target['cc'] or '' for chunk in re.split('\s|,', cc): chunk = chunk.strip() if chunk and chunk.startswith('@'): grp = chunk[1:] attrs = SubscriptionAttribute.\ find_by_class_realm_and_target(self.env, klass, 'ticket', grp) sids.update(set(map( lambda x: (x['sid'], x['authenticated']), attrs))) for i in Subscription.find_by_sids_and_class(self.env, sids, klass): yield i.subscription_tuple()