use timezone.now() instead of TIME_ZONE setting
methods for end_time and the hard/soft expiry time