from django.conf import settings from django.db import models from datetime import timedelta from django.utils import timezone from core.hep_client import HepClient DEFAULT_PK = 1 class AdminDataManager(models.Manager): hep_client = HepClient() def update_admin_token(self): admin_token = self.hep_client.fetch_admin_token(settings.HEP_ADMIN_USER, settings.HEP_ADMIN_PASSWORD) admin_data, created = self.get_or_create(pk=DEFAULT_PK) admin_data.hep_admin_token = admin_token admin_data.save() return admin_data.hep_admin_token def get_admin_token(self): try: admin_token = self.get(pk=DEFAULT_PK) if admin_token.updated_at < timezone.now() + timedelta(hours=1): admin_token = self.update_admin_token() except self.model.DoesNotExist: admin_token = self.update_admin_token() return admin_token