from annoying.fields import AutoOneToOneField
from django.core.validators import MinValueValidator
from django.db import models
from django.utils.translation import gettext_lazy as _
from organizations.models import Organization


class SessionTimeoutPolicy(models.Model):
    """Organization-specific session timeout policy configuration"""

    organization = AutoOneToOneField(
        Organization, related_name='session_timeout_policy', primary_key=True, on_delete=models.DO_NOTHING
    )

    max_session_age = models.IntegerField(
        _('Max session age (minutes)'),
        default=(8 * 24 * 60),  # 8 days,
        validators=[MinValueValidator(1)],
        help_text='Number of minutes that a session can be active before needing to re-login',
    )

    max_time_between_activity = models.IntegerField(
        _('Max time (minutes) between activity'),
        validators=[MinValueValidator(1)],
        default=(3 * 24 * 60),  # 3 days
        help_text='Number of minutes that a session stays active without any activity',
    )

    created_at = models.DateTimeField(_('created at'), auto_now_add=True)
    updated_at = models.DateTimeField(_('updated at'), auto_now=True)
