| 1 |
f7af2b3 |
Dawsh |
2y ago |
import logging |
| 2 |
a47eb4c |
Dawsh |
2y ago |
from datetime import datetime |
| 3 |
a47eb4c |
Dawsh |
2y ago |
|
| 4 |
f7af2b3 |
Dawsh |
2y ago |
from app import marznode |
| 5 |
a47eb4c |
Dawsh |
2y ago |
from app.db import crud, GetDB, get_users |
| 6 |
d377c4c |
Dawsh |
2y ago |
from app.models.user import UserDataUsageResetStrategy |
| 7 |
a47eb4c |
Dawsh |
2y ago |
|
| 8 |
f7af2b3 |
Dawsh |
2y ago |
logger = logging.getLogger(__name__) |
| 9 |
f7af2b3 |
Dawsh |
2y ago |
|
| 10 |
a47eb4c |
Dawsh |
2y ago |
reset_strategy_to_days = { |
| 11 |
d377c4c |
Dawsh |
2y ago |
UserDataUsageResetStrategy.day.value: 1, |
| 12 |
d377c4c |
Dawsh |
2y ago |
UserDataUsageResetStrategy.week.value: 7, |
| 13 |
d377c4c |
Dawsh |
2y ago |
UserDataUsageResetStrategy.month.value: 30, |
| 14 |
d377c4c |
Dawsh |
2y ago |
UserDataUsageResetStrategy.year.value: 365, |
| 15 |
a47eb4c |
Dawsh |
2y ago |
} |
| 16 |
a47eb4c |
Dawsh |
2y ago |
|
| 17 |
a47eb4c |
Dawsh |
2y ago |
|
| 18 |
9a6b0fa |
Dawsh |
2y ago |
async def reset_user_data_usage(): |
| 19 |
a47eb4c |
Dawsh |
2y ago |
now = datetime.utcnow() |
| 20 |
a47eb4c |
Dawsh |
2y ago |
with GetDB() as db: |
| 21 |
01cdf2e |
Dawsh |
2y ago |
for user in get_users( |
| 22 |
01cdf2e |
Dawsh |
2y ago |
db, |
| 23 |
01cdf2e |
Dawsh |
2y ago |
reset_strategy=[ |
| 24 |
d377c4c |
Dawsh |
2y ago |
UserDataUsageResetStrategy.day.value, |
| 25 |
d377c4c |
Dawsh |
2y ago |
UserDataUsageResetStrategy.week.value, |
| 26 |
d377c4c |
Dawsh |
2y ago |
UserDataUsageResetStrategy.month.value, |
| 27 |
d377c4c |
Dawsh |
2y ago |
UserDataUsageResetStrategy.year.value, |
| 28 |
01cdf2e |
Dawsh |
2y ago |
], |
| 29 |
01cdf2e |
Dawsh |
2y ago |
): |
| 30 |
6afb362 |
Dawsh |
2y ago |
last_reset_time = user.traffic_reset_at or user.created_at |
| 31 |
f1ab16c |
Dawsh |
2y ago |
num_days_to_reset = reset_strategy_to_days[ |
| 32 |
f1ab16c |
Dawsh |
2y ago |
user.data_limit_reset_strategy |
| 33 |
f1ab16c |
Dawsh |
2y ago |
] |
| 34 |
a47eb4c |
Dawsh |
2y ago |
|
| 35 |
a47eb4c |
Dawsh |
2y ago |
if not (now - last_reset_time).days >= num_days_to_reset: |
| 36 |
a47eb4c |
Dawsh |
2y ago |
continue |
| 37 |
a47eb4c |
Dawsh |
2y ago |
|
| 38 |
d377c4c |
Dawsh |
2y ago |
was_active = user.is_active |
| 39 |
a47eb4c |
Dawsh |
2y ago |
crud.reset_user_data_usage(db, user) |
| 40 |
a47eb4c |
Dawsh |
2y ago |
# make user active if limited on usage reset |
| 41 |
d377c4c |
Dawsh |
2y ago |
if user.is_active and not was_active: |
| 42 |
d377c4c |
Dawsh |
2y ago |
marznode.operations.update_user(user) |
| 43 |
d377c4c |
Dawsh |
2y ago |
user.activated = True |
| 44 |
d377c4c |
Dawsh |
2y ago |
db.commit() |
| 45 |
d377c4c |
Dawsh |
2y ago |
|
| 46 |
d377c4c |
Dawsh |
2y ago |
logger.info("User data usage reset for User `%s`", user.username) |