Revision b10ceccd snf-astakos-app/astakos/im/tables.py

b/snf-astakos-app/astakos/im/tables.py
182 182
    user = table.user
183 183
    url, action, confirm, prompt = '', '', True, ''
184 184

  
185
    membership = user.get_membership(project)
185
    membership = table.memberships.get(project.id)
186 186
    if membership is not None:
187 187
        allowed = membership_allowed_actions(membership, user)
188 188
        if 'leave' in allowed:
......
198 198
            confirm = True
199 199
            prompt = _('Are you sure you want to cancel the join request?')
200 200

  
201
    if can_join_request(project, user):
201
    if can_join_request(project, user, membership):
202 202
        url = reverse('astakos.im.views.project_join', args=(project.id,))
203 203
        action = _('Join')
204 204
        confirm = True
......
225 225

  
226 226

  
227 227
def project_name_append(project, column):
228
    if project.has_pending_modifications():
228
    pending_apps = column.table.pending_apps
229
    app = pending_apps.get(project.id)
230
    if app and app.id != project.application_id:
229 231
        return mark_safe("<br /><i class='tiny'>%s</i>" %
230 232
                         _('modifications pending'))
231 233
    return u''
......
233 235

  
234 236
# Table classes
235 237
class UserProjectsTable(UserTable):
238

  
239
    def __init__(self, *args, **kwargs):
240
        self.pending_apps = kwargs.pop('pending_apps')
241
        self.memberships = kwargs.pop('memberships')
242
        self.accepted = kwargs.pop('accepted')
243
        self.requested = kwargs.pop('requested')
244
        super(UserProjectsTable, self).__init__(*args, **kwargs)
245

  
236 246
    caption = _('My projects')
237 247

  
238 248
    name = LinkColumn('astakos.im.views.project_detail',
......
249 259
    end_date = tables.DateColumn(verbose_name=_('Expiration'),
250 260
                                 format=DEFAULT_DATE_FORMAT,
251 261
                                 accessor='application.end_date')
252
    members_count = tables.Column(verbose_name=_("Members"), default=0,
253
                                  orderable=False)
262
    members_count_f = tables.Column(verbose_name=_("Members"),
263
                                    empty_values=(),
264
                                    orderable=False)
254 265
    membership_status = tables.Column(verbose_name=_("Status"),
255 266
                                      empty_values=(),
256 267
                                      orderable=False)
......
262 273
        if self.user.owns_project(record) or self.user.is_project_admin():
263 274
            return record.state_display()
264 275
        else:
265
            return self.user.membership_display(record)
276
            m = self.memberships.get(record.id)
277
            if m:
278
                return m.user_friendly_state_display()
279
            return _('Not a member')
266 280

  
267
    def render_members_count(self, record, *args, **kwargs):
281
    def render_members_count_f(self, record, *args, **kwargs):
268 282
        append = ""
269 283
        project = record
270 284
        if project is None:
271 285
            append = mark_safe("<i class='tiny'>%s</i>" % (_('pending'),))
272 286

  
273
        c = project.count_pending_memberships()
287
        c = len(self.requested.get(project.id, []))
274 288
        if c > 0:
275 289
            pending_members_url = reverse(
276 290
                'project_pending_members',
......
288 302
            append = mark_safe(pending_members)
289 303
        members_url = reverse('project_approved_members',
290 304
                              kwargs={'chain_id': record.id})
291
        members_count = record.members_count()
305
        members_count = len(self.accepted.get(project.id, []))
292 306
        if self.user.owns_project(record) or self.user.is_project_admin():
293 307
            members_count = '<a href="%s">%d</a>' % (members_url,
294 308
                                                     members_count)
......
296 310

  
297 311
    class Meta:
298 312
        sequence = ('name', 'membership_status', 'issue_date', 'end_date',
299
                    'members_count', 'project_action')
313
                    'members_count_f', 'project_action')
300 314
        attrs = {'id': 'projects-list', 'class': 'my-projects alt-style'}
301 315
        template = "im/table_render.html"
302 316
        empty_text = _('No projects')

Also available in: Unified diff