Revision 05617ab9 snf-astakos-app/astakos/im/tables.py

b/snf-astakos-app/astakos/im/tables.py
44 44

  
45 45
from astakos.im.models import *
46 46
from astakos.im.templatetags.filters import truncatename
47
from astakos.im.functions import do_join_project_checks
47
from astakos.im.functions import do_join_project_checks, \
48
                                 do_leave_project_checks
48 49

  
49 50
DEFAULT_DATE_FORMAT = "d/m/Y"
50 51

  
......
184 185
    url, action, confirm, prompt = '', '', True, ''
185 186
    append_url = ''
186 187

  
187
    can_join = True
188

  
189
    try:
190
        project = Project.objects.get(application=application)
191
        do_join_project_checks(project)
192
    except (PermissionDenied, Project.DoesNotExist), e:
193
        can_join = False
194

  
195
    if can_join:
196
        if user.is_project_accepted_member(application):
197
            url = 'astakos.im.views.project_leave'
198
            action = _('Leave')
199
            confirm = True
200
            prompt = _('Are you sure you want to leave from the project ?')
201
        elif not user.is_project_member(application):
202
            url = 'astakos.im.views.project_join'
203
            action = _('Join')
204
            confirm = True
205
            prompt = _('Are you sure you want to join this project ?')
206
        else:
207
            action = ''
208
            confirm = False
209
            url = None
188
    can_join = can_leave = False
189
    member_status = application.user_status(user)
190
    project = application.get_project()
191

  
192
    if project:
193
        try:
194
            do_join_project_checks(project)
195
            can_join = True
196
        except PermissionDenied:
197
            pass
198

  
199
        try:
200
            do_leave_project_checks(project)
201
            can_leave = True
202
        except PermissionDenied:
203
            pass
204

  
205
    if can_leave and user.is_project_accepted_member(application):
206
        url = 'astakos.im.views.project_leave'
207
        action = _('Leave')
208
        confirm = True
209
        prompt = _('Are you sure you want to leave from the project ?')
210
    elif can_join and user.is_project_member(application):
211
        url = 'astakos.im.views.project_join'
212
        action = _('Join')
213
        confirm = True
214
        prompt = _('Are you sure you want to join this project ?')
215
    else:
216
        action = ''
217
        confirm = False
218
        url = None
210 219

  
211 220
    url = reverse(url, args=(application.pk, )) + append_url if url else ''
212 221
    return {'action': action,
......
229 238
        super(UserTable, self).__init__(*args, **kwargs)
230 239

  
231 240

  
232
def project_name_append(record, column):
233
    try:
234
        if record.projectapplication and column.table.user.owns_project(record):
235
            if record.state == ProjectApplication.APPROVED:
236
                return mark_safe("<br /><i class='tiny'>%s</i>" % _('modifications pending'))
237
            else:
238
                return u''
239
        else:
240
            return u''
241
    except:
242
        return u''
241
def project_name_append(application, column):
242
    if application.has_pending_modifications():
243
        return mark_safe("<br /><i class='tiny'>%s</i>" % \
244
                                                _('modifications pending'))
245
    return u''
243 246

  
244 247
# Table classes
245 248
class UserProjectApplicationsTable(UserTable):

Also available in: Unified diff