from django.conf import settings from .models import User from datetime import timedelta from django.utils import timezone from tqdm import tqdm from loguru import logger def refresh_mastodon_data_task(user_id, token=None): user = User.objects.get(pk=user_id) if not user.mastodon_username: logger.info(f"{user} mastodon data refresh skipped") return if token: user.mastodon_token = token if user.refresh_mastodon_data(): user.save() logger.info(f"{user} mastodon data refreshed") else: logger.error(f"{user} mastodon data refresh failed") def refresh_all_mastodon_data_task(ttl_hours): count = 0 for user in tqdm( User.objects.filter( mastodon_last_refresh__lt=timezone.now() - timedelta(hours=ttl_hours), is_active=True, ) ): if user.mastodon_token or user.mastodon_refresh_token: tqdm.write(f"Refreshing {user}") if user.refresh_mastodon_data(): tqdm.write(f"Refreshed {user}") count += 1 else: tqdm.write(f"Refresh failed for {user}") user.save() else: tqdm.write(f"Missing token for {user}") logger.info(f"{count} users updated") c = User.merge_rejected_by() logger.info(f"{c} users's rejecting list updated")