Revision 8fb8d0cf snf-astakos-app/astakos/im/tables.py
b/snf-astakos-app/astakos/im/tables.py | ||
---|---|---|
148 | 148 |
return self.prompt(record, table) |
149 | 149 |
return self.prompt |
150 | 150 |
|
151 |
def get_template_context(self, record, table, value, bound_column, **kwargs): |
|
151 |
def get_template_context(self, record, table, value, bound_column, |
|
152 |
**kwargs): |
|
152 | 153 |
context = {'default': bound_column.default, |
153 | 154 |
'record': record, |
154 | 155 |
'value': value, |
... | ... | |
157 | 158 |
'prompt': self.get_prompt(record, table), |
158 | 159 |
'action': self.get_action(record, table), |
159 | 160 |
'confirm': self.get_confirm(record, table) |
160 |
} |
|
161 |
}
|
|
161 | 162 |
|
162 | 163 |
# decide whether to return dict or a list of dicts in case we want to |
163 | 164 |
# display multiple actions within a cell. |
... | ... | |
248 | 249 |
|
249 | 250 |
super(UserTable, self).__init__(*args, **kwargs) |
250 | 251 |
|
252 |
|
|
251 | 253 |
def project_name_append(application, column): |
252 | 254 |
if application.has_pending_modifications(): |
253 |
return mark_safe("<br /><i class='tiny'>%s</i>" % \
|
|
254 |
_('modifications pending'))
|
|
255 |
return mark_safe("<br /><i class='tiny'>%s</i>" % |
|
256 |
_('modifications pending')) |
|
255 | 257 |
return u'' |
256 | 258 |
|
259 |
|
|
257 | 260 |
# Table classes |
258 | 261 |
class UserProjectApplicationsTable(UserTable): |
259 | 262 |
caption = _('My projects') |
... | ... | |
262 | 265 |
coerce=lambda x: truncatename(x, 25), |
263 | 266 |
append=project_name_append, |
264 | 267 |
args=(A('chain'),)) |
265 |
issue_date = tables.DateColumn(verbose_name=_('Application'), format=DEFAULT_DATE_FORMAT) |
|
268 |
issue_date = tables.DateColumn(verbose_name=_('Application'), |
|
269 |
format=DEFAULT_DATE_FORMAT) |
|
266 | 270 |
start_date = tables.DateColumn(format=DEFAULT_DATE_FORMAT) |
267 |
end_date = tables.DateColumn(verbose_name=_('Expiration'), format=DEFAULT_DATE_FORMAT) |
|
271 |
end_date = tables.DateColumn(verbose_name=_('Expiration'), |
|
272 |
format=DEFAULT_DATE_FORMAT) |
|
268 | 273 |
members_count = tables.Column(verbose_name=_("Members"), default=0, |
269 | 274 |
orderable=False) |
270 |
membership_status = tables.Column(verbose_name=_("Status"), empty_values=(), |
|
275 |
membership_status = tables.Column(verbose_name=_("Status"), |
|
276 |
empty_values=(), |
|
271 | 277 |
orderable=False) |
272 | 278 |
project_action = RichLinkColumn(verbose_name=_('Action'), |
273 | 279 |
extra_context=action_extra_context, |
274 | 280 |
orderable=False) |
275 | 281 |
|
276 |
|
|
277 | 282 |
def render_membership_status(self, record, *args, **kwargs): |
278 | 283 |
if self.user.owns_application(record) or self.user.is_project_admin(): |
279 | 284 |
return record.project_state_display() |
... | ... | |
293 | 298 |
|
294 | 299 |
c = project.count_pending_memberships() |
295 | 300 |
if c > 0: |
296 |
pending_members_url = reverse('project_pending_members', |
|
301 |
pending_members_url = reverse( |
|
302 |
'project_pending_members', |
|
297 | 303 |
kwargs={'chain_id': application.chain}) |
298 | 304 |
|
299 |
pending_members = "<i class='tiny'> - %d %s</i>" % (c, _('pending')) |
|
300 |
if self.user.owns_application(record) or self.user.is_project_admin(): |
|
301 |
pending_members = "<i class='tiny'>"+" - <a href='%s'>%d %s</a></i>" % ( |
|
302 |
pending_members_url,c, _('pending')) |
|
305 |
pending_members = "<i class='tiny'> - %d %s</i>" % ( |
|
306 |
c, _('pending')) |
|
307 |
if ( |
|
308 |
self.user.owns_application(record) or |
|
309 |
self.user.is_project_admin() |
|
310 |
): |
|
311 |
pending_members = ("<i class='tiny'>" + |
|
312 |
" - <a href='%s'>%d %s</a></i>" % |
|
313 |
(pending_members_url, c, _('pending'))) |
|
303 | 314 |
append = mark_safe(pending_members) |
304 |
members_url = reverse('project_approved_members',
|
|
305 |
kwargs={'chain_id': application.chain}) |
|
315 |
members_url = reverse('project_approved_members', |
|
316 |
kwargs={'chain_id': application.chain})
|
|
306 | 317 |
members_count = record.members_count() |
307 | 318 |
if self.user.owns_application(record) or self.user.is_project_admin(): |
308 | 319 |
members_count = '<a href="%s">%d</a>' % (members_url, |
309 |
members_count) |
|
320 |
members_count)
|
|
310 | 321 |
return mark_safe(str(members_count) + append) |
311 |
|
|
322 |
|
|
312 | 323 |
class Meta: |
313 | 324 |
model = ProjectApplication |
314 |
fields = ('name', 'membership_status', 'issue_date', 'end_date',
|
|
325 |
fields = ('name', 'membership_status', 'issue_date', 'end_date', |
|
315 | 326 |
'members_count') |
316 | 327 |
attrs = {'id': 'projects-list', 'class': 'my-projects alt-style'} |
317 | 328 |
template = "im/table_render.html" |
318 | 329 |
empty_text = _('No projects') |
319 | 330 |
exclude = ('start_date', ) |
320 | 331 |
|
332 |
|
|
321 | 333 |
class ProjectModificationApplicationsTable(UserProjectApplicationsTable): |
322 | 334 |
name = LinkColumn('astakos.im.views.project_detail', |
323 | 335 |
verbose_name=_('Action'), |
324 |
coerce= lambda x: 'review',
|
|
336 |
coerce=lambda x: 'review', |
|
325 | 337 |
args=(A('pk'),)) |
338 |
|
|
326 | 339 |
class Meta: |
327 | 340 |
attrs = {'id': 'projects-list', 'class': 'my-projects alt-style'} |
328 | 341 |
fields = ('issue_date', 'membership_status') |
329 | 342 |
exclude = ('start_date', 'end_date', 'members_count', 'project_action') |
330 | 343 |
|
344 |
|
|
331 | 345 |
def member_action_extra_context(membership, table, col): |
332 | 346 |
|
333 | 347 |
context = [] |
... | ... | |
350 | 364 |
prompts = [_('Are you sure you want to remove this member?')] |
351 | 365 |
confirms = [True, True] |
352 | 366 |
|
353 |
|
|
354 | 367 |
for i, url in enumerate(urls): |
355 | 368 |
context.append(dict(url=reverse(url, args=(table.project.pk, |
356 | 369 |
membership.pk)), |
... | ... | |
358 | 371 |
confirm=confirms[i])) |
359 | 372 |
return context |
360 | 373 |
|
374 |
|
|
361 | 375 |
class ProjectMembersTable(UserTable): |
362 | 376 |
input = "<input type='checkbox' name='all-none'/>" |
363 |
check = tables.Column(accessor="person.id",verbose_name =mark_safe(input), orderable=False) |
|
364 |
email = tables.Column(accessor="person.email", verbose_name=_('Email')) |
|
377 |
check = tables.Column(accessor="person.id", verbose_name=mark_safe(input), |
|
378 |
orderable=False) |
|
379 |
email = tables.Column(accessor="person.email", verbose_name=_('Email')) |
|
365 | 380 |
status = tables.Column(accessor="state", verbose_name=_('Status')) |
366 | 381 |
project_action = RichLinkColumn(verbose_name=_('Action'), |
367 | 382 |
extra_context=member_action_extra_context, |
368 | 383 |
orderable=False) |
369 | 384 |
|
370 |
|
|
371 | 385 |
def __init__(self, project, *args, **kwargs): |
372 | 386 |
self.project = project |
373 | 387 |
super(ProjectMembersTable, self).__init__(*args, **kwargs) |
... | ... | |
375 | 389 |
self.exclude = ('project_action', ) |
376 | 390 |
|
377 | 391 |
def render_check(self, value, record, *args, **kwargs): |
378 |
checkbox = "<input type='checkbox' value='%d' name ='actions'>" % record.id |
|
379 |
return mark_safe(checkbox) |
|
392 |
checkbox = ("<input type='checkbox' value='%d' name ='actions'>" % |
|
393 |
record.id) |
|
394 |
return mark_safe(checkbox) |
|
380 | 395 |
|
381 | 396 |
def render_status(self, value, record, *args, **kwargs): |
382 | 397 |
return record.state_display() |
Also available in: Unified diff