Revision 9efd0075 snf-astakos-app/astakos/im/templatetags/filters.py
b/snf-astakos-app/astakos/im/templatetags/filters.py | ||
---|---|---|
40 | 40 |
from django import template |
41 | 41 |
from django.core.paginator import Paginator, EmptyPage |
42 | 42 |
from django.db.models.query import QuerySet |
43 |
from django.utils.safestring import mark_safe |
|
43 | 44 |
|
44 | 45 |
from synnefo.lib.ordereddict import OrderedDict |
45 | 46 |
|
46 | 47 |
from astakos.im import settings |
47 | 48 |
from astakos.im.models import ProjectResourceGrant |
49 |
from astakos.im.views import util as views_util |
|
50 |
from astakos.im import util |
|
48 | 51 |
|
49 | 52 |
register = template.Library() |
50 | 53 |
|
... | ... | |
180 | 183 |
|
181 | 184 |
@register.filter |
182 | 185 |
def truncatename(v, max=18, append="..."): |
183 |
length = len(v) |
|
184 |
if length > max: |
|
185 |
return v[:max] + append |
|
186 |
else: |
|
187 |
return v |
|
186 |
util.truncatename(v, max, append) |
|
188 | 187 |
|
189 | 188 |
|
190 | 189 |
@register.filter |
191 |
def resource_groups(project_definition): |
|
192 |
try: |
|
193 |
grants = project_definition.projectresourcegrant_set |
|
194 |
return grants.values_list('resource__group', flat=True) |
|
195 |
except: |
|
196 |
return () |
|
190 |
def selected_resource_groups(project_or_app): |
|
191 |
if not project_or_app: |
|
192 |
return [] |
|
193 |
|
|
194 |
grants = project_or_app.resource_set |
|
195 |
resources = grants.values_list('resource__name', flat=True) |
|
196 |
return map(lambda r: r.split(".")[0], resources) |
|
197 | 197 |
|
198 | 198 |
|
199 | 199 |
@register.filter |
200 |
def resource_grants(project_definition):
|
|
200 |
def resource_grants(project_or_app):
|
|
201 | 201 |
try: |
202 |
grants = project_definition.projectresourcegrant_set
|
|
202 |
grants = project_or_app.resource_set
|
|
203 | 203 |
grants = grants.values_list( |
204 |
'resource__name', |
|
205 |
'member_capacity' |
|
206 |
) |
|
207 |
return dict((e[0], e[1]) for e in grants) |
|
204 |
'resource__name', 'member_capacity', 'project_capacity') |
|
205 |
return dict((e[0], {'member':e[1], 'project':e[2]}) for e in grants) |
|
208 | 206 |
except: |
209 | 207 |
return {} |
208 |
|
|
209 |
|
|
210 |
def get_resource_grant(project_or_app, rname, capacity_for): |
|
211 |
if project_or_app is None: |
|
212 |
return None |
|
213 |
|
|
214 |
resource_set = project_or_app.resource_set |
|
215 |
if not resource_set.filter(resource__name=rname).count(): |
|
216 |
return None |
|
217 |
|
|
218 |
resource = resource_set.get(resource__name=rname) |
|
219 |
return getattr(resource, '%s_capacity' % capacity_for) |
|
220 |
|
|
221 |
|
|
222 |
@register.filter |
|
223 |
def get_member_resource_grant_value(project_or_app, rname): |
|
224 |
return get_resource_grant(project_or_app, rname, "member") |
|
225 |
|
|
226 |
|
|
227 |
@register.filter |
|
228 |
def get_project_resource_grant_value(project_or_app, rname): |
|
229 |
return get_resource_grant(project_or_app, rname, "project") |
|
230 |
|
|
231 |
|
|
232 |
@register.filter |
|
233 |
def resource_diff(r, member_or_project): |
|
234 |
if not hasattr(r, 'display_project_diff'): |
|
235 |
return '' |
|
236 |
|
|
237 |
project, member = r.display_project_diff() |
|
238 |
diff = dict(zip(['project', 'member'], |
|
239 |
r.display_project_diff())).get(member_or_project) |
|
240 |
tpl = '<span class="policy-diff %s">(%s)</span>' |
|
241 |
cls = 'red' if diff.startswith("-") else 'green' |
|
242 |
return mark_safe(tpl % (cls, diff)) |
|
243 |
|
|
244 |
|
|
245 |
@register.filter |
|
246 |
def sorted_resources(resources_set): |
|
247 |
return views_util.sorted_resources(resources_set) |
|
248 |
|
|
249 |
|
|
250 |
@register.filter |
|
251 |
def is_pending_app(app): |
|
252 |
if not app: |
|
253 |
return False |
|
254 |
return app.state in [app.PENDING] |
|
255 |
|
|
256 |
|
|
257 |
@register.filter |
|
258 |
def is_denied_app(app): |
|
259 |
if not app: |
|
260 |
return False |
|
261 |
return app.state in [app.DENIED] |
Also available in: Unified diff