Passed
Push — master ( eddc80...b0ee14 )
by Jochen
02:23
created

byceps.services.user.stats_service.count_active_users()   A

Complexity

Conditions 1

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 6
nop 0
dl 0
loc 10
rs 10
c 0
b 0
f 0
1
"""
2
byceps.services.user.stats_service
3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
5
:Copyright: 2006-2019 Jochen Kupperschmidt
6
:License: Modified BSD, see LICENSE for details.
7
"""
8
9
from datetime import datetime, timedelta
10
11
from .models.user import User as DbUser
12
13
14
def count_users() -> int:
15
    """Return the number of users."""
16
    return DbUser.query \
17
        .count()
18
19
20
def count_users_created_since(delta: timedelta) -> int:
21
    """Return the number of user accounts created since `delta` ago."""
22
    filter_starts_at = datetime.utcnow() - delta
23
24
    return DbUser.query \
25
        .filter(DbUser.created_at >= filter_starts_at) \
26
        .count()
27
28
29
def count_active_users() -> int:
30
    """Return the number of active user accounts.
31
32
    Uninitialized, suspended or deleted accounts are excluded.
33
    """
34
    return DbUser.query \
35
        .filter_by(initialized=True) \
36
        .filter_by(suspended=False) \
37
        .filter_by(deleted=False) \
38
        .count()
39
40
41
def count_uninitialized_users() -> int:
42
    """Return the number of uninitialized user accounts.
43
44
    Suspended or deleted accounts are excluded.
45
    """
46
    return DbUser.query \
47
        .filter_by(initialized=False) \
48
        .filter_by(suspended=False) \
49
        .filter_by(deleted=False) \
50
        .count()
51
52
53
def count_enabled_users() -> int:
54
    """Return the number of enabled user accounts.
55
56
    Suspended or deleted accounts are excluded.
57
    """
58
    return DbUser.query \
59
        .filter_by(enabled=True) \
60
        .filter_by(suspended=False) \
61
        .filter_by(deleted=False) \
62
        .count()
63
64
65
def count_disabled_users() -> int:
66
    """Return the number of disabled user accounts.
67
68
    Suspended or deleted accounts are excluded.
69
    """
70
    return DbUser.query \
71
        .filter_by(enabled=False) \
72
        .filter_by(suspended=False) \
73
        .filter_by(deleted=False) \
74
        .count()
75
76
77
def count_suspended_users() -> int:
78
    """Return the number of suspended user accounts."""
79
    return DbUser.query \
80
        .filter_by(suspended=True) \
81
        .filter_by(deleted=False) \
82
        .count()
83
84
85
def count_deleted_users() -> int:
86
    """Return the number of deleted user accounts."""
87
    return DbUser.query \
88
        .filter_by(deleted=True) \
89
        .count()
90