Switch to unified view

a/Allura/allura/controllers/root.py b/Allura/allura/controllers/root.py
...
...
63
        n_url_prefix = '/%s/' % request.path.split('/')[1]
63
        n_url_prefix = '/%s/' % request.path.split('/')[1]
64
        n = M.Neighborhood.query.get(url_prefix=n_url_prefix)
64
        n = M.Neighborhood.query.get(url_prefix=n_url_prefix)
65
        if n and not n.url_prefix.startswith('//'):
65
        if n and not n.url_prefix.startswith('//'):
66
            n.bind_controller(self)
66
            n.bind_controller(self)
67
        self.browse = ProjectBrowseController()
67
        self.browse = ProjectBrowseController()
68
        self.allura_sitemap = SitemapIndexController()
69
        super(RootController, self).__init__()
68
        super(RootController, self).__init__()
70
69
71
    def _setup_request(self):
70
    def _setup_request(self):
72
        c.project = c.app = None
71
        c.project = c.app = None
73
        c.memoize_cache = {}
72
        c.memoize_cache = {}
...
...
93
        c.custom_sidebar_menu = [
92
        c.custom_sidebar_menu = [
94
            SitemapEntry(cat.label, '/browse/'+cat.name) for cat in categories
93
            SitemapEntry(cat.label, '/browse/'+cat.name) for cat in categories
95
        ]
94
        ]
96
        return dict(projects=psort,title="All Projects",text=None)
95
        return dict(projects=psort,title="All Projects",text=None)
97
96
98
class SitemapIndexController(object):
99
    projects_per_page = 1000
100
101
    @expose('jinja:allura:templates/sitemap_index.xml')
102
    def index(self, **kw):
103
        base_url = config.get('base_url', 'sourceforge.net')
104
        num_projects = M.Project.query.find().count()
105
        now = datetime.utcnow().date()
106
        return dict(
107
            now=now,
108
            sitemaps = [
109
                '%s/sitemap/%d' % (base_url, offset)
110
                for offset in range(0, num_projects, self.projects_per_page) ])
111
112
    @expose()
113
    def _lookup(self, offset, *remainder):
114
        return SitemapController(int(offset), self.projects_per_page), remainder
115
116
class SitemapController(object):
117
118
    def __init__(self, offset, limit):
119
        self.offset, self.limit = offset, limit
120
121
    @expose('jinja:allura:templates/sitemap.xml')
122
    def index(self, **kw):
123
        now = datetime.utcnow().date()
124
        base_url = config.get('base_url', 'sourceforge.net')
125
        locs = []
126
        for p in M.Project.query.find().skip(self.offset).limit(self.limit):
127
            c.project = p
128
            locs += [  base_url + s.url
129
                       for s in p.sitemap() ]
130
        return dict(
131
            now=now,
132
            locs=locs)