Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / tables.py @ e6d284ef

History | View | Annotate | Download (2.4 kB)

1 5550bcfb Kostas Papadimitriou
import django_tables2 as tables
2 5550bcfb Kostas Papadimitriou
3 5550bcfb Kostas Papadimitriou
from django.utils.translation import ugettext as _
4 5550bcfb Kostas Papadimitriou
from django_tables2 import A
5 5550bcfb Kostas Papadimitriou
from astakos.im.models import *
6 a5cef8d0 Kostas Papadimitriou
from django.utils.safestring import mark_safe
7 5550bcfb Kostas Papadimitriou
8 5550bcfb Kostas Papadimitriou
DEFAULT_DATE_FORMAT = "d/m/Y"
9 5550bcfb Kostas Papadimitriou
10 5550bcfb Kostas Papadimitriou
11 5550bcfb Kostas Papadimitriou
MEMBER_STATUS_DISPLAY = {
12 5550bcfb Kostas Papadimitriou
    100: _('Owner'),
13 5550bcfb Kostas Papadimitriou
      0: _('Requested'),
14 5550bcfb Kostas Papadimitriou
      1: _('Pending'),
15 5550bcfb Kostas Papadimitriou
      2: _('Accepted'),
16 5550bcfb Kostas Papadimitriou
      3: _('Removing'),
17 5550bcfb Kostas Papadimitriou
      4: _('Removed'),
18 5550bcfb Kostas Papadimitriou
     -1: _('Unregistered'),
19 5550bcfb Kostas Papadimitriou
}
20 5550bcfb Kostas Papadimitriou
21 5550bcfb Kostas Papadimitriou
class UserProjectApplicationsTable(tables.Table):
22 5550bcfb Kostas Papadimitriou
23 5550bcfb Kostas Papadimitriou
    def __init__(self, *args, **kwargs):
24 5550bcfb Kostas Papadimitriou
        self.user = None
25 5550bcfb Kostas Papadimitriou
26 5550bcfb Kostas Papadimitriou
        if 'request' in kwargs and kwargs.get('request').user:
27 5550bcfb Kostas Papadimitriou
            self.user = kwargs.get('request').user
28 5550bcfb Kostas Papadimitriou
29 5550bcfb Kostas Papadimitriou
        if 'user' in kwargs:
30 5550bcfb Kostas Papadimitriou
            self.user = kwargs.pop('user')
31 5550bcfb Kostas Papadimitriou
32 5550bcfb Kostas Papadimitriou
        super(UserProjectApplicationsTable, self).__init__(*args, **kwargs)
33 5550bcfb Kostas Papadimitriou
34 5550bcfb Kostas Papadimitriou
    name = tables.LinkColumn('astakos.im.views.project_detail', args=(A('pk'),))
35 5550bcfb Kostas Papadimitriou
    issue_date = tables.DateColumn(format=DEFAULT_DATE_FORMAT)
36 5550bcfb Kostas Papadimitriou
    start_date = tables.DateColumn(format=DEFAULT_DATE_FORMAT)
37 e6d284ef Olga Brani
    membership_status = tables.Column(verbose_name=_("Status"), empty_values=(),
38 e6d284ef Olga Brani
                                      orderable=False)
39 2743e261 Kostas Papadimitriou
    members_count = tables.Column(verbose_name=_("Enrolled"), default=0,
40 a5cef8d0 Kostas Papadimitriou
                                  sortable=False)
41 e6d284ef Olga Brani
    
42 5550bcfb Kostas Papadimitriou
43 2743e261 Kostas Papadimitriou
44 e6d284ef Olga Brani
    def render_membership_status(self, record, *args, **kwargs):
45 e6d284ef Olga Brani
        status = record.member_status(self.user)
46 e6d284ef Olga Brani
        if status == 100:
47 e6d284ef Olga Brani
            return record.state
48 e6d284ef Olga Brani
        else:
49 e6d284ef Olga Brani
            return MEMBER_STATUS_DISPLAY.get(status, 'Unknown')
50 5550bcfb Kostas Papadimitriou
51 5550bcfb Kostas Papadimitriou
    class Meta:
52 5550bcfb Kostas Papadimitriou
        model = ProjectApplication
53 e6d284ef Olga Brani
        fields = ('name', 'membership_status', 'issue_date', 'start_date', 'members_count')
54 2743e261 Kostas Papadimitriou
        attrs = {'id': 'projects-list', 'class': 'my-projects alt-style'}
55 2743e261 Kostas Papadimitriou
        caption = _('My projects')
56 2743e261 Kostas Papadimitriou
        template = "im/table_render.html"
57 2743e261 Kostas Papadimitriou
58 2743e261 Kostas Papadimitriou
59 2743e261 Kostas Papadimitriou
class ProjectApplicationMembersTable(tables.Table):
60 2743e261 Kostas Papadimitriou
    name = tables.Column(accessor="person.last_name", verbose_name=_('Name'))
61 2743e261 Kostas Papadimitriou
    status = tables.Column(accessor="state", verbose_name=_('Status'))
62 2743e261 Kostas Papadimitriou
63 2743e261 Kostas Papadimitriou
64 2743e261 Kostas Papadimitriou
    def render_name(self, value, record, *args, **kwargs):
65 2743e261 Kostas Papadimitriou
        return record.person.last_name
66 2743e261 Kostas Papadimitriou
67 2743e261 Kostas Papadimitriou
    def render_status(self, value, *args, **kwargs):
68 2743e261 Kostas Papadimitriou
        return MEMBER_STATUS_DISPLAY.get(value, 'Unknown')
69 2743e261 Kostas Papadimitriou
70 2743e261 Kostas Papadimitriou
    class Meta:
71 2743e261 Kostas Papadimitriou
        template = "im/table_render.html"
72 2743e261 Kostas Papadimitriou
        model = ProjectMembership
73 2743e261 Kostas Papadimitriou
        fields = ('name', 'status')
74 2743e261 Kostas Papadimitriou
        attrs = {'id': 'members-table', 'class': 'members-table alt-style'}