Revision d895de37

b/snf-astakos-app/astakos/im/models.py
1906 1906
    ### Other
1907 1907

  
1908 1908
    def count_pending_memberships(self):
1909
        memb_set = self.projectmembership_set
1910
        memb_count = memb_set.filter(state=ProjectMembership.REQUESTED).count()
1911
        return memb_count
1912

  
1913
    def count_actually_accepted_memberships(self):
1914
        memb_set = self.projectmembership_set
1915
        memb_count = memb_set.filter(state=ProjectMembership.LEAVE_REQUESTED)
1916
        memb_count = memb_set.filter(state=ProjectMembership.ACCEPTED).count()
1917
        return memb_count
1909
        return self.projectmembership_set.requested().count()
1918 1910

  
1919 1911
    def members_count(self):
1920 1912
        return self.approved_memberships.count()
......
1958 1950
class ProjectMembershipManager(ForUpdateManager):
1959 1951

  
1960 1952
    def any_accepted(self):
1961
        q = self.model.Q_ACTUALLY_ACCEPTED
1953
        q = self.model.Q_ACCEPTED_STATES
1962 1954
        return self.filter(q)
1963 1955

  
1964 1956
    def actually_accepted(self):
......
2006 1998
    objects     =   ProjectMembershipManager()
2007 1999

  
2008 2000
    # Compiled queries
2009
    Q_ACCEPTED_STATES = ~Q(state=REQUESTED) & ~Q(state=REMOVED)
2001
    Q_ACCEPTED_STATES = Q(state__in=ACCEPTED_STATES)
2010 2002
    Q_ACTUALLY_ACCEPTED = Q(state=ACCEPTED) | Q(state=LEAVE_REQUESTED)
2011 2003

  
2012 2004
    MEMBERSHIP_STATE_DISPLAY = {
b/snf-astakos-app/astakos/im/tables.py
344 344
                   _('Are you sure you want to accept this member?')]
345 345
        confirms = [True, True]
346 346

  
347
    if membership.state in ProjectMembership.ACTUALLY_ACCEPTED:
347
    if membership.state in ProjectMembership.ACCEPTED_STATES:
348 348
        urls = ['astakos.im.views.project_remove_member']
349 349
        actions = [_('Remove')]
350 350
        prompts = [_('Are you sure you want to remove this member?')]
b/snf-astakos-app/astakos/im/views/projects.py
275 275
            messages.error(request, e)
276 276

  
277 277

  
278
MEMBERSHIP_STATUS_FILTER = {
279
    0: lambda x: x.requested(),
280
    1: lambda x: x.any_accepted(),
281
}
282

  
283

  
278 284
def common_detail(request, chain_or_app_id, project_view=True,
279 285
                  template_name='im/projects/project_detail.html',
280 286
                  members_status_filter=None):
......
302 308
        remaining_memberships_count = 0
303 309
        project, application = get_by_chain_or_404(chain_id)
304 310
        if project:
305
            members = project.projectmembership_set.select_related()
306
            approved_members_count = \
307
                    project.count_actually_accepted_memberships()
311
            members = project.projectmembership_set
312
            approved_members_count = project.members_count()
308 313
            pending_members_count = project.count_pending_memberships()
309
            if members_status_filter in (ProjectMembership.REQUESTED,
310
                ProjectMembership.ACCEPTED):
311
                members = members.filter(state=members_status_filter)
314
            flt = MEMBERSHIP_STATUS_FILTER.get(members_status_filter)
315
            if flt is not None:
316
                members = flt(members)
317
            members = members.select_related()
312 318
            members_table = tables.ProjectMembersTable(project,
313 319
                                                       members,
314 320
                                                       user=request.user,

Also available in: Unified diff