|
a/Allura/allura/lib/macro.py |
|
b/Allura/allura/lib/macro.py |
|
... |
|
... |
134 |
@macro('neighborhood-wiki')
|
134 |
@macro('neighborhood-wiki')
|
135 |
def projects(
|
135 |
def projects(
|
136 |
category=None,
|
136 |
category=None,
|
137 |
display_mode='grid',
|
137 |
display_mode='grid',
|
138 |
sort='last_updated',
|
138 |
sort='last_updated',
|
|
|
139 |
show_total=False,
|
139 |
limit=100,
|
140 |
limit=100,
|
140 |
labels=''):
|
141 |
labels=''):
|
141 |
from allura.lib.widgets.project_list import ProjectList
|
142 |
from allura.lib.widgets.project_list import ProjectList
|
142 |
from allura import model as M
|
143 |
from allura import model as M
|
143 |
q = dict(
|
144 |
q = dict(
|
|
... |
|
... |
149 |
q['$or'] = [{'labels': {'$all': l.split(',')}} for l in or_labels]
|
150 |
q['$or'] = [{'labels': {'$all': l.split(',')}} for l in or_labels]
|
150 |
if category is not None:
|
151 |
if category is not None:
|
151 |
category = M.ProjectCategory.query.get(name=category)
|
152 |
category = M.ProjectCategory.query.get(name=category)
|
152 |
if category is not None:
|
153 |
if category is not None:
|
153 |
q['category_id'] = category._id
|
154 |
q['category_id'] = category._id
|
154 |
pq = M.Project.query.find(q)
|
155 |
pq = M.Project.query.find(q).limit(int(limit))
|
155 |
pq = pq.limit(int(limit))
|
|
|
156 |
if sort == 'alpha':
|
156 |
if sort == 'alpha':
|
157 |
pq.sort('name')
|
157 |
pq.sort('name')
|
158 |
else:
|
158 |
else:
|
159 |
pq.sort('last_updated', pymongo.DESCENDING)
|
159 |
pq.sort('last_updated', pymongo.DESCENDING)
|
160 |
pl = ProjectList()
|
160 |
pl = ProjectList()
|
161 |
g.resource_manager.register(pl)
|
161 |
g.resource_manager.register(pl)
|
162 |
response = pl.display(projects=pq.all(), display_mode=display_mode)
|
162 |
response = pl.display(projects=pq.all(), display_mode=display_mode)
|
|
|
163 |
if show_total:
|
|
|
164 |
total = 0
|
|
|
165 |
for p in M.Project.query.find(q):
|
|
|
166 |
if h.has_access(p, 'read')():
|
|
|
167 |
total = total + 1
|
|
|
168 |
response = '<p class="macro_projects_total">%s Projects</p>%s' % (total,response)
|
163 |
return response
|
169 |
return response
|
164 |
|
170 |
|
165 |
@macro()
|
171 |
@macro()
|
166 |
def download_button(project=None, **kw):
|
172 |
def download_button(project=None, **kw):
|
167 |
from allura import model as M
|
173 |
from allura import model as M
|