old_contents: # -*- coding: utf-8 -*-
  
  import arrow
  
  from django.contrib.auth import get_user_model
  from django.core.management.base import BaseCommand
  from django.db.models import Count
  
  from termcolor import colored
  
  from data_import.models import DataFile
  from open_humans.models import Member
  from private_sharing.models import DataRequestProject, DataRequestProjectMember
  UserModel = get_user_model()
  
  
  class Command(BaseCommand):
      help = 'Statistics on the site'
      args = ''
  
      def add_arguments(self, parser):
          parser.add_argument('--date', type=str,
                              help='stats as of this date')
  
      def handle(self, *args, **options):
          cutoff = arrow.get(options['date']).datetime
  
          members = Member.objects.filter(user__date_joined__lte=cutoff)
          members_with_data = members.annotate(
              datafiles_count=Count('user__datafiles')).filter(
              datafiles_count__gte=1)
          files = DataFile.objects.exclude(archived__lte=cutoff).filter(
              created__lte=cutoff)
          projects_made = DataRequestProject.objects.filter(created__lte=cutoff)
          projects_approved = projects_made.filter(approved=True)
  
          data_connections = set([(
              df['source'], df['user__username']) for
              df in DataFile.objects.exclude(
              archived__lte=cutoff).filter(
              created__lte=cutoff).values('user__username', 'source')])
  
          proj_connections = DataRequestProjectMember.objects.exclude(
              project__approved=False).exclude(joined=False).exclude(
              authorized=False).filter(created__lte=cutoff)
  
          print("Members: {}".format(members.count()))
          print("Members with any data connections: {}".format(
              members_with_data.count()))
          print("Data connections: {}".format(len(data_connections)))
          print("Project connections: {}".format(proj_connections.count()))
          print("Projects drafted: {}".format(projects_made.count()))
          print("Projects approved: {}".format(projects_approved.count()))
  
new_contents: # -*- coding: utf-8 -*-
  
  import arrow
  
  from django.contrib.auth import get_user_model
  from django.core.management.base import BaseCommand
  from django.db.models import Count
  
  from termcolor import colored
  
  from data_import.models import DataFile
  from open_humans.models import Member
  from private_sharing.models import DataRequestProject, DataRequestProjectMember
  UserModel = get_user_model()
  
  
  class Command(BaseCommand):
      help = 'Statistics on the site'
      args = ''
  
      def add_arguments(self, parser):
          parser.add_argument('--date', type=str,
                              help='stats as of this date')
  
      def handle(self, *args, **options):
          cutoff = arrow.get(options['date']).datetime
  
          members = Member.objects.filter(
              user__date_joined__lte=cutoff).filter(
              user__is_active=True)
          members_with_data = members.annotate(
              datafiles_count=Count('user__datafiles')).filter(
              datafiles_count__gte=1)
          files = DataFile.objects.exclude(archived__lte=cutoff).filter(
              created__lte=cutoff)
          projects_made = DataRequestProject.objects.filter(created__lte=cutoff)
          projects_approved = projects_made.filter(approved=True)
  
          data_connections = set([(
              df['source'], df['user__username']) for
              df in DataFile.objects.exclude(
              archived__lte=cutoff).filter(
              user__is_active=True).filter(
              created__lte=cutoff).values('user__username', 'source')])
  
          proj_connections = DataRequestProjectMember.objects.exclude(
              project__approved=False).exclude(joined=False).filter(
              member__user__is_active=True).exclude(authorized=False).filter(
              created__lte=cutoff)
  
          print("Members: {}".format(members.count()))
          print("Members with any data connections: {}".format(
              members_with_data.count()))
          print("Data connections: {}".format(len(data_connections)))
          print("Project connections: {}".format(proj_connections.count()))
          print("Projects drafted: {}".format(projects_made.count()))
          print("Projects approved: {}".format(projects_approved.count()))
  
subject: Fix stats script to not count suspended users