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


from django.db import models

from .managers import ConflictOfInterestQuerySet


class ConflictOfInterest(models.Model):
    """
    A flagged relation between two scientists that could be conflicting in a refereeing
    phase.
    """
    STATUS_UNVERIFIED, STATUS_VERIFIED = 'unverified', 'verified'
    STATUS_DEPRECATED = 'deprecated'
    CONFLICT_OF_INTEREST_STATUSES = (
        (STATUS_UNVERIFIED, 'Unverified'),
        (STATUS_VERIFIED, 'Verified by Admin'),
        (STATUS_DEPRECATED, 'Deprecated'),
    )

    TYPE_OTHER, TYPE_COAUTHOR, TYPE_COWORKER = 'other', 'coauthor', 'coworker'
    COI_TYPES = (
        (TYPE_COWORKER, 'Co-worker'),
        (TYPE_COAUTHOR, 'Co-authorship'),
        (TYPE_OTHER, 'Other'),
    )

    status = models.CharField(
         max_length=16, choices=CONFLICT_OF_INTEREST_STATUSES, default=STATUS_UNVERIFIED)
    type = models.CharField(max_length=16, choices=COI_TYPES, default=TYPE_OTHER)
    profile = models.ForeignKey('profiles.Profile',
                                on_delete=models.CASCADE, related_name='conflicts')
    related_profile = models.ForeignKey('profiles.Profile',
                                        on_delete=models.CASCADE, related_name='+')

    # To
    related_submissions = models.ManyToManyField(
        'submissions.Submission', blank=True, related_name='conflict_of_interests')

    header = models.CharField(max_length=265)
    url = models.URLField(blank=True)
    comment = models.TextField(blank=True)

    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)

    objects = ConflictOfInterestQuerySet.as_manager()

    def __str__(self):
        return '{} - {} ({})'.format(self.profile, self.related_profile, self.get_type_display())