def get_membership_count(self, days): from tendenci.addons.memberships.models import MembershipDefault now = datetime.now().replace(hour=23, minute=59, second=59, microsecond=999999) dt = datetime.now().replace(hour=0, minute=0, second=0, microsecond=0) - timedelta(days=days) active_qs = Q(status_detail__iexact='active') expired_qs = Q(status_detail__iexact='expired') active_memberships = MembershipDefault.QS_ACTIVE() pending_memberships = MembershipDefault.QS_PENDING() memberships = MembershipDefault.objects.filter(active_qs | expired_qs) # Total active memberships count active = active_memberships.count() # Latest active memberships new = active_memberships.filter( application_approved_dt__gte=dt).count() # Latest pending memberships pending = pending_memberships.filter(create_dt__gte=dt).count() # Latest expired memberships expired = memberships.filter(expire_dt__gte=dt, expire_dt__lte=now).count() # Memberships that are expiring soon dt = now + timedelta(days=days) now = now.replace(hour=0, minute=0, second=0, microsecond=0) expiring = memberships.filter(expire_dt__gte=now, expire_dt__lte=dt).count() return [[active, expiring, new, pending, expired]]
def get_top_corp_members(self, items): from tendenci.addons.corporate_memberships.models import CorpMembership from tendenci.addons.memberships.models import MembershipDefault total = MembershipDefault.QS_ACTIVE().exclude( corp_profile_id=0).count() corp_memberships = CorpMembership.objects.filter(status_detail='active').extra(select={ 'members': "SELECT COUNT(*) " + \ "FROM memberships_membershipdefault " + \ "WHERE memberships_membershipdefault.corp_profile_id = " + \ "corporate_memberships_corpmembership.corp_profile_id AND " +\ "memberships_membershipdefault.status_detail = 'active'"}) corp_memberships = corp_memberships.order_by("-members")[:items] corp_mem_list = [['', '', total]] for corp_mem in corp_memberships: corp_mem_list.append([ corp_mem.corp_profile.name, corp_mem.get_absolute_url(), corp_mem.members ]) return corp_mem_list