示例#1
0
    def expand_macro(self, formatter, name, content, args=None):
        """
        Returns the outcome from macro.
        Supported arguments:

        - count: Number of entries to show

        """
        req = formatter.req
        papi = Projects()
        userstore = get_userstore()

        # Parse optional arguments
        if args is None:
            args = parse_args(content)
            if len(args) > 1:
                args = args[1]

        featured_projects = papi.get_projects_for_rss('FEATURED',
                                                      limit_count=args.get(
                                                          'count', 5))

        data = {'featured_projects': featured_projects}
        return Chrome(self.env).render_template(req,
                                                'multiproject_featured.html',
                                                data,
                                                fragment=True)
示例#2
0
    def expand_macro(self, formatter, name, content, args=None):
        """
        Returns the outcome from macro.
        Supported arguments:

        - count: Number of entries to show

        """
        req = formatter.req
        papi = Projects()
        userstore = get_userstore()
        projects = []

        # Parse optional arguments
        if args is None:
            args = parse_args(content)
            if len(args) > 1:
                args = args[1]

        projects = papi.get_projects_for_rss('MOSTACTIVE',
                                             limit_count=args.get('count', 5),
                                             limit_activity=self.min_activity)

        return Chrome(self.env).render_template(req,
                                                'multiproject_active.html',
                                                {'active_projects': projects},
                                                fragment=True)
示例#3
0
    def process_request(self, req):
        """ Process request for listing, creating and removing projects
        """
        prjs = Projects()
        data = {}

        data['home'] = conf.url_home_path.rstrip('/') + "/rss"
        data['tracurl'] = conf.url_home_path.rstrip('/')

        # Having url_service here is probably a good idea. Otherwise RSS readers have no idea
        # where to fetch the relative path /project from.
        data['projroot'] = conf.url_service.rstrip('/')
        data['host'] = conf.domain_name
        data['url'] = req.path_info.rstrip('/').lstrip('/')

        if re.match(r'/rss/mostactive.xml$', req.path_info):
            data['projects'] = prjs.get_projects_for_rss('MOSTACTIVE',
                                                         limit_count=50)
            data['title'] = 'Most active public projects'

        elif re.match(r'/rss/newest.xml$', req.path_info):
            min_activity = self.config.getint('multiproject-projects',
                                              'min_activity', 0)
            data['projects'] = prjs.get_projects_for_rss(
                'NEWEST', limit_count=50, limit_activity=min_activity)
            data['title'] = 'Newest public projects'

        elif re.match(r'/rss/featured.xml$', req.path_info):
            data['projects'] = prjs.get_projects_for_rss('FEATURED',
                                                         limit_count=50)
            data['title'] = 'Featured projects'

        elif re.match(r'/rss/projects/.*.xml', req.path_info):
            username = req.path_info[req.path_info.rfind('/') + 1:-4]
            # username is validated in get_participated_public_projects
            data['projects'] = prjs.get_participated_public_projects(username)
            data['title'] = '%s\'s projects' % username

        else:
            data['projects'] = None

        # Support for both RSS 2.0 (default) and RSS 1.0 formats
        if 'rss10' == req.args.get('format', 'notset'):
            return "rss_feed_template.rss10", data, 'application/rss+xml'
        return "rss_feed_template.rss", data, 'application/rss+xml'
示例#4
0
    def _list_mostactive_public_projects(self, req):
        prjs = Projects()

        page_size = 25

        data = {}
        limit_start, page_size = self._add_rss_pagination(req, data, page_size)
        data['projects'] = prjs.get_projects_for_rss('MOSTACTIVE', limit_start=limit_start, limit_count=page_size)

        return 'rss_list.html', data, None
示例#5
0
    def _list_recent_public_projects(self, req):
        prjs = Projects()

        page_size = 25

        data = {}
        limit_start, page_size = self._add_rss_pagination(req, data, page_size)
        min_activity = self.config.getint('multiproject-projects', 'min_activity')
        data['projects'] = prjs.get_projects_for_rss('NEWEST', limit_start=limit_start, limit_count=page_size, limit_activity=min_activity)

        return 'rss_list.html', data, None
