def update_monthly_history(self):
        orgs = Organization.objects.all()

        # we need to create a range to break hits down
        # start with oldest hit
        current_date = datetime.datetime.today()

        for org in orgs:
            month_total_visits = 0
            month_ip_visits = 0
            month_member_visits = 0

            orgsub_hits = Hit.objects \
                .filter(orgsub = org) \
                .filter(created__year = current_date.year) \
                .filter(created__month = current_date.month)

            if orgsub_hits:
                month_total_visits = len(orgsub_hits)
                month_ip_visits = len(
                    [hit for hit in orgsub_hits if hit.orgsub_ip == True])
                month_member_visits = len(
                    [hit for hit in orgsub_hits if hit.orgsub_member == True])

            try:
                monthly_stats = MonthlyStatistics.objects.get(
                    org_sub=org,
                    year_month=datetime.date(current_date.year,
                                             current_date.month, 1),
                )
                monthly_stats.total_visits = month_total_visits
                monthly_stats.ip_visits = month_ip_visits
                monthly_stats.member_visits = month_member_visits
                monthly_stats.save()

            except MonthlyStatistics.DoesNotExist:
                monthly_stats = MonthlyStatistics(
                    org_sub=org,
                    year_month=datetime.date(current_date.year,
                                             current_date.month, 1),
                    total_visits=month_total_visits,
                    ip_visits=month_ip_visits,
                    member_visits=month_member_visits,
                )
                monthly_stats.save()