__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"


import datetime

from django.db import models
from django.db.models import Q
from django.utils import timezone


class CompetingInterestQuerySet(models.QuerySet):
    def valid_on_date(self, date: datetime.date = None):
        """
        Filter for validity on given optional date.
        """
        if not date:
            date = timezone.now().date()
        return self.filter(
            Q(date_from__lte=date, date_until__isnull=True)
            | Q(date_from__isnull=True, date_until__gte=date)
            | Q(date_from__lte=date, date_until__gte=date)
            | Q(date_from__isnull=True, date_until__isnull=True)
        ).order_by()

    def involving_profile(self, profile):
        """
        Filter for CompetingInterests involving given Profile.
        """
        return self.filter(Q(profile=profile) | Q(related_profile=profile))

    def between_profile_sets(self, profile_set_1, profile_set_2):
        """
        Filter for CompetingInterests between two sets of Profiles.
        """
        return self.filter(
            Q(profile__in=profile_set_1, related_profile__in=profile_set_2)
            | Q(profile__in=profile_set_2, related_profile__in=profile_set_1)
        )