Exemplo n.º 1
0
def analytics_detail(request, stat_name, template_name='analytics/analytics_detail.html'):
    analytics = OverallAnalytics()
    start = _parse_date(request.GET.get('start', ''), date.today() - timedelta(days=7))
    end = _parse_date(request.GET.get('end', ''), date.today())
    objects = analytics.get_stats(stat_name, start_date=start, end_date=end)
    # objects = getattr(analytics, stat_name)(start_date=start, end_date=end)
    stat = analytics.sum_keys.get(stat_name)
    maxw = objects[0][1] if objects else 0
    context = {'objects': objects, 'stat': stat, 'maxw': maxw}
    return render_to_response(template_name, RequestContext(request, context))
Exemplo n.º 2
0
def overall_stats():

    from datetime import timedelta

    analytics = OverallAnalytics()

    tags = analytics.tag_report()
    curations = analytics.curation_report()
    months_12 = analytics.curations_in_last(timedelta(weeks=52), granularity=timedelta(weeks=4))
    by_postcode = analytics.curations_by_postcode()
Exemplo n.º 3
0
    def setUp(self):

        from analytics.models import AccountAnalytics, OverallAnalytics
        from accounts.tests import setUpAccounts
        setUpAccounts(self)

        account = self.bob
        account2 = self.alice
        self.analytics = AccountAnalytics(account, redis_db=15)
        self.analytics2 = AccountAnalytics(account2, redis_db=15)
        self.overall_analytics = OverallAnalytics(redis_db=15)
        self.redis = self.analytics.conn
        self.redis.flushdb()
Exemplo n.º 4
0
def analytics_detail(request,
                     stat_name,
                     template_name='analytics/analytics_detail.html'):
    analytics = OverallAnalytics()
    start = _parse_date(request.GET.get('start', ''),
                        date.today() - timedelta(days=7))
    end = _parse_date(request.GET.get('end', ''), date.today())
    objects = analytics.get_stats(stat_name, start_date=start, end_date=end)
    # objects = getattr(analytics, stat_name)(start_date=start, end_date=end)
    stat = analytics.sum_keys.get(stat_name)
    maxw = objects[0][1] if objects else 0
    context = {'objects': objects, 'stat': stat, 'maxw': maxw}
    return render_to_response(template_name, RequestContext(request, context))
Exemplo n.º 5
0
    def setUp(self):

        from analytics.models import AccountAnalytics, OverallAnalytics
        from accounts.models import Account

        from accounts.tests import setUpAccounts
        from locations.tests import setUpLocations
        from resources.tests import setUpResources
        from enginecab.views import reindex_resources

        setUpAccounts(self)
        setUpLocations(self)
        setUpResources(self)
        reindex_resources(url=settings.TEST_SOLR_URL)

        self.account = Account.objects[2]

        self.account_analytics = AccountAnalytics(
            self.account, redis_db=settings.TEST_REDIS_ANALYTICS_DATABASE)
        self.overall_analytics = OverallAnalytics(
            redis_db=settings.TEST_REDIS_ANALYTICS_DATABASE)
        self.redis = self.account_analytics.conn
        self.redis.flushdb()

        from django.test.client import Client

        self.client = Client()
Exemplo n.º 6
0
def stat_json(request, stat_name):

    start = _parse_date(request.GET.get('start', ''),
                        date.today() - timedelta(days=7))
    end = _parse_date(request.GET.get('end', ''), date.today())
    account = request.GET.get('account', '')

    data = {}

    if account:
        analytics = AccountAnalytics(account)
    else:
        analytics = OverallAnalytics()

    # if not hasattr(analytics, stat_name):
    #     raise Http404("Stat not found.")

    data = {
        'result': analytics.get_stats(stat_name,
                                      start_date=start,
                                      end_date=end)
        # 'result': getattr(analytics, stat_name)(start_date=start, end_date=end)
    }

    return HttpResponse(json.dumps(data), mimetype='application/json')
Exemplo n.º 7
0
    def setUp(self):

        from analytics.models import AccountAnalytics, OverallAnalytics
        from accounts.tests import setUpAccounts
        setUpAccounts(self)

        account = self.bob
        account2 = self.alice
        self.analytics = AccountAnalytics(account, redis_db=15)
        self.analytics2 = AccountAnalytics(account2, redis_db=15)
        self.overall_analytics = OverallAnalytics(redis_db=15)
        self.redis = self.analytics.conn
        self.redis.flushdb()
