35 lines
976 B
Python
35 lines
976 B
Python
import pprint
|
|
from datetime import timedelta
|
|
from time import sleep
|
|
|
|
from django.utils import timezone
|
|
from loguru import logger
|
|
|
|
from common.models import BaseJob, JobManager
|
|
from users.models import Preference, User
|
|
|
|
|
|
@JobManager.register
|
|
class MastodonUserSync(BaseJob):
|
|
interval = timedelta(hours=2)
|
|
|
|
def run(self):
|
|
logger.info("Mastodon User Sync start.")
|
|
count = 0
|
|
ttl_hours = 12
|
|
qs = (
|
|
User.objects.exclude(
|
|
preference__mastodon_skip_userinfo=True, mastodon_skip_relationship=True
|
|
)
|
|
.filter(
|
|
mastodon_last_refresh__lt=timezone.now() - timedelta(hours=ttl_hours)
|
|
)
|
|
.filter(
|
|
is_active=True,
|
|
)
|
|
.exclude(mastodon_token__isnull=True)
|
|
.exclude(mastodon_token="")
|
|
)
|
|
for user in qs:
|
|
user.refresh_mastodon_data()
|
|
logger.info(f"Mastodon User Sync finished.")
|