Пример #1
0
    def test_group_members_stats_foo(self):
        def update_member_activity(user, **kwargs):
            GroupMembership.objects.filter(user=user).update(
                lastseen_at=timezone.now() - relativedelta(**kwargs))

        members = [UserFactory() for _ in range(10)]
        group = GroupFactory(members=members)

        update_member_activity(members[0], days=2)
        update_member_activity(members[1], days=8)
        update_member_activity(members[2], days=31)
        update_member_activity(members[3], days=61)
        update_member_activity(members[4], days=91)

        points = stats.get_group_members_stats(group)

        self.assertEqual(points, [{
            'measurement': 'karrot.group.members',
            'tags': {
                'group': str(group.id),
            },
            'fields': {
                'count_active_1d': 5,
                'count_active_7d': 6,
                'count_active_30d': 7,
                'count_active_60d': 8,
                'count_active_90d': 9,
                'count_total': 10,
            },
        }])
Пример #2
0
def record_group_stats():
    stats.periodic_task('group__record_group_stats')

    points = []

    for group in Group.objects.all():
        points.extend(stats.get_group_members_stats(group))
        points.extend(stats.get_group_stores_stats(group))

    write_points(points)
Пример #3
0
    def test_group_members_stats(self):
        def update_member_activity(user, **kwargs):
            GroupMembership.objects.filter(user=user).update(
                lastseen_at=timezone.now() - relativedelta(**kwargs))

        def set_as_newcomer(user):
            membership = GroupMembership.objects.filter(user=user).first()
            membership.remove_roles([roles.GROUP_EDITOR])
            membership.save()

        members = [UserFactory() for _ in range(10)]
        group = GroupFactory(members=members)

        set_as_newcomer(members[0])
        update_member_activity(members[0], days=2)
        update_member_activity(members[1], days=8)
        update_member_activity(members[2], days=31)
        update_member_activity(members[3], days=61)
        update_member_activity(members[4], days=91)

        points = stats.get_group_members_stats(group)

        self.assertEqual(points, [{
            'measurement': 'karrot.group.members',
            'tags': {
                'group': str(group.id),
                'group_status': 'active',
            },
            'fields': {
                'count_active_1d': 5,
                'count_active_7d': 6,
                'count_active_30d': 7,
                'count_active_60d': 8,
                'count_active_90d': 9,
                'count_active_editors_1d': 5,
                'count_active_editors_7d': 5,
                'count_active_editors_30d': 6,
                'count_active_editors_60d': 7,
                'count_active_editors_90d': 8,
                'count_active_newcomers_1d': 0,
                'count_active_newcomers_7d': 1,
                'count_active_newcomers_30d': 1,
                'count_active_newcomers_60d': 1,
                'count_active_newcomers_90d': 1,
                'count_total': 10,
                'count_editors_total': 9,
                'count_newcomers_total': 1,
            },
        }])