from django.db import models
from datetime import datetime
from tkinter import CASCADE
import django
from django.contrib.auth.models import AbstractUser
from django.db import models
from django.utils.translation import gettext as _
from .managers import CustomUserManager
from django.core.validators import MaxValueValidator
import os
from datetime import datetime


class Accounts(AbstractUser):
    is_staff = None
    first_name = None
    last_name = None
    branch_id = models.AutoField(primary_key=True)
    branch_name = models.CharField(max_length=255, null=False, unique=True)
    username = models.CharField(max_length=255, null=False, unique=True, default=None)
    email = models.EmailField(max_length=255, null=False, default=None, unique=True)
    is_admin = models.BooleanField('Is admin', default=False)
    location = models.CharField(max_length=150, null=False, default=None)
   


    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = []

    objects = CustomUserManager()

    def __str__(self):
        return self.username

class RightsSupport(models.Model):
            
    class Meta:
        managed = False 
        default_permissions = () 
        permissions = ( 
            ('read_rights', 'Read permissions'),  
            ('write_rights', 'Write permissions'), 
            ('edit_rights', 'Edit permissions'), 
        )


def content_file_name(instance, file_name):
    """generate folder for campaign"""
    return os.path.join('multimedia', instance.media_name, file_name)


class Media(models.Model):
    media_name = models.CharField(max_length=255, null=True, blank=True)
    file_name = models.CharField(max_length=255, null=True, blank=True)
    extension = models.CharField(max_length=255, null=True, blank=True)
    media_type = models.CharField(max_length=255, null=True, blank=True)
    runtime = models.IntegerField(blank=True, null=True)
    created_at = models.DateField(_("Date"), auto_now_add=True)
    file = models.FileField(upload_to=content_file_name, null=True, blank=True)
    compressed_file = models.TextField(null=True, blank=True)

    def __str__(self):
        return '{} {} {} {}'.format(self.file, self.media_name, self.file_name, self.media_type, self.extension)

    def delete(self, *args, **kwargs):
        self.file.delete()
        super().delete(*args, **kwargs)

        

class Campaign(models.Model):
    campaign_name = models.CharField(max_length=255, default=False)
    branch = models.CharField(max_length=255, default=False)
    start_date = models.DateTimeField(null=True, blank=True)
    end_date = models.DateTimeField(null=True, blank=True)
    rotation_type = models.CharField(max_length=15, default=False)
    start_time = models.CharField(max_length=15, null=True, blank=True)
    end_time = models.CharField(max_length=15, null=True, blank=True)
    runs = models.IntegerField(null=True, blank=True)
    days_week = models.TextField(null=True, blank=True)
    kill_switch = models.BooleanField('kill switch', default=False)
    status = models.BooleanField('Is active', default=False)
    created_at = models.DateField(_("Date"), auto_now_add=True)
    