Statistics
| Branch: | Tag: | Revision:

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

History | View | Annotate | Download (2.4 kB)

1
import django_tables2 as tables
2

    
3
from django.utils.translation import ugettext as _
4
from django_tables2 import A
5
from astakos.im.models import *
6
from django.utils.safestring import mark_safe
7

    
8
DEFAULT_DATE_FORMAT = "d/m/Y"
9

    
10

    
11
MEMBER_STATUS_DISPLAY = {
12
    100: _('Owner'),
13
      0: _('Requested'),
14
      1: _('Pending'),
15
      2: _('Accepted'),
16
      3: _('Removing'),
17
      4: _('Removed'),
18
     -1: _('Unregistered'),
19
}
20

    
21
class UserProjectApplicationsTable(tables.Table):
22

    
23
    def __init__(self, *args, **kwargs):
24
        self.user = None
25

    
26
        if 'request' in kwargs and kwargs.get('request').user:
27
            self.user = kwargs.get('request').user
28

    
29
        if 'user' in kwargs:
30
            self.user = kwargs.pop('user')
31

    
32
        super(UserProjectApplicationsTable, self).__init__(*args, **kwargs)
33

    
34
    name = tables.LinkColumn('astakos.im.views.project_detail', args=(A('pk'),))
35
    issue_date = tables.DateColumn(format=DEFAULT_DATE_FORMAT)
36
    start_date = tables.DateColumn(format=DEFAULT_DATE_FORMAT)
37
    membership_status = tables.Column(verbose_name=_("Status"), empty_values=(),
38
                                      orderable=False)
39
    members_count = tables.Column(verbose_name=_("Enrolled"), default=0,
40
                                  sortable=False)
41
    
42

    
43

    
44
    def render_membership_status(self, record, *args, **kwargs):
45
        status = record.member_status(self.user)
46
        if status == 100:
47
            return record.state
48
        else:
49
            return MEMBER_STATUS_DISPLAY.get(status, 'Unknown')
50

    
51
    class Meta:
52
        model = ProjectApplication
53
        fields = ('name', 'membership_status', 'issue_date', 'start_date', 'members_count')
54
        attrs = {'id': 'projects-list', 'class': 'my-projects alt-style'}
55
        caption = _('My projects')
56
        template = "im/table_render.html"
57

    
58

    
59
class ProjectApplicationMembersTable(tables.Table):
60
    name = tables.Column(accessor="person.last_name", verbose_name=_('Name'))
61
    status = tables.Column(accessor="state", verbose_name=_('Status'))
62

    
63

    
64
    def render_name(self, value, record, *args, **kwargs):
65
        return record.person.last_name
66

    
67
    def render_status(self, value, *args, **kwargs):
68
        return MEMBER_STATUS_DISPLAY.get(value, 'Unknown')
69

    
70
    class Meta:
71
        template = "im/table_render.html"
72
        model = ProjectMembership
73
        fields = ('name', 'status')
74
        attrs = {'id': 'members-table', 'class': 'members-table alt-style'}
75