Exemplo n.º 8
0
def overall_stats():

    from datetime import timedelta

    analytics = OverallAnalytics()

    tags = analytics.tag_report()
    curations = analytics.curation_report()
    months_12 = analytics.curations_in_last(timedelta(weeks=52),
                                            granularity=timedelta(weeks=4))
    by_postcode = analytics.curations_by_postcode()
Exemplo n.º 9
0
class AccountStatsTestCase(MongoTestCase):

    def setUp(self):

        from analytics.models import AccountAnalytics, OverallAnalytics
        from accounts.tests import setUpAccounts
        setUpAccounts(self)

        account = self.bob
        account2 = self.alice
        self.analytics = AccountAnalytics(account, redis_db=15)
        self.analytics2 = AccountAnalytics(account2, redis_db=15)
        self.overall_analytics = OverallAnalytics(redis_db=15)
        self.redis = self.analytics.conn
        self.redis.flushdb()

    def test_tag(self):
        # what tags are being searched for

        from datetime import datetime

        # Add 30
        for i in range(1, 31):
            dt = datetime(2011, 11, i)
            self.analytics.increment_tags("Sport and fitness",
                date_instance=dt, count=i)

        # Add 25
        for i in range(1, 26):
            dt = datetime(2011, 11, i)
            self.analytics.increment_tags("Mental Health",
                date_instance=dt, count=i)

        # Add 15
        for i in range(11, 26):
            dt = datetime(2011, 11, i)
            self.analytics.increment_tags("Hobbies, arts and crafts",
                date_instance=dt, count=i)

        start_date = datetime(2011, 11, 1)
        end_date = datetime(2011, 11, 30)

        result = self.analytics.top_tags(start_date, end_date)

        # Create a report for the full month, should contain everything we
        # added
        expected_result = [
            ('Sport and fitness', 30),
            ('Mental Health', 25),
            ('Hobbies, arts and crafts', 15),
        ]

        self.assertEqual(result, expected_result)

        # Create another report, but only for one day - should only contain
        # the expected result below.
        start_date = datetime(2011, 11, 1)
        end_date = datetime(2011, 11, 1)

        result = self.analytics.top_tags(start_date, end_date)

        expected_result = [
            ('Mental Health', 1),
            ('Sport and fitness', 1),
        ]

        self.assertEqual(result, expected_result)

    def test_overall_analytics(self):
        """
        Incremement the tag stat counter for two different accounts. Check the
        values are right in the summary for those accounts and then check that
        the overall stats are correctly the sum of the accounts.
        """

        from string import uppercase
        from datetime import datetime

        dt = datetime(2011, 11, 20)

        # Increment A-K for both
        for i in range(0, 11):
            self.analytics.increment_tags(uppercase[i], date_instance=dt, count=i)
            self.analytics2.increment_tags(uppercase[i], date_instance=dt, count=i)

        # Increment A-F again for account 1
        for i in range(0, 6):
            self.analytics.increment_tags(uppercase[i], date_instance=dt, count=i)

        # Increment G-K again for account 2
        for i in range(6, 11):
            self.analytics2.increment_tags(uppercase[i], date_instance=dt, count=i)

        account1_result = self.analytics.top_tags(dt, dt)
        account2_result = self.analytics2.top_tags(dt, dt)
        overall_result = self.overall_analytics.top_tags(dt, dt)

        account1_expected = [('A', 2), ('B', 2), ('C', 2), ('D', 2), ('E', 2),
            ('F', 2), ('G', 1), ('H', 1), ('I', 1), ('J', 1), ('K', 1), ]
        account2_expected = [('G', 2), ('H', 2), ('I', 2), ('J', 2), ('K', 2),
            ('A', 1), ('B', 1), ('C', 1), ('D', 1), ('E', 1), ('F', 1), ]
        overall_expected = [('A', 3), ('B', 3), ('C', 3), ('D', 3), ('E', 3),
            ('F', 3), ('G', 3), ('H', 3), ('I', 3), ('J', 3), ('K', 3), ]

        self.assertEqual(account1_result, account1_expected)
        self.assertEqual(account2_result, account2_expected)
        self.assertEqual(overall_expected, overall_result)
