def process_admin_request(self, req, cat, page, path_info): mgr = SubscriptionManager(self.env) types = list(mgr.get_subscribables()) subscriptions = {} for type in types: subscriptions[type] = list(mgr.get_subscriptions(type)) if req.method == 'POST': if req.args.get('add'): env = req.args.get('env') type = req.args.get('type') assert type in types # Verify that this looks like an env try: open_env(env) except IOError: raise TracError, "'%s' is not a valid Trac environment"%env if env not in subscriptions[type]: mgr.subscribe_to(env, type) req.redirect(req.href.admin(cat,page)) req.hdf['tracforge.types'] = types req.hdf['tracforge.subscriptions'] = subscriptions return 'tracforge_subscriptions_admin.cs', 'text/html'
def process_admin_request(self, req, cat, page, path_info): mgr = SubscriptionManager(self.env) types = list(mgr.get_subscribables()) subscriptions = {} for type in types: subscriptions[type] = list(mgr.get_subscriptions(type)) if req.method == 'POST': if req.args.get('add'): env = req.args.get('env') type = req.args.get('type') assert type in types # Verify that this looks like an env try: open_env(env) except IOError: raise TracError, "'%s' is not a valid Trac environment" % env if env not in subscriptions[type]: mgr.subscribe_to(env, type) req.redirect(req.href.admin(cat, page)) req.hdf['tracforge.types'] = types req.hdf['tracforge.subscriptions'] = subscriptions return 'tracforge_subscriptions_admin.cs', 'text/html'
def get_timeline_events(self, req, start, stop, filters): if 'remote_changeset' in filters: for source in SubscriptionManager(self.env).get_subscriptions('changeset'): env = open_env(source) # Try to isolate the base URL to the other Trac base = '' if env in self.env_map: # First use our own mapping base = self.env_map[base] else: env_basename = os.path.split(env.path.rstrip(os.sep))[1] if self.config.get('intertrac', env_basename+'.url'): # Then try using an intertrac link base = self.config.get('intertrac', env_basename+'.url') else: # And finally look for a sibling path self.log.debug('ChangesetSubscribable: Falling back to sibling computation, base is %s'%env_basename) url = req.href().rstrip('/').split('/') url.pop() url.append(env_basename) base = '/'.join(url) self.log.debug('ChangesetSubscribable: Computed base URL of %s to be %s'%(env.path, base)) new_href = Href(base) env.href = new_href new_req = PseudoRequest(req, new_href) cset = ChangesetModule(env) try: for ret in cset.get_timeline_events(new_req, start, stop, ['changeset']): kind, href, title, date, author, message = ret title += Markup(' from %s',env.config.get('project','name',env.path)) yield (kind, href, title, date, author, message) except Exception, e: self.log.debug('ChangesetSubscribable: %s'%traceback.format_exc()) raise e
def get_timeline_events(self, req, start, stop, filters): if 'remote_changeset' in filters: for source in SubscriptionManager( self.env).get_subscriptions('changeset'): env = open_env(source) # Try to isolate the base URL to the other Trac base = '' if env in self.env_map: # First use our own mapping base = self.env_map[base] else: env_basename = os.path.split(env.path.rstrip(os.sep))[1] if self.config.get( 'intertrac', env_basename + '.url'): # Then try using an intertrac link base = self.config.get('intertrac', env_basename + '.url') else: # And finally look for a sibling path self.log.debug( 'ChangesetSubscribable: Falling back to sibling computation, base is %s' % env_basename) url = req.href().rstrip('/').split('/') url.pop() url.append(env_basename) base = '/'.join(url) self.log.debug( 'ChangesetSubscribable: Computed base URL of %s to be %s' % (env.path, base)) new_href = Href(base) env.href = new_href new_req = PseudoRequest(req, new_href) cset = ChangesetModule(env) try: for ret in cset.get_timeline_events( new_req, start, stop, ['changeset']): kind, href, title, date, author, message = ret title += Markup( ' from %s', env.config.get('project', 'name', env.path)) yield (kind, href, title, date, author, message) except Exception, e: self.log.debug('ChangesetSubscribable: %s' % traceback.format_exc()) raise e