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

byceps.services.user.stats_service   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 32
dl 0
loc 66
ccs 15
cts 15
cp 1
rs 10
c 0
b 0
f 0
wmc 6

6 Functions

Rating   Name   Duplication   Size   Complexity  
A count_uninitialized_users() 0 10 1
A count_active_users() 0 10 1
A count_deleted_users() 0 5 1
A count_users() 0 4 1
A count_suspended_users() 0 6 1
A count_users_created_since() 0 7 1
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