Exemplo n.º 10
0
class AccountStatsTestCase(MongoTestCase):
    def setUp(self):

        from analytics.models import AccountAnalytics, OverallAnalytics
        from accounts.tests import setUpAccounts
        setUpAccounts(self)

        account = self.bob
        account2 = self.alice
        self.analytics = AccountAnalytics(account, redis_db=15)
        self.analytics2 = AccountAnalytics(account2, redis_db=15)
        self.overall_analytics = OverallAnalytics(redis_db=15)
        self.redis = self.analytics.conn
        self.redis.flushdb()

    def test_tag(self):
        # what tags are being searched for

        from datetime import datetime

        # Add 30
        for i in range(1, 31):
            dt = datetime(2011, 11, i)
            self.analytics.increment_tags("Sport and fitness",
                                          date_instance=dt,
                                          count=i)

        # Add 25
        for i in range(1, 26):
            dt = datetime(2011, 11, i)
            self.analytics.increment_tags("Mental Health",
                                          date_instance=dt,
                                          count=i)

        # Add 15
        for i in range(11, 26):
            dt = datetime(2011, 11, i)
            self.analytics.increment_tags("Hobbies, arts and crafts",
                                          date_instance=dt,
                                          count=i)

        start_date = datetime(2011, 11, 1)
        end_date = datetime(2011, 11, 30)

        result = self.analytics.top_tags(start_date, end_date)

        # Create a report for the full month, should contain everything we
        # added
        expected_result = [
            ('Sport and fitness', 30),
            ('Mental Health', 25),
            ('Hobbies, arts and crafts', 15),
        ]

        self.assertEqual(result, expected_result)

        # Create another report, but only for one day - should only contain
        # the expected result below.
        start_date = datetime(2011, 11, 1)
        end_date = datetime(2011, 11, 1)

        result = self.analytics.top_tags(start_date, end_date)

        expected_result = [
            ('Mental Health', 1),
            ('Sport and fitness', 1),
        ]

        self.assertEqual(result, expected_result)

    def test_overall_analytics(self):
        """
        Incremement the tag stat counter for two different accounts. Check the
        values are right in the summary for those accounts and then check that
        the overall stats are correctly the sum of the accounts.
        """

        from string import uppercase
        from datetime import datetime

        dt = datetime(2011, 11, 20)

        # Increment A-K for both
        for i in range(0, 11):
            self.analytics.increment_tags(uppercase[i],
                                          date_instance=dt,
                                          count=i)
            self.analytics2.increment_tags(uppercase[i],
                                           date_instance=dt,
                                           count=i)

        # Increment A-F again for account 1
        for i in range(0, 6):
            self.analytics.increment_tags(uppercase[i],
                                          date_instance=dt,
                                          count=i)

        # Increment G-K again for account 2
        for i in range(6, 11):
            self.analytics2.increment_tags(uppercase[i],
                                           date_instance=dt,
                                           count=i)

        account1_result = self.analytics.top_tags(dt, dt)
        account2_result = self.analytics2.top_tags(dt, dt)
        overall_result = self.overall_analytics.top_tags(dt, dt)

        account1_expected = [
            ('A', 2),
            ('B', 2),
            ('C', 2),
            ('D', 2),
            ('E', 2),
            ('F', 2),
            ('G', 1),
            ('H', 1),
            ('I', 1),
            ('J', 1),
            ('K', 1),
        ]
        account2_expected = [
            ('G', 2),
            ('H', 2),
            ('I', 2),
            ('J', 2),
            ('K', 2),
            ('A', 1),
            ('B', 1),
            ('C', 1),
            ('D', 1),
            ('E', 1),
            ('F', 1),
        ]
        overall_expected = [
            ('A', 3),
            ('B', 3),
            ('C', 3),
            ('D', 3),
            ('E', 3),
            ('F', 3),
            ('G', 3),
            ('H', 3),
            ('I', 3),
            ('J', 3),
            ('K', 3),
        ]

        self.assertEqual(account1_result, account1_expected)
        self.assertEqual(account2_result, account2_expected)
        self.assertEqual(overall_expected, overall_result)
Exemplo n.º 11
0
def analytics_index(request, template_name='analytics/analytics_base.html'):
    analytics = OverallAnalytics()
    objects = sorted(analytics.sum_keys.items())
    context = {'objects': objects}
    return render_to_response(template_name, RequestContext(request, context))