Completed
Push — main ( dc9c2e...80557c )
by Jochen
05:20
created

count_active_users()   A

Complexity

Conditions 1

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

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