示例#6
0
    def process_request(self, req):
        """ Process request for listing, creating and removing projects
        """
        prjs = Projects()
        data = {}

        data['home'] = conf.url_home_path.rstrip('/') + "/rss"
        data['tracurl'] = conf.url_home_path.rstrip('/')

        # Having url_service here is probably a good idea. Otherwise RSS readers have no idea
        # where to fetch the relative path /project from.
        data['projroot'] = conf.url_service.rstrip('/')
        data['host'] = conf.domain_name
        data['url'] = req.path_info.rstrip('/').lstrip('/')

        if re.match (r'/rss/mostactive.xml$', req.path_info):
            data['projects'] = prjs.get_projects_for_rss('MOSTACTIVE', limit_count=50)
            data['title'] = 'Most active public projects'

        elif re.match (r'/rss/newest.xml$', req.path_info):
            min_activity = self.config.getint('multiproject-projects', 'min_activity', 0)
            data['projects'] = prjs.get_projects_for_rss('NEWEST', limit_count=50, limit_activity=min_activity)
            data['title'] = 'Newest public projects'

        elif re.match (r'/rss/featured.xml$', req.path_info):
            data['projects'] = prjs.get_projects_for_rss('FEATURED', limit_count=50)
            data['title'] = 'Featured projects'

        elif re.match(r'/rss/projects/.*.xml', req.path_info):
            username = req.path_info[req.path_info.rfind('/') + 1:-4]
            # username is validated in get_participated_public_projects
            data['projects'] = prjs.get_participated_public_projects(username)
            data['title'] = '%s\'s projects' % username

        else:
            data['projects'] = None

        # Support for both RSS 2.0 (default) and RSS 1.0 formats
        if 'rss10' == req.args.get('format', 'notset'):
            return "rss_feed_template.rss10", data, 'application/rss+xml'
        return "rss_feed_template.rss", data, 'application/rss+xml'
示例#7
0
    def _list_mostactive_public_projects(self, req):
        prjs = Projects()

        page_size = 25

        data = {}
        limit_start, page_size = self._add_rss_pagination(req, data, page_size)
        data['projects'] = prjs.get_projects_for_rss('MOSTACTIVE',
                                                     limit_start=limit_start,
                                                     limit_count=page_size)

        return 'rss_list.html', data, None
示例#8
0
    def _list_recent_public_projects(self, req):
        prjs = Projects()

        page_size = 25

        data = {}
        limit_start, page_size = self._add_rss_pagination(req, data, page_size)
        min_activity = self.config.getint('multiproject-projects',
                                          'min_activity')
        data['projects'] = prjs.get_projects_for_rss(
            'NEWEST',
            limit_start=limit_start,
            limit_count=page_size,
            limit_activity=min_activity)

        return 'rss_list.html', data, None
示例#9
0
    def expand_macro(self, formatter, name, content, args=None):
        """
        Returns the outcome from macro.
        Supported arguments:

        - count: Number of entries to show

        """
        req = formatter.req
        papi = Projects()
        userstore = get_userstore()
        projects = []

        # Parse optional arguments
        if args is None:
            args = parse_args(content)
            if len(args) > 1:
                args = args[1]

        min_activity = self.config.getint('multiproject-projects', 'min_activity')
        projects = papi.get_projects_for_rss('NEWEST', limit_count=args.get('count', 5), limit_activity=min_activity)
        return Chrome(self.env).render_template(req, 'multiproject_recent.html', {'recent_projects': projects}, fragment=True)
示例#10
0
    def expand_macro(self, formatter, name, content, args=None):
        """
        Returns the outcome from macro.
        Supported arguments:

        - count: Number of entries to show

        """
        req = formatter.req
        papi = Projects()
        userstore = get_userstore()

        # Parse optional arguments
        if args is None:
            args = parse_args(content)
            if len(args) > 1:
                args = args[1]

        featured_projects = papi.get_projects_for_rss('FEATURED', limit_count=args.get('count', 5))

        data = {
            'featured_projects': featured_projects
        }
        return Chrome(self.env).render_template(req, 'multiproject_featured.html', data, fragment=True)