|
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)
|
|
|